/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Mdc/MdcTables/MdcTables-00-00-11/MdcTables/MdcTables.h

Go to the documentation of this file.
00001 /* modified the Class MdcRec_wirhit for KalFit & Calib use
00002  *
00003  **********************************************************/
00004 
00005 
00006 #ifndef _MdcTables_h_
00007 #define _MdcTables_h_
00008 
00009 #include <string>
00010 #include <iostream>
00011 #include <vector>
00012 
00013 //#include "MdcRecGeo/MdcRecGeo.h"
00014 #include "MdcGeomSvc/MdcGeomSvc.h"
00015 #include "MdcTables/HepevtTables.h"
00016 #include "MdcRecEvent/RecMdcHit.h"
00017 //#include "MdcTables/TrkTables.h"
00018 
00019 using namespace std;
00020 
00021 //
00022 //*** raw data info. of MDC wire hits ***  
00023 //
00024 class MdcRaw_wirhit {
00025 public:
00026   MdcRaw_wirhit() {};
00027 public:
00028   int id;
00029   int crt;
00030   int slt;
00031   int chn;
00032   int pre;
00033   int sqt;
00034   int edges;
00035   int tdc1;
00036   int tdc2;
00037   int tdc3;
00038   int tdc4;
00039   int tdc5;
00040   int tdc6;
00041   int tdc7;
00042   int tdc8;
00043   int tdc9;
00044   int tdc10;
00045   int tdc11;
00046   int tdc12;
00047   int tdc13;
00048   int tdc14;
00049   int tdc15;
00050   int tdc16;
00051   int stat;
00052   int layer;
00053   int local;
00054   const MdcGeoWire * geo;
00055 };
00056 
00057 class MdcRawWirhitCol {
00058 public:
00059    static vector<MdcRaw_wirhit>* getMdcRawWirhitCol(void);              
00060 private:
00061    static vector<MdcRaw_wirhit>* s_col;            
00062 };
00063 
00064 
00065 //
00066 //*** digitized info. of MDC wire hits ***
00067 //
00068 class MdcRec_wirhit;
00069 class MdcDat_wirhit {
00070 public:
00071   MdcDat_wirhit() {};
00072 public:
00073   int id;
00074   float adc;
00075   float tdc;
00076   int stat;
00077   const MdcGeoWire * geo;
00078   MdcRec_wirhit * rec;
00079 };
00080 
00081 class MdcDatWirhitCol {
00082 public:
00083    static vector<MdcDat_wirhit>* getMdcDatWirhitCol(void);              
00084 private:
00085    static vector<MdcDat_wirhit>* s_col;            
00086 };
00087 
00088 //
00089 //*** digitized info. of MDC wire hits ***
00090 //
00091 class MdcDat_olhit {
00092 public:
00093   MdcDat_olhit() {};
00094 public:
00095   int id;
00096   float adc;
00097   float tdc;
00098   int stat;
00099   const MdcGeoWire * geo;
00100 };
00101 
00102 class MdcDatOlhitCol {
00103 public:
00104    static vector<MdcDat_olhit>* getMdcDatOlhitCol(void);              
00105 private:
00106    static vector<MdcDat_olhit>* s_col;            
00107 };
00108 
00109 //
00110 //*** const. param. to calculate drift distance ***
00111 //
00112 class MdcCal_tzero {
00113 public:
00114   MdcCal_tzero() {};
00115 public:
00116   int id;
00117   float tzero;
00118 };
00119 
00120 class MdcCalTzeroCol {
00121 public:
00122    static vector<MdcCal_tzero>* getMdcCalTzeroCol(void);              
00123 private:
00124    static vector<MdcCal_tzero>* s_col;            
00125 };
00126 
00127 //
00128 //*** run by run t0 *** 
00129 //
00130 class MdcCal_tzero2 {
00131 public:
00132   MdcCal_tzero2() {};
00133 public:
00134   int id;
00135   float t0;
00136 };
00137 
00138 class MdcCalTzero2Col {
00139 public:
00140    static vector<MdcCal_tzero2>* getMdcCalTzero2Col(void);              
00141 private:
00142    static vector<MdcCal_tzero2>* s_col;            
00143 };
00144 
00145 //
00146 //*** Defifinition of bad wires  *** 
00147 //
00148 class MdcCal_badwire {
00149 public:
00150   MdcCal_badwire() {};
00151 public:
00152   int id;
00153   int bad[3];
00154 };
00155 
00156 class MdcCalBadwireCol {
00157 public:
00158    static vector<MdcCal_badwire>* getMdcCalBadwireCol(void);              
00159 private:
00160    static vector<MdcCal_badwire>* s_col;            
00161 };
00162 
00163 //
00164 //**** nition of tables for const. param. to calculate drift distance ***
00165 //
00166 class MdcCal_const {
00167 public:
00168   MdcCal_const() {};
00169 public:
00170   int id;
00171   float xtl[8][18];
00172   float xtr[8][18];
00173   float bndl[4][18];
00174   float bndr[4][18];
00175 };
00176 
00177 class MdcCalConstCol {
00178 public:
00179    static vector<MdcCal_const>* getMdcCalConstCol(void);              
00180 private:
00181    static vector<MdcCal_const>* s_col;            
00182 };
00183  
00184 //
00185 //*** const. param. for error of drift distance ***
00186 //
00187 class MdcCal_const2 {
00188 public:
00189   MdcCal_const2() {};
00190 public:
00191   int id;
00192   float sgm[5];
00193 };
00194 
00195 class MdcCalConst2Col {
00196 public:
00197    static vector<MdcCal_const2>* getMdcCalConst2Col(void);              
00198 private:
00199    static vector<MdcCal_const2>* s_col;            
00200 };
00201  
00202 //
00203 //*** const. param. for time walk *** 
00204 //
00205 class MdcCal_const3 {
00206 public:
00207   MdcCal_const3() {};
00208 public:
00209   int id;
00210   float tw[2];
00211 };
00212 
00213 class MdcCalConst3Col {
00214 public:
00215    static vector<MdcCal_const3>* getMdcCalConst3Col(void);              
00216 private:
00217    static vector<MdcCal_const3>* s_col;            
00218 };
00219  
00220 //
00221 //*** fudge factor and tanL dep. ***
00222 //
00223 class MdcCal_const4 {
00224 public:
00225   MdcCal_const4() {};
00226 public:
00227   int id;
00228   float fudge;
00229   int npoint;
00230   float tanl[20];
00231   float ftanl[20];
00232   float a[20];
00233   float b[20];
00234 };
00235 
00236 class MdcCalConst4Col {
00237 public:
00238    static vector<MdcCal_const4>* getMdcCalConst4Col(void);              
00239 private:
00240    static vector<MdcCal_const4>* s_col;            
00241 };
00242  
00243 //
00244 //*** miscellaneous *** 
00245 //
00246 class MdcCal_misc {
00247 public:
00248   MdcCal_misc() {};
00249 public:
00250   int id;
00251   int level;
00252   float inv_speed;
00253 };
00254 
00255 class MdcCalMiscCol {
00256 public:
00257    static vector<MdcCal_misc>* getMdcCalMiscCol(void);              
00258 private:
00259    static vector<MdcCal_misc>* s_col;            
00260 };
00261  
00262 //
00263 //*** const. param. to calculate charge  *** 
00264 //
00265 class MdcCal_ped {
00266 public:
00267   MdcCal_ped() {};
00268 public:
00269   int id;
00270   float pmean;
00271   float psigma;
00272 };
00273 
00274 class MdcCalPedCol {
00275 public:
00276    static vector<MdcCal_ped>* getMdcCalPedCol(void);              
00277 private:
00278    static vector<MdcCal_ped>* s_col;            
00279 };
00280 
00281 //
00282 //*** wire-hits of MDC *** 
00283 //
00284 class MdcRec_trk;
00285 class MdcRec_wirhit {
00286 public:
00287    MdcRec_wirhit() : geo(0), dat(0), trk(0),rechitptr(0){};
00288    ~MdcRec_wirhit( ); 
00289    MdcRec_wirhit(const MdcRec_wirhit& rhs) : geo(rhs.geo),
00290      dat(rhs.dat), trk(rhs.trk),rechitptr(rhs.rechitptr) {
00291      id = rhs.id;
00292      ddl = rhs.ddl;
00293      ddr = rhs.ddr;
00294      erddl = rhs.erddl;
00295      erddr = rhs.erddr;
00296      pChiSq = rhs.pChiSq;
00297      lr = rhs.lr;
00298      stat = rhs.stat; 
00299      tdc = rhs.tdc;
00300      adc = rhs.adc;
00301      timechannel=rhs.timechannel;
00302    }
00303    
00304    MdcRec_wirhit& operator =(const MdcRec_wirhit& rhs) {
00305 
00306     if(this == &rhs)
00307         return *this;
00308      id = rhs.id;
00309      ddl = rhs.ddl;
00310      ddr = rhs.ddr;
00311      erddl = rhs.erddl;
00312      erddr = rhs.erddr;
00313      pChiSq = rhs.pChiSq;
00314      lr = rhs.lr;
00315      stat = rhs.stat; 
00316      geo = rhs.geo;
00317      trk = rhs.trk;
00318      dat = rhs.dat;
00319      tdc = rhs.tdc;
00320      adc = rhs.adc;
00321      timechannel=rhs.timechannel;
00322      rechitptr = rhs.rechitptr;
00323      return *this;
00324    }
00325             
00326 public:
00327   int id;
00328   float ddl;
00329   float ddr;
00330   float erddl;
00331   float erddr;
00332   float pChiSq;
00333   int lr;
00334   int stat;
00335   const MdcGeoWire * geo;
00336   MdcDat_wirhit * dat;
00337   MdcRec_trk * trk;
00338   RecMdcHit* rechitptr;
00339   float tdc;
00340   float adc;
00341   unsigned timechannel;// liucy for tsf
00342 };
00343 
00344 class MdcRecWirhitCol {
00345 public:
00346    static vector<MdcRec_wirhit>* getMdcRecWirhitCol(void);              
00347 private:
00348    static vector<MdcRec_wirhit>* s_col;            
00349 };
00350 
00351 //
00352 //*** track of MDC *** 
00353 //
00354 class MdcRec_trk_add;
00355 class MdcRec_trk {
00356 public:
00357    MdcRec_trk():add(0) {};
00358    ~MdcRec_trk( );
00359 
00360    MdcRec_trk(const MdcRec_trk& rhs) : add(rhs.add) {
00361      id = rhs.id;
00362      chiSq = rhs.chiSq;
00363      ndf = rhs.ndf;
00364      fiTerm = rhs.fiTerm;
00365      nhits = rhs.nhits; 
00366      nster = rhs.nster;
00367      nclus = rhs.nclus; 
00368      stat = rhs.stat; 
00369      mass = rhs.mass;
00370      hitcol = rhs.hitcol;
00371      for ( int i=0; i<15; i++ ) {
00372         if( i<3 ) pivot[i] = rhs.pivot[i];      
00373         if( i<5 ) helix[i] = rhs.helix[i];
00374         error[i] = rhs.error[i];
00375      }      
00376    }
00377    
00378    MdcRec_trk& operator =(const MdcRec_trk& rhs) {
00379 
00380     if(this == &rhs)
00381         return *this;
00382      id = rhs.id;
00383      chiSq = rhs.chiSq;
00384      ndf = rhs.ndf;
00385      fiTerm = rhs.fiTerm;
00386      nhits = rhs.nhits; 
00387      nster = rhs.nster;
00388      nclus = rhs.nclus; 
00389      stat = rhs.stat; 
00390      add = rhs.add;
00391      mass = rhs.mass;
00392      hitcol = rhs.hitcol;
00393      for ( int i=0; i<15; i++ ) {
00394         if( i<3 ) pivot[i] = rhs.pivot[i];      
00395         if( i<5 ) helix[i] = rhs.helix[i];
00396         error[i] = rhs.error[i];
00397      }      
00398      return *this;
00399    }
00400                
00401 public:
00402   int id;
00403   float helix[5];
00404   float pivot[3];
00405   float error[15];
00406   float chiSq;
00407   float ndf;
00408   float fiTerm;
00409   int nhits;
00410   int nster;
00411   int nclus;
00412   int stat;
00413   float mass;
00414   vector<MdcRec_wirhit*> hitcol;
00415   MdcRec_trk_add* add;
00416 public:
00417   const float fi0(void)const{
00418           return helix[1];
00419   }
00420   const float cpa(void)const{
00421           return helix[2];
00422   }
00423   const float dz(void)const{
00424           return helix[3];
00425   }
00426   const float tanl(void)const{
00427           return helix[4];
00428   }
00429 
00430 
00431 };
00432 
00433 class MdcRecTrkCol {
00434 public:
00435    static vector<MdcRec_trk>* getMdcRecTrkCol(void);              
00436 private:
00437    static vector<MdcRec_trk>* s_col;            
00438 };
00439  
00440 //
00441 //*** dEdx of MDC ***  
00442 //
00443 class MdcRec_dedx {
00444 public:
00445   MdcRec_dedx() {};
00446 public:
00447   int id;
00448   float dEdx;
00449   float dEdx_exp[5];
00450   float sigma_dEdx[5];
00451   float pid_prob[5];
00452   MdcRec_trk * trk;
00453   int stat;
00454 };
00455 
00456 class MdcRecDedxCol {
00457 public:
00458    static vector<MdcRec_dedx>* getMdcRecDedxCol(void);              
00459 private:
00460    static vector<MdcRec_dedx>* s_col;            
00461 };
00462  
00463 //
00464 //*** MDC timing *** 
00465 //
00466 class MdcRec_timing {
00467 public:
00468   MdcRec_timing() {};
00469 public:
00470   int id;
00471   float time;
00472   int quality;
00473 };
00474 
00475 class MdcRecTimingCol {
00476 public:
00477    static vector<MdcRec_timing>* getMdcRecTimingCol(void);              
00478 private:
00479    static vector<MdcRec_timing>* s_col;            
00480 };
00481  
00482 //
00483 //*** const. param. for dE/dx caliburation  *** 
00484 //
00485 class MdcRec_excalib {
00486 public:
00487   MdcRec_excalib() {};
00488 public:
00489   int id;
00490   float gain[8208];
00491   float ggs_f[10];
00492   float ggs_b[10];
00493   float erggs_f[10];
00494   float erggs_b[10];
00495   float localg[15][47];
00496   float ddg[10][47];
00497   float mdcgain;
00498 };
00499 
00500 class MdcRecExcalibCol {
00501 public:
00502    static vector<MdcRec_excalib>* getMdcRecExcalibCol(void);              
00503 private:
00504    static vector<MdcRec_excalib>* s_col;            
00505 };
00506  
00507 //
00508 //*** const. param. to caliburate global gain ***   
00509 //
00510 class MdcRec_exglobal {
00511 public:
00512   MdcRec_exglobal() {};
00513 public:
00514   int id;
00515   float mdcgain;
00516   float mdcresol;
00517 };
00518 
00519 class MdcRecExglobalCol {
00520 public:
00521    static vector<MdcRec_exglobal>* getMdcRecExglobalCol(void);              
00522 private:
00523    static vector<MdcRec_exglobal>* s_col;            
00524 };
00525  
00526 //
00527 //*** const. param. to caliburate dE/dx curve *** 
00528 //
00529 class MdcRec_excurve {
00530 public:
00531   MdcRec_excurve() {};
00532 public:
00533   int id;
00534   float f_bg[10];
00535   float f_erbg[12];
00536   float f_erbg2[12];
00537 };
00538 
00539 class MdcRecExcurveCol {
00540 public:
00541    static vector<MdcRec_excurve>* getMdcRecExcurveCol(void);              
00542 private:
00543    static vector<MdcRec_excurve>* s_col;            
00544 };
00545 
00546 //
00547 //*** const. to calib. dE/dx curve for 5 particles *** 
00548 //
00549 class MdcRec_excurve_add {
00550 public:
00551   MdcRec_excurve_add() {};
00552 public:
00553   int id;
00554   int flag;
00555   float f_e[12];
00556   float f_mu[12];
00557   float f_pi[12];
00558   float f_k[12];
00559   float f_p[12];
00560 };
00561 
00562 class MdcRecExcurveAddCol {
00563 public:
00564    static vector<MdcRec_excurve_add>* getMdcRecExcurveAddCol(void);              
00565 private:
00566    static vector<MdcRec_excurve_add>* s_col;            
00567 };
00568  
00569 //
00570 //*** re-reconst. dE/dx ( global calib )" 
00571 //
00572 class MdcRec_exnoggs {
00573 public:
00574   MdcRec_exnoggs() {};
00575 public:
00576   int id;
00577   float dEdx_r;
00578   float mdcR_old;
00579   MdcRec_trk * trk;
00580   MdcRec_dedx * rex;
00581 };
00582 
00583 class MdcRecExnoggsCol {
00584 public:
00585    static vector<MdcRec_exnoggs>* getMdcRecExnoggsCol(void);              
00586 private:
00587    static vector<MdcRec_exnoggs>* s_col;            
00588 };
00589 
00590 //
00591 //*** Definition of current calib. function parameter (2nd POLY.)" 
00592 //
00593 class MdcRec_excurrentfit {
00594 public:
00595   MdcRec_excurrentfit() {};
00596 public:
00597   int id;
00598   float curr_slope;
00599   float curr_const;
00600   float f_slope[50];
00601   float f_const[50];
00602 };
00603 
00604 class MdcRecExcurrentfitCol {
00605 public:
00606    static vector<MdcRec_excurrentfit>* getMdcRecExcurrentfitCol(void);              
00607 private:
00608    static vector<MdcRec_excurrentfit>* s_col;            
00609 };
00610  
00611 //
00612 //*** wire current from daqom" 
00613 //
00614 class MdcRec_daqom {
00615 public:
00616   MdcRec_daqom() {};
00617 public:
00618   int id;
00619   int Time;
00620   float MC[56];
00621   float GasPress;
00622   float MDCTemp[5];
00623   int RunState;
00624   float BeamCurrent[2];
00625   float LUMEFC;
00626   float LUMCSI;
00627   float VLT40;
00628   float TOFRATES;
00629 };
00630 
00631 class MdcRecDaqomCol {
00632 public:
00633    static vector<MdcRec_daqom>* getMdcRecDaqomCol(void);              
00634 private:
00635    static vector<MdcRec_daqom>* s_col;            
00636 };
00637  
00638 //
00639 //*** digitized info. of MDC wire hits *** 
00640 //
00641 class MdcDat_mcwirhit {
00642 public:
00643   MdcDat_mcwirhit() {};
00644 public:
00645   int id;
00646   float xw;
00647   float yw;
00648   float zw;
00649   float dist;
00650   float chrg;
00651   float xin;
00652   float yin;
00653   float zin;
00654   float xout;
00655   float yout;
00656   float zout;
00657   int lr;
00658   int stat;
00659   const MdcGeoWire * geo;
00660   MdcDat_wirhit * dat;
00661   const Gen_hepevt * hep;
00662   MdcRec_trk * trk;
00663   float px;
00664   float py;
00665   float pz;
00666   float pid;
00667   float tof;
00668   float tdc;
00669 };
00670 
00671 class MdcDatMcwirhitCol {
00672 public:
00673    static vector<MdcDat_mcwirhit>* getMdcDatMcwirhitCol(void);              
00674 private:
00675    static vector<MdcDat_mcwirhit>* s_col;            
00676 };
00677 
00678 //
00679 //*** MC information of MDC track *** 
00680 //
00681 class MdcRec_mctrk {
00682 public:
00683   MdcRec_mctrk() {};
00684 public:
00685   int id;
00686   const Gen_hepevt * hep;
00687   float wirFrac;
00688   float wirFracHep;
00689   int charge;
00690   float ptFrac;
00691   float pzFrac;
00692   int quality;
00693 };
00694 
00695 class MdcRecMctrkCol {
00696 public:
00697    static vector<MdcRec_mctrk>* getMdcRecMctrkCol(void);              
00698 private:
00699    static vector<MdcRec_mctrk>* s_col;            
00700 };
00701  
00702 //
00703 //*** MDC track and generated track matching *** 
00704 //
00705 class MdcRec_mctrk2hep {
00706 public:
00707   MdcRec_mctrk2hep() {};
00708 public:
00709   int id;
00710   MdcRec_wirhit * wir;
00711   //  MdcRec_clust * clust;
00712   MdcRec_trk * trk;
00713   const Gen_hepevt * hep;
00714 };
00715 
00716 class MdcRecMctrk2hepCol {
00717 public:
00718    static vector<MdcRec_mctrk2hep>* getMdcRecMctrk2hepCol(void);              
00719 private:
00720    static vector<MdcRec_mctrk2hep>* s_col;            
00721 };
00722  
00723 //
00724 //*** additional tables for track of MDC *** 
00725 //
00726 class MdcTrk;
00727 class MdcRec_trk_add {
00728 public:
00729    MdcRec_trk_add() : body(0),mother(0),
00730      daughter(0), rectrk(0) { };
00731    ~MdcRec_trk_add( );
00732    MdcRec_trk_add(const MdcRec_trk_add& rhs) : mother(rhs.mother), 
00733      body(rhs.body),daughter(rhs.daughter), rectrk(rhs.rectrk)  {
00734      id = rhs.id;
00735      quality = rhs.quality;
00736      kind = rhs.kind;
00737      decision = rhs.decision;
00738      stat = rhs.stat; 
00739      for ( int i=0; i<3; i++ ) {
00740         likelihood[i] = rhs.likelihood[i];
00741      }      
00742    }
00743    
00744    MdcRec_trk_add& operator =(const MdcRec_trk_add& rhs) {
00745 
00746     if(this == &rhs)
00747         return *this;
00748      id = rhs.id;
00749      quality = rhs.quality;
00750      kind = rhs.kind;
00751      decision = rhs.decision;
00752      stat = rhs.stat; 
00753      rectrk = rhs.rectrk;
00754      body = rhs.body;
00755      mother = rhs.mother;
00756      daughter = rhs.daughter; 
00757      for ( int i=0; i<3; i++ ) {
00758         likelihood[i] = rhs.likelihood[i];
00759      }      
00760      return *this;
00761    }
00762    
00763 public:
00764   int id;
00765   int quality;
00766   int kind;
00767   MdcRec_trk* body;
00768   MdcRec_trk* mother;
00769   MdcRec_trk* daughter;
00770   int decision;
00771   float likelihood[3];
00772   int stat;
00773   MdcTrk* rectrk;
00774 };
00775 
00776 class MdcRecTrkAddCol {
00777 public:
00778    static vector<MdcRec_trk_add>* getMdcRecTrkAddCol(void);              
00779 private:
00780    static vector<MdcRec_trk_add>* s_col;            
00781 };
00782  
00783 //
00784 //*** mdctime run-dependent offset  ***  
00785 //
00786 class MdcRec_timeofs {
00787 public:
00788   MdcRec_timeofs() {};
00789 public:
00790   int id;
00791   float offset;
00792 };
00793 
00794 class MdcRecTimeofsCol {
00795 public:
00796    static vector<MdcRec_timeofs>* getMdcRecTimeofsCol(void);              
00797 private:
00798    static vector<MdcRec_timeofs>* s_col;            
00799 };
00800  
00801 //
00802 //*** Tof_xtime2 information with tighter cuts ***
00803 //*** from Tof_mdctime                         ***
00804 //
00805 class Mdc_xtime2 {
00806 public:
00807   Mdc_xtime2() {};
00808 public:
00809   int id;
00810   float xtime;
00811   float tofhit;
00812   float trig32;
00813   float evtime;
00814   float tdcstop;
00815 };
00816 
00817 class MdcXtime2Col {
00818 public:
00819    static vector<Mdc_xtime2>* getMdcXtime2Col(void);              
00820 private:
00821    static vector<Mdc_xtime2>* s_col;            
00822 };
00823 
00824 #endif // _MdcTables_h_
00825 

Generated on Tue Nov 29 23:12:54 2016 for BOSS_7.0.2 by  doxygen 1.4.7