/** * \file TrkStruct.h * \author Elena Vannuccini * \date */ #ifndef trkstruct_h #define trkstruct_h #define NPLANE 6 #define NVIEW 12 #define NVK 24 #define NLADDER 3 #define NCLMAX_VIEW 200 //max n.clusters per view #define NCLSTR 20 //max n.strip per cluster #define NCLMAX (NCLMAX_VIEW*12) //max n.clusters total #define NCLBUFF (NCLMAX*NCLSTR) #define NDBLT_MAX_NT 1000 // 0.2*ndblt_max #define NTRPT_MAX_NT 10000 // 0.2*ntrpt_max #define NCLOYZ_MAX 200 #define NCLOXZ_MAX 200 #define NTRKMAX 10 #define NSINGMAX NCLMAX //100 #define NANGMAX 21 #define NETAVALMAX 500 #include #include using namespace pamela; //#include #include #include #include #include #include /** * \brief Struct to pass calibration parameters to F77 routines */ struct cTrkCalib { float pedestal[128][24][12]; float pedestal_t[128][24][12]; float sigma[128][24][12]; float sigma_t[128][24][12]; int bad[128][24][12]; /* void FillACalibFrom(TFile* , Int_t , Int_t ); */ /* void FillFCalibFrom(TFile* , Int_t , Int_t ); */ /* void FillTCalibFrom(TFile* , Int_t , Int_t ); */ /* void FillTCalibFrom(TString); */ }; // ================================================================== /** * \brief Struct to pass tracker LEVEL0 data to F77 routines */ struct cTrkLevel0 { int DAQmode[12]; int DSPnumber[12]; int DATAlength[12]; int eventn[12]; int nclust[12]; int cutc[12]; int cutcl[12]; int addrcluster[3][12]; int signcluster[3][12]; int fc[12]; int compressiontime[12]; int fl5[12]; int fl4[12]; int fl3[12]; int fl2[12]; int fl1[12]; int fl6[12]; int checksum[12]; int TOTDATAlength; int datatracker[49152]; int pnum[12]; int cmdnum[12]; int bid[12]; int alarm[12]; int aswr[12]; int good0; int crc[12]; }; // ================================================================== /** * \brief Struct to pass tracker LEVEL1 data to F77 routines */ struct cTrkLevel1 { // int good1; int good[12]; int nclstr1; int view[NCLMAX]; int ladder[NCLMAX]; int maxs[NCLMAX]; int mult[NCLMAX]; float dedx[NCLMAX]; int indstart[NCLMAX]; int indmax[NCLMAX]; int totCLlength; float clsignal[NCLBUFF]; float clsigma[NCLBUFF]; int cladc[NCLBUFF]; int clbad[NCLBUFF]; float cnev[24][12]; int cnnev[24][12]; float cnrmsev[24][12]; int fshower[12]; int whichtrack[NCLMAX]; }; // ================================================================== /** * \brief Struct to pass tracker LEVEL2 data to F77 routines */ struct cTrkLevel2 { // int good2; // int crc[12]; int good[12]; int vkflag[24][12]; // ---------------------------- int nclsx; int planex[NSINGMAX]; float xs[NSINGMAX][2]; float signlxs[NSINGMAX]; int clsx[NSINGMAX]; // ---------------------------- int nclsy; int planey[NSINGMAX]; float ys[NSINGMAX][2]; float signlys[NSINGMAX]; int clsy[NSINGMAX]; // ---------------------------- int ntrk; int image[NTRKMAX]; float xm_nt[NTRKMAX][6]; float ym_nt[NTRKMAX][6]; float zm_nt[NTRKMAX][6]; float resx_nt[NTRKMAX][6]; float resy_nt[NTRKMAX][6]; float tailx[NTRKMAX][6]; float taily[NTRKMAX][6]; float al_nt[NTRKMAX][5]; float coval[NTRKMAX][5][5]; float chi2_nt[NTRKMAX]; int nstep_nt[NTRKMAX]; int xgood_nt[NTRKMAX][6]; int ygood_nt[NTRKMAX][6]; int ls[NTRKMAX][6]; int xbad[NTRKMAX][6]; int ybad[NTRKMAX][6]; float xv_nt[NTRKMAX][6]; float yv_nt[NTRKMAX][6]; float zv_nt[NTRKMAX][6]; float axv_nt[NTRKMAX][6]; float ayv_nt[NTRKMAX][6]; float dedx_x[NTRKMAX][6]; float dedx_y[NTRKMAX][6]; int cltrx[NTRKMAX][6]; int cltry[NTRKMAX][6]; // float bdl[NTRKMAX]; void InitcTrkLevel2(){ // good2 = 0; for(Int_t i=0; i<12 ; i++){ good[i] = 0; for(Int_t ii=0; ii<24 ; ii++)vkflag[ii][i]=0; } // ---------------------------- nclsx = 0; nclsy = 0; for(Int_t i=0; i