/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/TofRec/TofRec-00-04-46/TofRec/TofTrack.h

Go to the documentation of this file.
00001 #ifndef TOFTRACK_H
00002 #define TOFTRACK_H
00003 
00004 #include "ExtEvent/RecExtTrack.h"
00005 #include "RawDataProviderSvc/TofData.h"
00006 #include "TofRecEvent/RecTofTrack.h"
00007 #include "TofRecEvent/RecBTofCalHit.h"
00008 #include "TofRecEvent/RecETofCalHit.h"
00009 
00010 const double adc_Cut = 10000.0;
00011 const double tdc_Cut = 100000.0;
00012 const double ztdc_Cut = 15.0;
00013 const double ztdc_Cut1 = 1.65*4.0;
00014 const double ztdc_Cut2 = 1.73*4.0;
00015 const double zadc_Cut = 25.0;
00016 const double ztdc_EtfCut = 15.0;
00017 const double mass[5] = { 0.00051100, 0.10566, 0.13957, 0.49368, 0.93827 };
00018 const double stripLength[12] = { 8.6, 9.1, 9.6, 10.1, 10.6, 11.1, 11.6, 12.1, 12.6, 13.1, 13.6, 14.1};
00019 
00020 enum ExtTrackCase { InnerLayer,OuterLayer,DoubleLayer,EastEndcap,WestEndcap,EastEndcapMRPC, WestEndcapMRPC, NoHit};
00021 
00022 class TofTrack{
00023  public:
00024   TofTrack( int run, int event );
00025   ~TofTrack();
00026 
00027   int trackId()                      const { return  m_trackId;    }
00028   int tofTrackId()                   const { return  m_tofTrackId; }
00029   int id1()                          const { return  m_id1;        }
00030   int id2()                          const { return  m_id2;        }
00031   int istrip1()                      const { return  m_istrip1;    }
00032   int istrip2()                      const { return  m_istrip2;    }
00033   int dstrip1()                      const { return  m_delStrip1;  }
00034   int dstrip2()                      const { return  m_delStrip2;  }
00035   unsigned int barrel()              const { return  m_barrel;     }
00036   ExtTrackCase hitCase()             const { return  m_hitCase;    }
00037   double p()                         const { return  m_momentum;   }
00038   double path()                      const { return  m_path;       }
00039   double path1()                     const { return  m_path1;      }
00040   double path2()                     const { return  m_path2;      }
00041   double zrhit1()                    const { return  m_zrhit1;     }
00042   double zrhit2()                    const { return  m_zrhit2;     }
00043   double errzrhit1()                 const { return  m_errzr1;     }
00044   double errzrhit2()                 const { return  m_errzr2;     }
00045   double xhit1()                     const { return  m_xhit1;      }
00046   double yhit1()                     const { return  m_yhit1;      }
00047   double xhit2()                     const { return  m_xhit2;      }
00048   double yhit2()                     const { return  m_yhit2;      }
00049   int kal(unsigned int i)            const { return  m_kal[i];     }
00050   double zr1(unsigned int i)         const { return  m_zr1[i];     }
00051   double zr2(unsigned int i)         const { return  m_zr2[i];     }
00052   double errzr1(unsigned int i)      const { return  m_ezr1[i];    }
00053   double errzr2(unsigned int i)      const { return  m_ezr2[i];    }
00054   std::vector<TofData*> tofData1()   const { return  m_tofData1;   }  
00055   std::vector<TofData*> tofData2()   const { return  m_tofData2;   }  
00056   int size1()                        const { return  m_tofData1.size(); }
00057   int size2()                        const { return  m_tofData2.size(); }
00058   int size3()                        const { return  m_tofData3.size(); }
00059   int size4()                        const { return  m_tofData4.size(); }
00060   double theta1()                    const { return  m_theta1;     }
00061   double theta2()                    const { return  m_theta2;     }
00062   double phi1()                      const { return  m_phi1;       }
00063   double phi2()                      const { return  m_phi2;       }
00064   unsigned int quality1()            const { return  m_quality1;   }
00065   unsigned int quality2()            const { return  m_quality2;   }
00066   unsigned int quality()             const { return  m_quality;    }
00067 
00068   int tofId1()                       const { return  m_tofId1;    }
00069   int tofId2()                       const { return  m_tofId2;    }
00070   int strip1()                       const { return  m_strip1;    }
00071   int strip2()                       const { return  m_strip2;    }
00072 
00073   double ph11()                   const { return  m_ph11;       }
00074   double ph12()                   const { return  m_ph12;       }
00075   double ph21()                   const { return  m_ph21;       }
00076   double ph22()                   const { return  m_ph22;       }
00077   double ph1()                    const { return  m_ph1;        }
00078   double ph2()                    const { return  m_ph2;        }
00079   double ph()                     const { return  m_ph;         }
00080 
00081   double tof11(unsigned int i)    const { return  m_tof11[i];   }
00082   double tof12(unsigned int i)    const { return  m_tof12[i];   }
00083   double tof21(unsigned int i)    const { return  m_tof21[i];   }
00084   double tof22(unsigned int i)    const { return  m_tof22[i];   }
00085   double tof1(unsigned int i)     const { return  m_tof1[i];    }
00086   double tof2(unsigned int i)     const { return  m_tof2[i];    }
00087   double tof(unsigned int i)      const { return  m_tof[i];     }
00088 
00089   double qch1()                   const { return  m_qch1;       }
00090   double qch2()                   const { return  m_qch2;       }
00091   double qch3()                   const { return  m_qch3;       }
00092   double qch4()                   const { return  m_qch4;       }
00093   double adc1()                   const { return  m_adc1;       }
00094   double adc2()                   const { return  m_adc2;       }
00095   double adc3()                   const { return  m_adc3;       }
00096   double adc4()                   const { return  m_adc4;       }
00097   double tdc1()                   const { return  m_tdc1;       }
00098   double tdc2()                   const { return  m_tdc2;       }
00099   double tdc3()                   const { return  m_tdc3;       }
00100   double tdc4()                   const { return  m_tdc4;       }
00101 
00102   double texpInner(unsigned int i) const { return m_texpInner[i]; }
00103   double texpOuter(unsigned int i) const { return m_texpOuter[i]; }
00104   double texp(unsigned int i)      const { return m_texp[i];      }
00105 
00106   double ztdc1()                  const { return  m_ztdc1;      }
00107   double ztdc2()                  const { return  m_ztdc2;      }
00108   double zadc1()                  const { return  m_zadc1;      }
00109   double zadc2()                  const { return  m_zadc2;      }
00110 
00111   double estime()                 const { return  m_estime;     }
00112   double tdiff1()                 const { return  m_tdiff1;     }
00113   double tdiff2()                 const { return  m_tdiff2;     }
00114 
00115   int t0Stat()                    const { return  m_t0Stat;     }
00116 
00117   unsigned int flag()             const { return  m_flag;       }
00118 
00119  public:
00120   bool isNoHit()                  const { return  m_hitCase==NoHit; }
00121   void setQuality( int qual )           { m_quality  = qual;        }
00122   void setQuality1( int qual1 )         { m_quality1 = qual1;       }
00123   void setQuality2( int qual2 )         { m_quality2 = qual2;       }
00124   void setFlag( unsigned int flag )     { m_flag = flag;            }
00125 
00126   void setExtTrack( RecExtTrack* extTrack, double costheta, double p[5], int kal[5], double t0, int t0Stat );
00127   void getMultiHit( TofTrack*& );
00128   void setTofData( TofDataMap tofDataMap );
00129   void tofDataAnalysis( TofData* tof, unsigned int iflag );
00130   void getTofData( TofData* tof, unsigned int iflag );
00131   void getTofDataEast( TofData* tof, unsigned int iflag );
00132   void getTofDataWest( TofData* tof, unsigned int iflag );
00133   void getTofDataNohit( unsigned int iflag );
00134   void getEtfData( TofData* tof, unsigned int iflag, unsigned int qual );
00135   void match( bool forCalibration, std::vector<int> deadId, std::vector<TofTrack*>*& tofTrackVec );
00136   void findTofDataBarrel( std::vector<TofData*> tofDataVec1, std::vector<TofData*> tofDataVec2, double zrhit, unsigned int iflag, std::vector<TofTrack*>*& tofTrackVec );
00137   TofData* chooseTofData( std::vector<TofData*> tofDataVec, double zrhit );
00138   TofData* compareTofData( TofData* tofData1, TofData* tofData2, double zrhit );
00139   void findTofDataEndcap( std::vector<TofData*> tofDataVec1, std::vector<TofData*> tofDataVec2, double zr1[5] );
00140   TofData* chooseTofDataEndcap( std::vector<TofData*> tofDataVec, double zr1[5] );
00141   TofData* compareTofDataEndcap( TofData* tofData1, TofData* tofData2 );
00142   void findEtfData( std::vector<TofData*> tofDataVec1, std::vector<TofData*> tofDataVec2, std::vector<TofData*> tofDataVec3, double zrhit, unsigned int iflag );
00143   TofData* chooseEtfData1( std::vector<TofData*> tofDataVec, double zrhit );
00144   TofData* chooseEtfData2( std::vector<TofData*> tofDataVec, double zrhit );
00145   //  TofData* compareEtfData( TofData* tofData1, TofData* tofData2, double zrhit );
00146 
00147   void tofDataStudy();
00148 
00149   void setCalibration();
00150 
00151   void convert2RecTofTrackCol( RecTofTrackCol* recTofTrackCol );
00152   void buildRecTofTrack( RecTofTrack* track, int layerorend );
00153   void setRecTofTrack( RecTofTrack* track, int layerorend );
00154 
00155   void convert2RecBTofCalHitColBarrel( int runNumber, int eventNumber, RecBTofCalHitCol* btofCalHitCol, std::string calibData );
00156   void convert2RecETofCalHitCol( int runNumber, int eventNumber, RecETofCalHitCol* etofCalHitCol, std::string calibData );
00157   void convert2RecBTofCalHitColETF( int runNumber, int eventNumber, RecBTofCalHitCol* btofCalHitCol, std::string calibData );
00158 
00159   void qualityAnalysis();
00160 
00161  private:
00162   int  m_run,  m_event;
00163   int  m_trackId;
00164   int  m_tofTrackId;
00165   int  m_id1, m_id2, m_istrip1, m_istrip2;
00166   int  m_tofId1, m_tofId2, m_strip1, m_strip2;
00167   int  m_delStrip1, m_delStrip2;
00168   unsigned int  m_barrel;
00169   ExtTrackCase  m_hitCase;
00170   double  m_momentum;
00171   double  m_path, m_path1, m_path2;
00172   double  m_zrhit1, m_errzr1, m_zrhit2, m_errzr2;
00173   double  m_xhit1, m_yhit1, m_xhit2, m_yhit2;
00174   int  m_kal[5];
00175   double  m_zr1[5], m_ezr1[5], m_zr2[5], m_ezr2[5];
00176   std::vector<TofData*> m_tofData1;
00177   std::vector<TofData*> m_tofData2;
00178   std::vector<TofData*> m_tofData3;
00179   std::vector<TofData*> m_tofData4;
00180   std::vector<TofData*> m_tofData5;
00181   std::vector<TofData*> m_tofData6;
00182   unsigned int m_quality1, m_quality2;
00183   unsigned int m_quality;
00184   // quality introduction
00185   // 17   16 15 14 13   12 11 10  9   8  7  6  5   4  3  2  1
00186   //      neighbor>1                  single end
00187   //         neighbor==1                 lost TDC
00188   //            hit counter>1               lost ADC
00189   //               hit counter==1              Raw data
00190   //                    calibration                q  t  q  t
00191   //                          zAdc not match       East  West
00192   //                              zTdc not match
00193 
00194   double m_theta1, m_theta2, m_phi1, m_phi2;
00195 
00196   double m_ph11, m_ph12, m_tof11[5], m_tof12[5];
00197   double m_ph21, m_ph22, m_tof21[5], m_tof22[5];
00198   double m_ph1,  m_ph2,  m_ph;
00199   double m_tof1[5], m_tof2[5], m_tof[5];
00200 
00201   double m_texp[5], m_texpInner[5], m_texpOuter[5];
00202 
00203   double m_sigma11, m_sigma12, m_sigma21, m_sigma22;
00204   double m_sigma1,  m_sigma2,  m_sigma;
00205 
00206   double m_qch1, m_qch2, m_qch3, m_qch4;
00207   double m_adc1, m_adc2, m_adc3, m_adc4;
00208   double m_tdc1, m_tdc2, m_tdc3, m_tdc4;
00209 
00210   double m_ztdc1, m_ztdc2, m_zadc1, m_zadc2;
00211 
00212   double m_estime, m_tdiff1, m_tdiff2;
00213 
00214   int m_t0Stat;
00215 
00216   unsigned m_flag;
00217 
00218 };
00219 
00220 typedef std::vector<TofTrack*> TofTrackVec;
00221 
00222 #endif   // TOFTRACK_H

Generated on Tue Nov 29 23:14:11 2016 for BOSS_7.0.2 by  doxygen 1.4.7