some more work, including the PSI-BIN write routines which are officially not released yet.

This commit is contained in:
nemu
2011-02-07 06:02:56 +00:00
parent 20665da9eb
commit 90ed9df1b6
11 changed files with 3639 additions and 2130 deletions

File diff suppressed because it is too large Load Diff

View File

@ -40,11 +40,13 @@ using namespace std ;
/* ------------------------------------------------------------------ */
const int MAXHISTO = 32; // maximum number of histos to process/store
const int MAXSCALER = 32; // maximum number of scalers to proces/store
const int MAXSCALER = 32; // maximum number of scalers to process/store
const int MAXTEMPER = 4; // maximum number of average temperatures
const int MAXLABELSIZE = 12; // maximum size of labels
const int MAXREC = 4096; // maximum allowed data record size
/* ------------------------------------------------------------------ */
class MuSR_td_PSI_bin {
@ -58,48 +60,53 @@ class MuSR_td_PSI_bin {
string filename;
string readstatus;
string writestatus;
string consistencyStatus;
bool readingok;
bool writingok;
bool consistencyOk;
char format_id[3] ;
char format_id[3];
int num_run ;
int num_run;
char sample[11] ;
char temp[11] ;
char field[11] ;
char orient[11] ;
char comment[63] ;
char sample[11];
char temp[11];
char field[11];
char orient[11];
char setup[11];
char comment[63];
char date_start[10] ;
char date_stop[10] ;
char time_start[9] ;
char time_stop[9] ;
char date_start[10];
char date_stop[10];
char time_start[9];
char time_stop[9];
float bin_width ;
float bin_width;
int number_histo ;
int length_histo ;
char labels_histo[MAXHISTO][MAXLABELSIZE] ;
int number_histo;
int length_histo;
char labels_histo[MAXHISTO][MAXLABELSIZE];
int total_events ;
int events_per_histo[MAXHISTO] ;
int total_events;
int events_per_histo[MAXHISTO];
int default_binning ;
int default_binning;
float real_t0[MAXHISTO] ;
int integer_t0[MAXHISTO] ;
int first_good[MAXHISTO] ;
int last_good[MAXHISTO] ;
float real_t0[MAXHISTO];
int integer_t0[MAXHISTO];
int first_good[MAXHISTO];
int last_good[MAXHISTO];
int number_scaler ;
int scalers[MAXSCALER] ;
char labels_scalers[MAXSCALER][MAXLABELSIZE] ;
int number_scaler;
int scalers[MAXSCALER];
char labels_scalers[MAXSCALER][MAXLABELSIZE];
int number_temper ;
float temper[MAXTEMPER] ;
float temp_deviation[MAXTEMPER] ;
int number_temper;
float temper[MAXTEMPER];
float temp_deviation[MAXTEMPER];
int **histo ;
int **histo;
public:
@ -118,12 +125,19 @@ class MuSR_td_PSI_bin {
public:
int read(const char* fileName); // generic read
int write(const char *fileName); // generic write
int readbin(const char* fileName); // read MuSR PSI bin format
int writebin(const char *fileName); // write MuSR PSI bin format
int readmdu(const char* fileName); // read MuSR mdu format
int writemdu(const char* fileName); // write MuSR mdu format
bool readingOK() const;
bool writingOK() const;
bool CheckDataConsistency(int tag=0); // tag: 0=reasonable, 1=strict
string ReadStatus() const;
string WriteStatus() const;
string ConsistencyStatus() const;
string Filename() const;
int Show() const;
@ -133,43 +147,40 @@ class MuSR_td_PSI_bin {
double get_histo(int histo_num, int j);
int *get_histo_array_int(int histo_num);
double *get_histo_array(int histo_num , int binning) ;
vector<double> get_histo_vector(int histo_num , int binning) ;
vector<double> get_histo_vector_no0(int histo_num , int binning) ;
double *get_histo_array(int histo_num, int binning);
int put_histo_array_int(vector< vector<int> > histo, int tag = 0);
vector<double> get_histo_vector(int histo_num, int binning);
vector<double> get_histo_vector_no0(int histo_num, int binning);
double *get_histo_fromt0_array(int histo_num ,
int binning ,
int offset = 0) ;
double *get_histo_fromt0_array(int histo_num, int binning, int offset = 0);
vector<double> get_histo_fromt0_vector(int histo_num ,
int binning ,
int offset = 0) ;
vector<double> get_histo_fromt0_vector(int histo_num, int binning, int offset = 0);
double *get_histo_goodBins_array(int histo_num , int binning) ;
double *get_histo_goodBins_array(int histo_num, int binning);
vector<double> get_histo_goodBins_vector(int histo_num , int binning) ;
vector<double> get_histo_goodBins_vector(int histo_num, int binning);
double *get_histo_fromt0_minus_bckgrd_array(int histo_num ,
int lower_bckgdr ,
int higher_bckgdr ,
int binning ,
int offset = 0) ;
double *get_histo_fromt0_minus_bckgrd_array(int histo_num,
int lower_bckgdr,
int higher_bckgdr,
int binning,
int offset = 0);
vector<double> get_histo_fromt0_minus_bckgrd_vector(int histo_num ,
int lower_bckgdr ,
int higher_bckgdr ,
int binning ,
int offset = 0) ;
vector<double> get_histo_fromt0_minus_bckgrd_vector(int histo_num,
int lower_bckgdr,
int higher_bckgdr,
int binning,
int offset = 0);
double *get_histo_goodBins_minus_bckgrd_array(int histo_num ,
int lower_bckgrd ,
int higher_bckgrd ,
int binning) ;
double *get_histo_goodBins_minus_bckgrd_array(int histo_num,
int lower_bckgrd,
int higher_bckgrd,
int binning);
vector<double> get_histo_goodBins_minus_bckgrd_vector(int histo_num ,
int lower_bckgrd ,
int higher_bckgrd ,
int binning) ;
vector<double> get_histo_goodBins_minus_bckgrd_vector(int histo_num,
int lower_bckgrd,
int higher_bckgrd,
int binning);
double *get_asymmetry_array(int histo_num_plus,
int histo_num_minus,
@ -178,88 +189,95 @@ class MuSR_td_PSI_bin {
int lower_bckgrd_plus,
int higher_bckgrd_plus,
int lower_bckgrd_minus,
int higher_bckgrd_minus ,
int higher_bckgrd_minus,
int offset = 0,
double y_offset = 0.) ;
double y_offset = 0.);
vector<double> get_asymmetry_vector(int histo_num_plus ,
int histo_num_minus ,
double alpha_param ,
int binning ,
int lower_bckgrd_plus ,
int higher_bckgrd_plus ,
int lower_bckgrd_minus ,
int higher_bckgrd_minus ,
int offset = 0 ,
double y_offset = 0.) ;
vector<double> get_asymmetry_vector(int histo_num_plus,
int histo_num_minus,
double alpha_param,
int binning,
int lower_bckgrd_plus,
int higher_bckgrd_plus,
int lower_bckgrd_minus,
int higher_bckgrd_minus,
int offset = 0,
double y_offset = 0.);
double *get_error_asymmetry_array(int histo_num_plus ,
int histo_num_minus ,
double alpha_param ,
int binning ,
int lower_bckgrd_plus ,
int higher_bckgrd_plus ,
int lower_bckgrd_minus ,
int higher_bckgrd_minus ,
int offset = 0) ;
double *get_error_asymmetry_array(int histo_num_plus,
int histo_num_minus,
double alpha_param,
int binning,
int lower_bckgrd_plus,
int higher_bckgrd_plus,
int lower_bckgrd_minus,
int higher_bckgrd_minus,
int offset = 0);
vector<double> get_error_asymmetry_vector(int histo_num_plus ,
int histo_num_minus ,
double alpha_param ,
int binning ,
int lower_bckgrd_plus ,
int higher_bckgrd_plus ,
int lower_bckgrd_minus ,
int higher_bckgrd_minus ,
int offset = 0) ;
vector<double> get_error_asymmetry_vector(int histo_num_plus,
int histo_num_minus,
double alpha_param,
int binning,
int lower_bckgrd_plus,
int higher_bckgrd_plus,
int lower_bckgrd_minus,
int higher_bckgrd_minus,
int offset = 0);
double *get_asymmetry_goodBins_array(int histo_num_plus ,
int histo_num_minus ,
double alpha_param ,
int binning ,
int lower_bckgrd_plus ,
int higher_bckgrd_plus ,
int lower_bckgrd_minus ,
int higher_bckgrd_minus) ;
double *get_asymmetry_goodBins_array(int histo_num_plus,
int histo_num_minus,
double alpha_param,
int binning,
int lower_bckgrd_plus,
int higher_bckgrd_plus,
int lower_bckgrd_minus,
int higher_bckgrd_minus);
vector<double> get_asymmetry_goodBins_vector(int histo_num_plus ,
int histo_num_minus ,
double alpha_param ,
int binning ,
int lower_bckgrd_plus ,
int higher_bckgrd_plus ,
int lower_bckgrd_minus ,
int higher_bckgrd_minus) ;
vector<double> get_asymmetry_goodBins_vector(int histo_num_plus,
int histo_num_minus,
double alpha_param,
int binning,
int lower_bckgrd_plus,
int higher_bckgrd_plus,
int lower_bckgrd_minus,
int higher_bckgrd_minus);
double *get_error_asymmetry_goodBins_array(int histo_num_plus ,
int histo_num_minus ,
double alpha_param ,
int binning ,
int lower_bckgrd_plus ,
int higher_bckgrd_plus ,
int lower_bckgrd_minus ,
int higher_bckgrd_minus) ;
double *get_error_asymmetry_goodBins_array(int histo_num_plus,
int histo_num_minus,
double alpha_param,
int binning,
int lower_bckgrd_plus,
int higher_bckgrd_plus,
int lower_bckgrd_minus,
int higher_bckgrd_minus);
vector<double> get_error_asymmetry_goodBins_vector(int histo_num_plus ,
int histo_num_minus ,
double alpha_param ,
int binning ,
int lower_bckgrd_plus ,
int higher_bckgrd_plus ,
int lower_bckgrd_minus ,
int higher_bckgrd_minus) ;
vector<double> get_error_asymmetry_goodBins_vector(int histo_num_plus,
int histo_num_minus,
double alpha_param,
int binning,
int lower_bckgrd_plus,
int higher_bckgrd_plus,
int lower_bckgrd_minus,
int higher_bckgrd_minus);
double get_binWidth_ps();
void put_binWidth_ps(double binWidth);
double get_binWidth_ns();
void put_binWidth_ns(double binWidth);
double get_binWidth_us();
void put_binWidth_us(double binWidth);
int get_histoLength_bin();
void put_histoLength_bin(int val) { length_histo = val; }
int get_numberHisto_int();
void put_numberHisto_int(int val) { number_histo = val; }
string get_nameHisto(int i) ;
string get_nameHisto(int i);
int put_nameHisto(string histoName, int i);
vector<string> get_histoNames_vector();
int put_histoNames_vector(vector<string> &histoNames);
long get_eventsHisto_long(int i);
vector<long> get_eventsHisto_vector();
@ -267,52 +285,69 @@ class MuSR_td_PSI_bin {
long get_totalEvents_long();
int get_numberScaler_int();
vector<long> get_scalers_vector() ;
vector<string> get_scalersNames_vector() ;
int put_numberScaler_int(int val);
vector<long> get_scalers_vector();
int put_scalers_vector(vector<int> scalerData);
vector<string> get_scalersNames_vector();
int put_scalersNames_vector(vector<string> scalersName);
int get_default_binning() ;
int get_t0_int(int i) ;
vector<int> get_t0_vector() ;
double get_t0_double(int i) ;
int get_default_binning();
int get_t0_int(int i);
int put_t0_int(int histoNo, int t0);
vector<int> get_t0_vector();
int put_t0_vector(vector<int> &t0Data);
double get_t0_double(int i);
int get_max_t0_int () ;
int get_max_2_t0_int (int k, int j) ;
int get_min_t0_int () ;
int get_min_2_t0_int (int k, int j) ;
int get_max_t0_int ();
int get_max_2_t0_int (int k, int j);
int get_min_t0_int ();
int get_min_2_t0_int (int k, int j);
int get_firstGood_int(int i) ;
vector<int> get_firstGood_vector() ;
int put_firstGood_int(int i, int j) ;
int get_firstGood_int(int i);
vector<int> get_firstGood_vector();
int put_firstGood_int(int i, int j);
int get_lastGood_int(int i) ;
vector<int> get_lastGood_vector() ;
int put_lastGood_int(int i, int j) ;
int get_lastGood_int(int i);
vector<int> get_lastGood_vector();
int put_lastGood_int(int i, int j);
int get_max_lastGood_int () ;
int get_max_2_lastGood_int (int k, int j) ;
int get_min_lastGood_int () ;
int get_min_2_lastGood_int (int k, int j) ;
int get_max_lastGood_int ();
int get_max_2_lastGood_int (int k, int j);
int get_min_lastGood_int ();
int get_min_2_lastGood_int (int k, int j);
int get_runNumber_int() ;
int put_runNumber_int(int i) ;
int get_runNumber_int();
int put_runNumber_int(int i);
string get_sample() ;
string get_field() ;
string get_orient() ;
string get_temp() ;
string get_comment() ;
string get_sample();
int put_sample(string sample);
string get_field();
int put_field(string field);
string get_orient();
int put_orient(string orientation);
string get_temp();
int put_temp(string temp);
string get_setup();
int put_setup(string setup);
string get_comment();
int put_comment(string comment);
vector<string> get_timeStart_vector() ;
vector<string> get_timeStop_vector() ;
vector<string> get_timeStart_vector();
int put_timeStart_vector(vector<string> timeStart);
vector<string> get_timeStop_vector();
int put_timeStop_vector(vector<string> timeStop);
int get_numberTemperature_int() ;
vector<double> get_temperatures_vector() ;
vector<double> get_devTemperatures_vector() ;
int get_numberTemperature_int();
int put_numberTemperature_int(int noOfTemps);
vector<double> get_temperatures_vector();
int put_temperatures_vector(vector<double> &temps);
vector<double> get_devTemperatures_vector();
int put_devTemperatures_vector(vector<double> &devTemps);
private:
int tmax(int x, int y) ;
int tmin(int x, int y) ;
int tmax(int x, int y);
int tmin(int x, int y);
} ;
#endif