Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

TofTrack Class Reference

#include <TofTrack.h>

List of all members.

Public Member Functions

double adc1 () const
double adc1 () const
double adc2 () const
double adc2 () const
double adc3 () const
double adc3 () const
double adc4 () const
double adc4 () const
unsigned int barrel () const
unsigned int barrel () const
void buildRecTofTrack (RecTofTrack *track, int layerorend)
void buildRecTofTrack (RecTofTrack *track, int layerorend)
TofDatachooseTofData (std::vector< TofData * > tofDataVec, double zrhit)
TofDatachooseTofData (std::vector< TofData * > tofDataVec, double zrhit)
TofDatacompareTofData (TofData *tofData1, TofData *tofData2, double zrhit)
TofDatacompareTofData (TofData *tofData1, TofData *tofData2, double zrhit)
void convert2RecBTofCalHitCol (int runNumber, int eventNumber, RecBTofCalHitCol *btofCalHitCol, std::string calibData)
void convert2RecBTofCalHitCol (int runNumber, int eventNumber, RecBTofCalHitCol *btofCalHitCol, std::string calibData)
void convert2RecETofCalHitCol (int runNumber, int eventNumber, RecETofCalHitCol *etofCalHitCol, std::string calibData)
void convert2RecETofCalHitCol (int runNumber, int eventNumber, RecETofCalHitCol *etofCalHitCol, std::string calibData)
void convert2RecTofTrackCol (RecTofTrackCol *recTofTrackCol)
void convert2RecTofTrackCol (RecTofTrackCol *recTofTrackCol)
double errzr1 (unsigned int i) const
double errzr1 () const
double errzr1 (unsigned int i) const
double errzr1 () const
double errzr2 (unsigned int i) const
double errzr2 () const
double errzr2 (unsigned int i) const
double errzr2 () const
double estime () const
double estime () const
void findTofData (std::vector< TofData * > tofDataVec1, std::vector< TofData * > tofDataVec2, double zrhit, unsigned int iflag)
void findTofData (std::vector< TofData * > tofDataVec1, std::vector< TofData * > tofDataVec2, double zrhit, unsigned int iflag)
unsigned int flag () const
unsigned int flag () const
void getTofData (TofData *tof, unsigned int iflag)
void getTofData (TofData *tof, unsigned int iflag)
ExtTrackCase hitCase () const
ExtTrackCase hitCase () const
int id1 () const
int id1 () const
int id2 () const
int id2 () const
bool isNoHit () const
bool isNoHit () const
int kal (unsigned int i) const
int kal (unsigned int i) const
void match (bool forCalibration, std::vector< int > deadId)
void match (bool forCalibration, std::vector< int > deadId)
double p () const
double p () const
double path () const
double path () const
double path1 () const
double path1 () const
double path2 () const
double path2 () const
double ph () const
double ph () const
double ph1 () const
double ph1 () const
double ph11 () const
double ph11 () const
double ph12 () const
double ph12 () const
double ph2 () const
double ph2 () const
double ph21 () const
double ph21 () const
double ph22 () const
double ph22 () const
double phi1 () const
double phi1 () const
double phi2 () const
double phi2 () const
unsigned int quality () const
unsigned int quality () const
unsigned int quality1 () const
unsigned int quality1 () const
unsigned int quality2 () const
unsigned int quality2 () const
void qualityAnalysis ()
void qualityAnalysis ()
void setCalibration (double t0, int t0Stat)
void setCalibration (double t0, int t0Stat)
void setExtTrack (RecExtTrack *extTrack, int kal[5])
void setExtTrack (RecExtTrack *extTrack, int kal[5])
void setFlag (unsigned int flag)
void setFlag (unsigned int flag)
void setQuality (int qual)
void setQuality (int qual)
void setRecTofTrack (RecTofTrack *track, int layerorend)
void setRecTofTrack (RecTofTrack *track, int layerorend)
void setTofData (TofDataMap tofDataMap)
void setTofData (TofDataMap tofDataMap)
int size1 () const
int size1 () const
int size2 () const
int size2 () const
int size3 () const
int size3 () const
int size4 () const
int size4 () const
int t0Stat () const
int t0Stat () const
double tdc1 () const
double tdc1 () const
double tdc2 () const
double tdc2 () const
double tdc3 () const
double tdc3 () const
double tdc4 () const
double tdc4 () const
double tdiff1 () const
double tdiff1 () const
double tdiff2 () const
double tdiff2 () const
double texp (unsigned int i) const
double texp (unsigned int i) const
double texpInner (unsigned int i) const
double texpInner (unsigned int i) const
double texpOuter (unsigned int i) const
double texpOuter (unsigned int i) const
double theta1 () const
double theta1 () const
double theta2 () const
double theta2 () const
double tof (unsigned int i) const
double tof (unsigned int i) const
double tof1 (unsigned int i) const
double tof1 (unsigned int i) const
double tof11 (unsigned int i) const
double tof11 (unsigned int i) const
double tof12 (unsigned int i) const
double tof12 (unsigned int i) const
double tof2 (unsigned int i) const
double tof2 (unsigned int i) const
double tof21 (unsigned int i) const
double tof21 (unsigned int i) const
double tof22 (unsigned int i) const
double tof22 (unsigned int i) const
std::vector< TofData * > tofData1 () const
std::vector< TofData * > tofData1 () const
std::vector< TofData * > tofData2 () const
std::vector< TofData * > tofData2 () const
void tofDataAnalysis (TofData *tof, unsigned int iflag)
void tofDataAnalysis (TofData *tof, unsigned int iflag)
void tofDataStudy ()
void tofDataStudy ()
int tofId1 () const
int tofId1 () const
int tofId2 () const
int tofId2 () const
 TofTrack ()
 TofTrack ()
int tofTrackId () const
int tofTrackId () const
int trackId () const
int trackId () const
double zadc1 () const
double zadc1 () const
double zadc2 () const
double zadc2 () const
double zrhit1 (unsigned int i) const
double zrhit1 () const
double zrhit1 (unsigned int i) const
double zrhit1 () const
double zrhit2 (unsigned int i) const
double zrhit2 () const
double zrhit2 (unsigned int i) const
double zrhit2 () const
double ztdc1 () const
double ztdc1 () const
double ztdc2 () const
double ztdc2 () const
 ~TofTrack ()
 ~TofTrack ()

Private Attributes

double m_adc1
double m_adc2
double m_adc3
double m_adc4
unsigned int m_barrel
double m_errzr1
double m_errzr2
double m_estime
double m_ezr1 [5]
double m_ezr2 [5]
unsigned m_flag
ExtTrackCase m_hitCase
int m_id1
int m_id2
int m_kal [5]
double m_momentum
double m_path
double m_path1
double m_path2
double m_ph
double m_ph1
double m_ph11
double m_ph12
double m_ph2
double m_ph21
double m_ph22
double m_phi1
double m_phi2
unsigned int m_quality
unsigned int m_quality1
unsigned int m_quality2
double m_sigma
double m_sigma1
double m_sigma11
double m_sigma12
double m_sigma2
double m_sigma21
double m_sigma22
int m_t0Stat
double m_tdc1
double m_tdc2
double m_tdc3
double m_tdc4
double m_tdiff1
double m_tdiff2
double m_texp [5]
double m_texpInner [5]
double m_texpOuter [5]
double m_theta1
double m_theta2
double m_tof [5]
double m_tof1 [5]
double m_tof11 [5]
double m_tof12 [5]
double m_tof2 [5]
double m_tof21 [5]
double m_tof22 [5]
std::vector< TofData * > m_tofData1
std::vector< TofData * > m_tofData1
std::vector< TofData * > m_tofData2
std::vector< TofData * > m_tofData2
std::vector< TofData * > m_tofData3
std::vector< TofData * > m_tofData3
std::vector< TofData * > m_tofData4
std::vector< TofData * > m_tofData4
int m_tofId1
int m_tofId2
int m_tofTrackId
int m_trackId
double m_zadc1
double m_zadc2
double m_zr1 [5]
double m_zr2 [5]
double m_zrhit1
double m_zrhit2
double m_ztdc1
double m_ztdc2


Constructor & Destructor Documentation

TofTrack::TofTrack  ) 
 

00014                    {
00015   m_trackId = -1;
00016   m_tofTrackId = -1;
00017   m_id1 = -99;
00018   m_id2 = -99;
00019   m_hitCase = NoHit;
00020   m_momentum = -99.0;
00021   m_path  = 0.0;
00022   m_path1 = 0.0;
00023   m_path2 = 0.0;
00024   m_zrhit1 = 9999.0;
00025   m_errzr1 = 9999.0;
00026   m_zrhit2 = 9999.0;
00027   m_errzr2 = 9999.0;
00028   for( unsigned int i=0; i<5; i++ ) {
00029     m_kal[i]  = -1;
00030     m_zr1[i]  = 9999.0;
00031     m_zr2[i]  = 9999.0;
00032     m_ezr1[i] = 9999.0;
00033     m_ezr2[i] = 9999.0;
00034   }
00035   if( m_tofData1.size()>0 ) {
00036     std::vector<TofData*>::iterator iter1 = m_tofData1.begin();
00037     m_tofData1.clear();
00038   }
00039   if( m_tofData2.size()>0 ) {
00040     std::vector<TofData*>::iterator iter2 = m_tofData2.begin();
00041     m_tofData2.clear();
00042   }
00043   if( m_tofData3.size()>0 ) {
00044     std::vector<TofData*>::iterator iter3 = m_tofData3.begin();
00045     m_tofData3.clear();
00046   }
00047   if( m_tofData4.size()>0 ) {
00048     std::vector<TofData*>::iterator iter4 = m_tofData4.begin();
00049     m_tofData4.clear();
00050   }
00051   m_quality1 = 0;
00052   m_quality2 = 0;
00053   m_quality  = 10;
00054 
00055   m_tofId1 = -99;
00056   m_tofId2 = -99;
00057 
00058   m_ph11  = -999.0;
00059   m_ph12  = -999.0;
00060   m_ph21  = -999.0;
00061   m_ph22  = -999.0;
00062   m_ph1   = -999.0;
00063   m_ph2   = -999.0;
00064   m_ph    = -999.0;
00065 
00066   for( unsigned int i=0; i<5; i++ ) {
00067     m_tof11[i]  = 0.0;
00068     m_tof12[i]  = 0.0;
00069     m_tof21[i]  = 0.0;
00070     m_tof22[i]  = 0.0;
00071     m_tof1[i]   = 0.0;
00072     m_tof2[i]   = 0.0;
00073     m_tof[i]    = 0.0;
00074   }
00075 
00076   m_sigma11 = -999.0;
00077   m_sigma12 = -999.0;
00078   m_sigma21 = -999.0;
00079   m_sigma22 = -999.0;
00080   m_sigma1  = -999.0;
00081   m_sigma2  = -999.0;
00082   m_sigma   = -999.0;
00083 
00084   m_adc1  = -999.0;
00085   m_adc2  = -999.0;
00086   m_adc3  = -999.0;
00087   m_adc4  = -999.0;
00088   m_tdc1  = -999.0;
00089   m_tdc2  = -999.0;
00090   m_tdc3  = -999.0;
00091   m_tdc4  = -999.0;
00092 
00093   for( unsigned int i=0; i<5; i++ ) {
00094     m_texpInner[i] = -999.0;
00095     m_texpOuter[i] = -999.0;
00096     m_texp[i] = -999.0;
00097   }
00098 
00099   m_ztdc1 = -999.0;
00100   m_ztdc2 = -999.0;
00101   m_zadc1 = -999.0;
00102   m_zadc2 = -999.0;
00103 
00104   m_estime = -999.0;
00105   m_tdiff1  = -999.0;
00106   m_tdiff2  = -999.0;
00107 
00108   m_flag  = 0;
00109 
00110   return;
00111 }

TofTrack::~TofTrack  ) 
 

00114                     {
00115   if( m_tofData1.size()>0 ) {
00116     std::vector<TofData*>::iterator iter1 = m_tofData1.begin();
00117     m_tofData1.clear();
00118   }
00119   if( m_tofData2.size()>0 ) {
00120     std::vector<TofData*>::iterator iter2 = m_tofData2.begin();
00121     m_tofData2.clear();
00122   }
00123   if( m_tofData3.size()>0 ) {
00124     std::vector<TofData*>::iterator iter3 = m_tofData3.begin();
00125     m_tofData3.clear();
00126   }
00127   if( m_tofData4.size()>0 ) {
00128     std::vector<TofData*>::iterator iter4 = m_tofData4.begin();
00129     m_tofData4.clear();
00130   }
00131   return;
00132 }

TofTrack::TofTrack  ) 
 

TofTrack::~TofTrack  ) 
 


Member Function Documentation

double TofTrack::adc1  )  const [inline]
 

00077 { return  m_adc1;       }

double TofTrack::adc1  )  const [inline]
 

00077 { return  m_adc1;       }

double TofTrack::adc2  )  const [inline]
 

00078 { return  m_adc2;       }

double TofTrack::adc2  )  const [inline]
 

00078 { return  m_adc2;       }

double TofTrack::adc3  )  const [inline]
 

00079 { return  m_adc3;       }

double TofTrack::adc3  )  const [inline]
 

00079 { return  m_adc3;       }

double TofTrack::adc4  )  const [inline]
 

00080 { return  m_adc4;       }

double TofTrack::adc4  )  const [inline]
 

00080 { return  m_adc4;       }

unsigned int TofTrack::barrel  )  const [inline]
 

00029 { return  m_barrel;     }

unsigned int TofTrack::barrel  )  const [inline]
 

00029 { return  m_barrel;     }

void TofTrack::buildRecTofTrack RecTofTrack track,
int  layerorend
 

void TofTrack::buildRecTofTrack RecTofTrack track,
int  layerorend
 

01178                                                                     {
01179 
01180   track->setTofTrackID( m_tofTrackId );
01181   track->setTrackID( m_trackId );
01182 
01183   track->setErrTof( 0.0 );
01184   track->setBeta( 0.0 );
01185 
01186   double sigma[6];
01187   for( int i=0; i<6; i++ ) {
01188     sigma[i]   = 0.0;
01189   }
01190   track->setSigma( sigma );
01191   track->setQuality( m_quality );
01192   track->setT0( m_estime );
01193   track->setErrT0( 0.0 );
01194   track->setPhi( 9999.0 );
01195   track->setErrPhi( 9999.0 );
01196   track->setEnergy( 9999.0 );
01197   track->setErrEnergy( 9999.0 );
01198 
01199   if( ( layerorend == 11 ) || ( layerorend == 12 ) || ( layerorend == 1 ) ) {
01200     track->setTofID( m_tofId1 );
01201     track->setPath( m_path1 );
01202     track->setZrHit( m_zrhit1 );
01203     track->setErrZ( m_errzr1 );
01204     track->setTexp( m_texpInner );
01205 
01206     setRecTofTrack( track, layerorend );
01207   }
01208 
01209   if( ( layerorend==21 ) || ( layerorend==22 ) || ( layerorend==2 ) ) {
01210     track->setTofID( m_tofId2 );
01211     track->setPath( m_path2 );
01212     track->setZrHit( m_zrhit2 );
01213     track->setErrZ( m_errzr2 );
01214     track->setTexp( m_texpOuter );
01215 
01216     setRecTofTrack( track, layerorend );
01217   }
01218 
01219   if( layerorend==0 ) {
01220     track->setTofID( m_tofId1 );
01221     track->setPath( m_path2 );
01222     track->setZrHit( m_zrhit2 );
01223     track->setErrZ( m_errzr2 );
01224     track->setTexp( m_texp );
01225 
01226     setRecTofTrack( track, layerorend );
01227   }
01228 
01229   if( layerorend == 3 ) {
01230     track->setTofID( m_id1 );
01231     track->setPath( m_path1 );
01232     track->setZrHit( m_zrhit1 );
01233     track->setErrZ( m_errzr1 );
01234     track->setTexp( m_texpInner );
01235   }
01236 
01237   return;
01238 }

TofData* TofTrack::chooseTofData std::vector< TofData * >  tofDataVec,
double  zrhit
 

TofData * TofTrack::chooseTofData std::vector< TofData * >  tofDataVec,
double  zrhit
 

00676                                                                                {
00677   if( tofDataVec.size() == 0 ) {
00678     cout << "TofRec::TofTrack::ChooseTofData: Size of TofData Vector is Zero!" << endl;
00679     return 0;
00680   }
00681   std::vector<TofData*>::iterator igood = tofDataVec.begin();
00682   if( tofDataVec.size() > 1 ) {
00683     double deltaZ = 1000.0;
00684     std::vector<TofData*>::iterator iter  = tofDataVec.begin();
00685     // ZTDC compare
00686     for( ; iter != tofDataVec.end(); iter++ ) {
00687       if( ( (*iter)->quality() & 0x5 ) == 0x5 ) {
00688         if( abs( (*iter)->ztdc() - zrhit ) < deltaZ ) {
00689           deltaZ = abs( (*iter)->ztdc() - zrhit );
00690           igood = iter;
00691         }
00692       }
00693     }
00694     // ZADC compare
00695     if( deltaZ > 999.0 ) {
00696       iter  = tofDataVec.begin();
00697       for( ; iter != tofDataVec.end(); iter++ ) {
00698         if( ( (*iter)->quality() & 0xa ) == 0xa ) {
00699           if( abs( (*iter)->zadc() - zrhit ) < deltaZ ) {
00700             deltaZ = abs( (*iter)->zadc() - zrhit );
00701             igood = iter;
00702           }
00703         }
00704       }
00705     }
00706     // Max Q
00707     if( deltaZ > 999.0 ) {
00708       unsigned int ibad = 0xf0;
00709       iter  = tofDataVec.begin();
00710       for( ; iter != tofDataVec.end(); iter++ ) {
00711         if( ( (*iter)->quality() & 0xf0 ) < ibad ) {
00712           igood = iter;
00713           ibad = ( (*iter)->quality() & 0xf0 );
00714         }
00715         else if( ( (*iter)->quality() & 0xf0 ) == ibad ) {
00716           if( ( (*iter)->adc1() + (*iter)->adc2() ) > ( (*igood)->adc1() + (*igood)->adc2() ) ) {
00717             igood = iter;
00718             ibad = ( (*iter)->quality() & 0xf0 );
00719           }
00720         }
00721       }
00722     }
00723   }
00724 
00725   return (*igood);
00726 }

TofData* TofTrack::compareTofData TofData tofData1,
TofData tofData2,
double  zrhit
 

TofData * TofTrack::compareTofData TofData tofData1,
TofData tofData2,
double  zrhit
 

00733                                                                                       {
00734   TofData* tof = tofData1;
00735   // ZTDC compare
00736   //  cout << "ztdc=" << tofData1->ztdc() << " ztdc2=" << tofData2->ztdc()  << " zadc1=" << tofData1->zadc() << " zadc2=" << tofData2->zadc() << endl;
00737   if( abs(tofData1->ztdc() - zrhit ) > abs(tofData2->ztdc() - zrhit ) ) {
00738     // ZADC compare
00739     //sunss    if( abs(tofData1->zadc() - zrhit ) > abs(tofData2->zadc() - zrhit ) ) {
00740       // SingleEnd/NoT/NoQ compare
00741       if( ( tofData1->quality() & 0xf0 ) >= ( tofData1->quality() & 0xf0 ) ) {
00742         // QDC compare
00743         if( ( tofData1->adc1() + tofData1->adc2() ) < ( tofData2->adc1() + tofData2->adc2() ) ) {
00744           tof = tofData2;
00745         }
00746       }
00747       //    }
00748   }
00749 
00750   return tof;
00751 }

void TofTrack::convert2RecBTofCalHitCol int  runNumber,
int  eventNumber,
RecBTofCalHitCol btofCalHitCol,
std::string  calibData
 

void TofTrack::convert2RecBTofCalHitCol int  runNumber,
int  eventNumber,
RecBTofCalHitCol btofCalHitCol,
std::string  calibData
 

01325                                                                                                                               {
01326 
01327   if( ( m_quality1 & 0x800 ) == 0x800 ) {
01328 
01329     RecBTofCalHit* ahit = new RecBTofCalHit;
01330     ahit->setRun( runNumber );
01331     ahit->setEvent( eventNumber );
01332     ahit->setMod( m_tofId1 );
01333     ahit->setQual( m_hitCase );
01334 
01335     for( int i=0; i<5; i++ ) {
01336       ahit->setTpred( i, m_texpInner[i] );
01337     }
01338     if( calibData == "Dimu" ) {
01339       ahit->setTpred( m_texpInner[1] );
01340       ahit->setZHit( m_zr1[1] );
01341       ahit->setdZHit( m_ezr1[1] );
01342     }
01343     else {
01344       ahit->setTpred( m_texpInner[0] );
01345       ahit->setZHit( m_zr1[0] );
01346       ahit->setdZHit( m_ezr1[0] );
01347     }
01348     
01349     ahit->setTdc1( m_tdc1-m_estime );
01350     ahit->setTdc2( m_tdc2-m_estime );
01351     ahit->setAdc1( m_adc1 );
01352     ahit->setAdc2( m_adc2 );
01353     //  ahit->setZHit( m_zrhit1 );
01354     //  ahit->setdZHit( m_errzr1 );
01355     ahit->setsinTheta( m_theta1 );
01356     ahit->setP( m_momentum );
01357     ahit->setQ( m_ph1 );
01358     ahit->setPath( m_path1 );
01359 
01360     btofCalHitCol->push_back( ahit );
01361 
01362     if( ( m_quality2 & 0x800 ) == 0x800 ) {
01363 
01364       RecBTofCalHit* bhit = new RecBTofCalHit;
01365       bhit->setRun( runNumber );
01366       bhit->setEvent( eventNumber );
01367       bhit->setMod( m_tofId2 );
01368       bhit->setQual( m_hitCase );
01369       
01370       for( int i=0; i<5; i++ ) {
01371         bhit->setTpred( i, m_texpOuter[i] );
01372       }
01373       if( calibData == "Dimu" ) {
01374         bhit->setTpred( m_texpOuter[1] );
01375         bhit->setZHit( m_zr2[1] );
01376         bhit->setdZHit( m_ezr2[1] );
01377       }
01378       else {
01379         bhit->setTpred( m_texpOuter[0] );
01380         bhit->setZHit( m_zr2[0] );
01381         bhit->setdZHit( m_ezr2[0] );
01382       }
01383 
01384       bhit->setTdc1( m_tdc3-m_estime );
01385       bhit->setTdc2( m_tdc4-m_estime );
01386       bhit->setAdc1( m_adc3 );
01387       bhit->setAdc2( m_adc4 );
01388       //  bhit->setZHit( m_zrhit2 );
01389       //  bhit->setdZHit( m_errzr2 );
01390       bhit->setsinTheta( m_theta2 );
01391       bhit->setP( m_momentum );
01392       bhit->setQ( m_ph2 );
01393       bhit->setPath( m_path2 );
01394 
01395       ahit->setnext(bhit);
01396 
01397       btofCalHitCol->push_back( bhit );
01398 
01399     }
01400   }
01401 
01402   return;
01403 }

void TofTrack::convert2RecETofCalHitCol int  runNumber,
int  eventNumber,
RecETofCalHitCol etofCalHitCol,
std::string  calibData
 

void TofTrack::convert2RecETofCalHitCol int  runNumber,
int  eventNumber,
RecETofCalHitCol etofCalHitCol,
std::string  calibData
 

01406                                                                                                                               {
01407 
01408   if( ( m_quality1 & 0x800 ) != 0x800 ) return;
01409 
01410   RecETofCalHit* chit = new RecETofCalHit;
01411   chit->setRun( runNumber );
01412   chit->setEvent( eventNumber );
01413   chit->setMod( m_tofId1 );
01414   chit->setQual( m_hitCase );
01415 
01416   for( int i=0; i<5; i++ ) {
01417     chit->setTpred( i, m_texpInner[i] );
01418   }
01419   if( calibData == "Dimu" ) {
01420     chit->setTpred( m_texpInner[1] );
01421     chit->setRHit( m_zr1[1] );
01422     chit->setdRHit( m_ezr1[1] );
01423   }
01424   else {
01425     chit->setTpred( m_texpInner[0] );
01426     chit->setRHit( m_zr1[0] );
01427     chit->setdRHit( m_ezr1[0] );
01428   }
01429 
01430   chit->setTdc( m_tdc1-m_estime );
01431   chit->setAdc( m_adc1 );
01432   //  chit->setRHit( m_zrhit1 );
01433   //  chit->setdRHit( m_errzr1 );
01434   chit->setcosTheta( m_theta1 );
01435   chit->setQ( m_ph1 );
01436   chit->setP( m_momentum );
01437   chit->setPath( m_path1 );
01438 
01439   etofCalHitCol->push_back( chit );
01440 
01441   return;
01442 }

void TofTrack::convert2RecTofTrackCol RecTofTrackCol recTofTrackCol  ) 
 

void TofTrack::convert2RecTofTrackCol RecTofTrackCol recTofTrackCol  ) 
 

00964                                                                       {
00965 
00966   bool barrel = ( ( m_hitCase == InnerLayer ) || ( m_hitCase == OuterLayer ) || ( m_hitCase == DoubleLayer ) );
00967 
00968   bool innerEast = ( ( m_quality1 & 0xc ) == 0xc );
00969   bool innerWest = ( ( m_quality1 & 0x3 ) == 0x3 );
00970   bool outerEast = ( ( m_quality2 & 0xc ) == 0xc );
00971   bool outerWest = ( ( m_quality2 & 0x3 ) == 0x3 );
00972 
00973   if( barrel ) {
00974 
00975     if( innerEast ) {
00976       RecTofTrack* atrack11 = new RecTofTrack;
00977       buildRecTofTrack( atrack11, 11 );            // innerlayer east readout
00978       TofHitStatus* hitStatus11 = new TofHitStatus;
00979       if( innerWest ) {
00980         hitStatus11->setBarrelReadout( 1, true );  // innerlayer east readout
00981       }
00982       else {
00983         if( m_hitCase == InnerLayer ) {
00984           hitStatus11->setBarrelCluster( 11 );     // innerlayer east cluster
00985         }
00986         else if( m_hitCase == DoubleLayer ) {
00987           if( outerEast && outerWest ) {
00988             hitStatus11->setBarrelCounter( 11 );   // innerlayer east counter
00989           }
00990           else {
00991             hitStatus11->setBarrelCluster( 11 );   // innerlayer east cluster
00992           }
00993         }
00994         else {
00995           cout << "TofRec::TofTrack:convert2RecTofTrackCol: 11- Impossible!" << endl;
00996         }
00997       }
00998       atrack11->setStatus( hitStatus11->value() );
00999       delete hitStatus11;
01000       recTofTrackCol->push_back( atrack11 );
01001     }
01002 
01003     if( innerWest ) {
01004       RecTofTrack* atrack12 = new RecTofTrack;
01005       buildRecTofTrack( atrack12, 12 );            // innerlayer west readout
01006       TofHitStatus* hitStatus12 = new TofHitStatus;
01007       if( innerEast ) {
01008         hitStatus12->setBarrelReadout( 1, false ); // innerlayer west
01009       }
01010       else {
01011         if( m_hitCase == InnerLayer ) {
01012           hitStatus12->setBarrelCluster( 12 );     // innerlayer west cluster
01013         }
01014         else if( m_hitCase == DoubleLayer ) {
01015           if( outerEast && outerWest ) {
01016             hitStatus12->setBarrelCounter( 12 );   // innerlayer west counter
01017           }
01018           else {
01019             hitStatus12->setBarrelCluster( 12 );   // innerlayer west cluster
01020           }
01021         }
01022         else {
01023           cout << "TofRec::TofTrack:convert2RecTofTrackCol: 12- Impossible!" << endl;
01024         }
01025       }
01026       atrack12->setStatus( hitStatus12->value() );
01027       delete hitStatus12;
01028       recTofTrackCol->push_back( atrack12 );
01029     }
01030 
01031     if( innerEast && innerWest ) {
01032       RecTofTrack* atrack1  = new RecTofTrack;
01033       buildRecTofTrack( atrack1, 1 );             // innerlayer counter
01034       TofHitStatus* hitStatus1 = new TofHitStatus;
01035       if( m_hitCase == InnerLayer ) {
01036         hitStatus1->setBarrelCluster( 1 );        // innerlayer cluster and counter
01037       }
01038       else if( m_hitCase == DoubleLayer ) {
01039         if( outerEast && outerWest ) {
01040           hitStatus1->setBarrelCounter( 1 );      // innerlayer counter
01041         }
01042         else {
01043           hitStatus1->setBarrelCluster( 1 );      // innerlayer cluster and counter
01044         }
01045       }
01046       else {
01047         cout << "TofRec::TofTrack:convert2RecTofTrackCol: 1- Impossible!" << endl;
01048       }
01049       atrack1->setStatus( hitStatus1->value() );
01050       delete hitStatus1;
01051       recTofTrackCol->push_back( atrack1 );
01052     }
01053 
01054     if( outerEast ) {
01055       RecTofTrack* atrack21 = new RecTofTrack;
01056       buildRecTofTrack( atrack21, 21 );           // outerlayer east readout
01057       TofHitStatus* hitStatus21 = new TofHitStatus;
01058       if( outerWest ) {
01059         hitStatus21->setBarrelReadout( 2, true ); // outerlayer east readout
01060       }
01061       else {
01062         if( m_hitCase == OuterLayer ) {
01063           hitStatus21->setBarrelCluster( 21 );    // outerlayer east cluster
01064         }
01065         else if( m_hitCase == DoubleLayer ) {
01066           if( innerEast || innerWest ) {
01067             hitStatus21->setBarrelCounter( 21 );  // outerlayer east counter
01068           }
01069           //      else {
01070           //        hitStatus21->setBarrelCluster( 21 );  // outerlayer east cluster
01071           //      }
01072         }
01073         else {
01074           cout << "TofRec::TofTrack:convert2RecTofTrackCol: 21- Impossible!" << endl;
01075         }
01076       }
01077       atrack21->setStatus( hitStatus21->value() );
01078       delete hitStatus21;
01079       recTofTrackCol->push_back( atrack21 );
01080     }
01081 
01082     if( outerWest ) {
01083       RecTofTrack* atrack22 = new RecTofTrack;
01084       buildRecTofTrack( atrack22, 22 );            // outerlayer west readout
01085       TofHitStatus* hitStatus22 = new TofHitStatus;
01086       if( outerEast ) {
01087         hitStatus22->setBarrelReadout( 2, false ); // outerlayer west readout
01088       }
01089       else {
01090         if( m_hitCase == OuterLayer ) {
01091           hitStatus22->setBarrelCluster( 22 );     // outerlayer west cluster
01092         }
01093         else if( m_hitCase == DoubleLayer ) {
01094           if( innerEast || innerWest ) {
01095             hitStatus22->setBarrelCounter( 22 );   // outerlayer west counter
01096           }
01097           //      else {
01098           //        hitStatus22->setBarrelCluster( 22 );   // outerlayer west cluster
01099           //      }
01100         }
01101         else {
01102           cout << "TofRec::TofTrack:convert2RecTofTrackCol: 22- Impossible!" << endl;
01103         }
01104       }
01105       atrack22->setStatus( hitStatus22->value() );
01106       delete hitStatus22;
01107       recTofTrackCol->push_back( atrack22 );
01108     }
01109 
01110     if( outerEast && outerWest ) {
01111       RecTofTrack* atrack2  = new RecTofTrack;
01112       buildRecTofTrack( atrack2, 2 );             // outerlayer counter
01113       TofHitStatus* hitStatus2 = new TofHitStatus;
01114       if( m_hitCase == OuterLayer ) {
01115         hitStatus2->setBarrelCluster( 2 );        // outerlayer cluster and counter
01116       }
01117       else if( m_hitCase == DoubleLayer ) {
01118         if( innerEast && innerWest ) {
01119           hitStatus2->setBarrelCounter( 2 );      // outerlayer counter
01120         }
01121         else {
01122           hitStatus2->setBarrelCluster( 2 );      // outerlayer cluster and counter
01123         }
01124       }
01125       else {
01126         cout << "TofRec::TofTrack:convert2RecTofTrackCol: 2- Impossible!" << endl;
01127       }
01128       atrack2->setStatus( hitStatus2->value() );
01129       delete hitStatus2;
01130       recTofTrackCol->push_back( atrack2 );
01131     }
01132 
01133     if( innerEast && innerWest && outerEast && outerWest ) {
01134       RecTofTrack* atrack  = new RecTofTrack;
01135       buildRecTofTrack( atrack, 0 );              // doublelayer cluster
01136       TofHitStatus* hitStatus = new TofHitStatus;
01137       hitStatus->setBarrelCluster( 3 );           // doublelayer cluster
01138       atrack->setStatus( hitStatus->value() );
01139       delete hitStatus;
01140       recTofTrackCol->push_back( atrack );
01141     }
01142 
01143   }
01144 
01145   if( ( m_hitCase == EastEndcap ) || ( m_hitCase == WestEndcap ) ) {
01146     RecTofTrack* atrack = new RecTofTrack;
01147     buildRecTofTrack( atrack, 11 );               // eastendcap counter
01148     TofHitStatus* hitStatus = new TofHitStatus;
01149     if( m_hitCase == EastEndcap ) {
01150       hitStatus->setEndcapCluster( true );        // east endcap cluster counter readout
01151     }
01152     else if( m_hitCase == WestEndcap ) {
01153       hitStatus->setEndcapCluster( false );       // west endcap cluster counter readout
01154     }
01155     else {
01156       cout << "TofRec::TofTrack:convert2RecTofTrackCol: endcap- Impossible!" << endl;
01157     }
01158     atrack->setStatus( hitStatus->value() );
01159     delete hitStatus;
01160     recTofTrackCol->push_back( atrack );
01161   }
01162 
01163   if( m_hitCase == NoHit ) {
01164     RecTofTrack* atrack = new RecTofTrack;
01165     buildRecTofTrack( atrack, 3 );            // no hit
01166     TofHitStatus* hitStatus = new TofHitStatus;
01167     hitStatus->setNoHit();                    // no hit
01168     atrack->setStatus( hitStatus->value() );
01169     delete hitStatus;
01170     recTofTrackCol->push_back( atrack );
01171   }
01172 
01173   return;
01174 }

double TofTrack::errzr1 unsigned int  i  )  const [inline]
 

00042 { return  m_ezr1[i];    }

double TofTrack::errzr1  )  const [inline]
 

00037 { return  m_errzr1;     }

double TofTrack::errzr1 unsigned int  i  )  const [inline]
 

00042 { return  m_ezr1[i];    }

double TofTrack::errzr1  )  const [inline]
 

00037 { return  m_errzr1;     }

double TofTrack::errzr2 unsigned int  i  )  const [inline]
 

00043 { return  m_ezr2[i];    }

double TofTrack::errzr2  )  const [inline]
 

00038 { return  m_errzr2;     }

double TofTrack::errzr2 unsigned int  i  )  const [inline]
 

00043 { return  m_ezr2[i];    }

double TofTrack::errzr2  )  const [inline]
 

00038 { return  m_errzr2;     }

double TofTrack::estime  )  const [inline]
 

00095 { return  m_estime;     }

double TofTrack::estime  )  const [inline]
 

00095 { return  m_estime;     }

void TofTrack::findTofData std::vector< TofData * >  tofDataVec1,
std::vector< TofData * >  tofDataVec2,
double  zrhit,
unsigned int  iflag
 

void TofTrack::findTofData std::vector< TofData * >  tofDataVec1,
std::vector< TofData * >  tofDataVec2,
double  zrhit,
unsigned int  iflag
 

00560                                                                                                                                {
00561 
00562   unsigned int qual = 0xf;
00563   if( tofDataVec2.size() == 0 ) {
00564     if( tofDataVec1.size() == 0 ) {
00565       qual = 0;
00566     }
00567     else if( tofDataVec1.size() == 1 ) {
00568       std::vector<TofData*>::iterator iter1 = tofDataVec1.begin();
00569       getTofData( (*iter1), iflag );
00570       qual = 0x1;
00571     }
00572     else if( tofDataVec1.size() > 1 ) {
00573       getTofData( chooseTofData( tofDataVec1, zrhit ), iflag ); 
00574       qual = 0x2;
00575     }
00576     else {
00577       cout << "TofRec::TofTrack::findTofData: 1- Impossible!" << endl;
00578     }
00579   }
00580   else if( ( tofDataVec2.size() == 1 ) ) {
00581     if( tofDataVec1.size() == 0 ) {
00582       std::vector<TofData*>::iterator iter2 = tofDataVec2.begin();
00583       getTofData( (*iter2), iflag );
00584       qual = 0x4;
00585     }
00586     else if( tofDataVec1.size() == 1 ) {
00587       std::vector<TofData*>::iterator iter1 = tofDataVec1.begin();
00588       if( ( (*iter1)->quality() & 0x1ff ) == 0x01f ) {
00589         getTofData( (*iter1), iflag );
00590       }
00591       else {
00592         std::vector<TofData*>::iterator iter2 = tofDataVec2.begin();
00593         getTofData( compareTofData( (*iter1), (*iter2), zrhit ), iflag );
00594       }
00595       qual = 0x5;
00596     }
00597     else if( tofDataVec1.size() > 1 ) {
00598       TofData* tofData1 = chooseTofData( tofDataVec1, zrhit ); 
00599       if( ( tofData1->quality() & 0x1ff ) == 0x01f ) {
00600         getTofData( tofData1, iflag );
00601       }
00602       else {
00603         std::vector<TofData*>::iterator iter2 = tofDataVec2.begin();
00604         getTofData( compareTofData( tofData1, (*iter2), zrhit ), iflag );
00605       }
00606       qual = 0x6;
00607     }
00608     else {
00609       cout << "TofRec::TofTrack::findTofData: 2- Impossible!" << endl;
00610     }
00611   }
00612   else if( ( tofDataVec2.size() > 1 ) ) {
00613     if( tofDataVec1.size() == 0 ) {
00614       getTofData( chooseTofData( tofDataVec2, zrhit ), iflag ); 
00615       qual = 0x8;
00616     }
00617     else if( tofDataVec1.size() == 1 ) {
00618       std::vector<TofData*>::iterator iter1 = tofDataVec1.begin();
00619       if( ( (*iter1)->quality() & 0x1ff ) == 0x01f ) {
00620         getTofData( (*iter1), iflag );
00621       }
00622       else {
00623         TofData* tofData2 = chooseTofData( tofDataVec2, zrhit ); 
00624         getTofData( compareTofData( (*iter1), tofData2, zrhit ), iflag );
00625       }
00626       qual = 0x9;
00627     }
00628     else if( tofDataVec1.size() > 1 ) {
00629       TofData* tofData1 = chooseTofData( tofDataVec1, zrhit ); 
00630       if( ( tofData1->quality() & 0x1ff ) == 0x01f ) {
00631         getTofData( tofData1, iflag );
00632       }
00633       else {
00634         TofData* tofData2 = chooseTofData( tofDataVec2, zrhit ); 
00635         getTofData( compareTofData( tofData1, tofData2, zrhit ), iflag );
00636       }
00637       qual = 0xa;
00638     }
00639     else {
00640       cout << "TofRec::TofTrack::findTofData: 3- Impossible!" << endl;
00641     }
00642   }
00643 
00644   if( qual == 0 ) {
00645     if( ( iflag == 1 ) || ( iflag == 3 ) ) {
00646       m_quality1 = 0x300;
00647     }
00648     else if( iflag == 2 ) {
00649       m_quality2 = 0x300;
00650     }
00651     else {
00652       cout << "TofRec::TofTrack::findTofData: the 1- IFLAG is Out of Range!" << endl;
00653     }
00654   }
00655   else {
00656     qual = ( qual << 12 );
00657     if( ( iflag == 1 ) || ( iflag == 3 ) ) {
00658       m_quality1 = ( m_quality1 | qual );
00659     }
00660     else if( iflag == 2 ) {
00661       m_quality2 = ( m_quality2 | qual );
00662     }
00663     else {
00664       cout << "TofRec::TofTrack::findTofData: the 2- IFLAG is Out of Range!" << endl;
00665     }
00666   }
00667 
00668   return;
00669 }

unsigned int TofTrack::flag  )  const [inline]
 

00101 { return  m_flag;       }

unsigned int TofTrack::flag  )  const [inline]
 

00101 { return  m_flag;       }

void TofTrack::getTofData TofData tof,
unsigned int  iflag
 

void TofTrack::getTofData TofData tof,
unsigned int  iflag
 

00757                                                             {
00758   if( iflag == 1 ) { 
00759     m_tofId1   = tof->tofId();
00760     m_adc1     = tof->adc1();
00761     m_tdc1     = tof->tdc1();
00762     m_adc2     = tof->adc2();
00763     m_tdc2     = tof->tdc2();
00764     m_ztdc1    = tof->ztdc();
00765     m_zadc1    = tof->zadc();
00766     m_quality1 = tof->quality();
00767     if( ( ( tof->quality() & 0x5 ) != 0x5 ) || ( ( ( tof->quality() & 0x5 ) == 0x5 ) && ( abs( tof->ztdc() - m_zrhit1 ) > ztdc_Cut ) ) ) { 
00768       m_quality1 = ( m_quality1 | 0x100 );
00769     }
00770     if( ( ( tof->quality() & 0xa ) != 0xa ) || ( ( ( tof->quality() & 0xa ) == 0xa ) && ( abs( tof->zadc() - m_zrhit1 ) > zadc_Cut ) ) ) { 
00771       m_quality1 = ( m_quality1 | 0x200 );
00772     }
00773   }
00774   else if( iflag == 2 ) {
00775     m_tofId2   = tof->tofId();
00776     m_adc3     = tof->adc1();
00777     m_tdc3     = tof->tdc1();
00778     m_adc4     = tof->adc2();
00779     m_tdc4     = tof->tdc2();
00780     m_ztdc2    = tof->ztdc();
00781     m_zadc2    = tof->zadc();
00782     m_quality2 = tof->quality();
00783     if( ( ( tof->quality() & 0x5 ) != 0x5 ) || ( ( ( tof->quality() & 0x5 ) == 0x5 ) && ( abs( tof->ztdc() - m_zrhit2 ) > ztdc_Cut ) ) ) { 
00784       m_quality2 = ( m_quality2 | 0x100 );
00785     }
00786     if( ( ( tof->quality() & 0xa ) != 0xa ) || ( ( ( tof->quality() & 0xa ) == 0xa ) && ( abs( tof->zadc() - m_zrhit2 ) > zadc_Cut ) ) ) { 
00787       m_quality2 = ( m_quality2 | 0x200 );
00788     }
00789   }
00790   else if( iflag == 3 ) {
00791     m_tofId1   = tof->tofId();
00792     m_adc1     = tof->adc();
00793     m_tdc1     = tof->tdc();
00794     m_quality1 = tof->quality();
00795     m_quality1 = ( m_quality1 | 0x300 );
00796   }
00797   else {
00798     cout << "TofRec::TofTrack::setTofData: Flag which sign the Barrel/Endcap or Inner/Outer is wrong! Please check it!" << endl;
00799   }
00800   tof->setUsed();
00801   return;
00802 }

ExtTrackCase TofTrack::hitCase  )  const [inline]
 

00030 { return  m_hitCase;    }

ExtTrackCase TofTrack::hitCase  )  const [inline]
 

00030 { return  m_hitCase;    }

int TofTrack::id1  )  const [inline]
 

00027 { return  m_id1;        }

int TofTrack::id1  )  const [inline]
 

00027 { return  m_id1;        }

int TofTrack::id2  )  const [inline]
 

00028 { return  m_id2;        }

int TofTrack::id2  )  const [inline]
 

00028 { return  m_id2;        }

bool TofTrack::isNoHit  )  const [inline]
 

00104 { return  m_hitCase==NoHit; }

bool TofTrack::isNoHit  )  const [inline]
 

00104 { return  m_hitCase==NoHit; }

int TofTrack::kal unsigned int  i  )  const [inline]
 

00039 { return  m_kal[i];     }

int TofTrack::kal unsigned int  i  )  const [inline]
 

00039 { return  m_kal[i];     }

void TofTrack::match bool  forCalibration,
std::vector< int >  deadId
 

void TofTrack::match bool  forCalibration,
std::vector< int >  deadId
 

00444                                                                  {
00445 
00446   if( m_hitCase == NoHit ) return;
00447 
00448   if( m_hitCase == InnerLayer ) {
00449     findTofData( m_tofData1, m_tofData2, m_zrhit1, 1 );
00450     if( ( m_quality1 & 0x10 ) == 0 ) { m_hitCase = NoHit; }
00451   }
00452   else if( m_hitCase == OuterLayer ) {
00453     findTofData( m_tofData3, m_tofData4, m_zrhit2, 2 );
00454     if( ( m_quality2 & 0x10 ) == 0 ) { m_hitCase = NoHit; }
00455   }
00456   else if( m_hitCase == DoubleLayer ) {
00457     findTofData( m_tofData1, m_tofData2, m_zrhit1, 1 );
00458     if( ( m_quality1 & 0x10 ) == 0 ) { m_hitCase = OuterLayer; }
00459     findTofData( m_tofData3, m_tofData4, m_zrhit2, 2 );
00460     if( ( m_quality2 & 0x10 ) == 0 ) {
00461       if( m_hitCase == DoubleLayer ) {
00462         m_hitCase = InnerLayer;
00463       }
00464       else if( m_hitCase == OuterLayer ) {
00465         m_hitCase = NoHit;
00466       }
00467       else {
00468         cout << "TofRec::TofTrack::match: 2- Impossible!" << endl;
00469       }
00470     }
00471   }
00472   else if( ( m_hitCase == EastEndcap ) || ( m_hitCase == WestEndcap ) ) {
00473     findTofData( m_tofData1, m_tofData2, m_zrhit1, 3 );
00474   }
00475   else {
00476     cout << "TofRec::TofTrack::match: 1- Impossible!" << endl; 
00477   }
00478 
00479   if( forCalibration ) {
00480     // set Data Sample for Calibration, double layer, only one hit for counter, T and Q.
00481     if( m_hitCase == DoubleLayer ) {
00482       if( ( ( m_quality1 & 0xf ) == 0xf ) && ( ( m_quality2 & 0xf ) == 0xf ) ) {
00483         m_quality1 = ( m_quality1 | 0x800 );        // Calibration Sample
00484         m_quality2 = ( m_quality2 | 0x800 );        // Calibration Sample
00485       }
00486       else {
00487         std::vector<int>::iterator iter = deadId.begin();
00488         for( ; iter != deadId.end(); iter++ ) {
00489           Identifier iden = Identifier(*iter);
00490           int barrel = TofID::barrel_ec(iden);
00491           int layer  = TofID::layer(iden);
00492           int tofId  = TofID::phi_module(iden);
00493           int east   = TofID::end(iden);
00494           if( barrel == 1 ) {
00495             if( layer==0 ) {
00496               if( m_tofId1 == tofId ) {
00497                 if( ( m_quality2 & 0xf ) == 0xf ) {
00498                   if( ( ( east == 0 ) && ( ( m_quality1 & 0xf ) == 0x3 ) ) || ( ( east == 1 ) && ( ( m_quality1 & 0xf ) == 0xc ) ) ) {
00499                     m_quality1 = ( m_quality1 | 0x800 );
00500                     m_quality2 = ( m_quality2 | 0x800 );
00501 
00502                   }
00503                 }
00504               }
00505             }
00506             else if( layer == 1 ) {
00507               if( m_tofId2 == (tofId+88) ) {
00508                 if( ( m_quality1 & 0xf ) == 0xf ) {
00509                   if( ( ( east == 0 ) && ( ( m_quality2 & 0xf ) == 0x3 ) ) || ( ( east == 1 ) && ( ( m_quality2 & 0xf ) == 0xc ) ) ) {
00510                     m_quality1 = ( m_quality1 | 0x800 );
00511                     m_quality2 = ( m_quality2 | 0x800 );
00512                   }
00513                 }
00514               }
00515             }
00516           }
00517         }
00518       }
00519     }
00520     // set Data Sample for Calibration, only one hit for counter, T and Q.
00521     else if( m_hitCase == InnerLayer ) {
00522       if( ( m_quality1 & 0xf ) == 0xf ) {
00523         m_quality1 = ( m_quality1 | 0x800 );        // Calibration Sample
00524       }
00525       else {
00526         std::vector<int>::iterator iter = deadId.begin();
00527         for( ; iter != deadId.end(); iter++ ) {
00528           Identifier iden = Identifier(*iter);
00529           int barrel = TofID::barrel_ec(iden);
00530           int layer  = TofID::layer(iden);
00531           int tofId  = TofID::phi_module(iden);
00532           int east   = TofID::end(iden);
00533           if( barrel == 1 ) {
00534             if( layer==0 ) {
00535               if( m_tofId1 == tofId ) {
00536                 if( ( ( east == 0 ) && ( ( m_quality1 & 0xf ) == 0x3 ) ) || ( ( east == 1 ) && ( ( m_quality1 & 0xf ) == 0xc ) ) ) {
00537                   m_quality1 = ( m_quality1 | 0x800 );
00538                 }
00539               }
00540             }
00541           }
00542         }
00543       }
00544     }
00545 
00546     // set Data Sample for Calibration, only one hit for counter, T and Q.
00547     if( ( ( m_hitCase == EastEndcap ) || ( m_hitCase == WestEndcap ) ) && ( ( m_quality1 & 0xf ) == 0xc ) ) {
00548       m_quality1 = ( m_quality1 | 0x800 );        // Calibration Sample
00549     }
00550   }
00551 
00552   return;
00553 }

double TofTrack::p void   )  const [inline]
 

00031 { return  m_momentum;   }

double TofTrack::p  )  const [inline]
 

00031 { return  m_momentum;   }

double TofTrack::path  )  const [inline]
 

00032 { return  m_path;       }

double TofTrack::path  )  const [inline]
 

00032 { return  m_path;       }

double TofTrack::path1  )  const [inline]
 

00033 { return  m_path1;      }

double TofTrack::path1  )  const [inline]
 

00033 { return  m_path1;      }

double TofTrack::path2  )  const [inline]
 

00034 { return  m_path2;      }

double TofTrack::path2  )  const [inline]
 

00034 { return  m_path2;      }

double TofTrack::ph  )  const [inline]
 

00067 { return  m_ph;         }

double TofTrack::ph  )  const [inline]
 

00067 { return  m_ph;         }

double TofTrack::ph1  )  const [inline]
 

00065 { return  m_ph1;        }

double TofTrack::ph1  )  const [inline]
 

00065 { return  m_ph1;        }

double TofTrack::ph11  )  const [inline]
 

00061 { return  m_ph11;       }

double TofTrack::ph11  )  const [inline]
 

00061 { return  m_ph11;       }

double TofTrack::ph12  )  const [inline]
 

00062 { return  m_ph12;       }

double TofTrack::ph12  )  const [inline]
 

00062 { return  m_ph12;       }

double TofTrack::ph2  )  const [inline]
 

00066 { return  m_ph2;        }

double TofTrack::ph2  )  const [inline]
 

00066 { return  m_ph2;        }

double TofTrack::ph21  )  const [inline]
 

00063 { return  m_ph21;       }

double TofTrack::ph21  )  const [inline]
 

00063 { return  m_ph21;       }

double TofTrack::ph22  )  const [inline]
 

00064 { return  m_ph22;       }

double TofTrack::ph22  )  const [inline]
 

00064 { return  m_ph22;       }

double TofTrack::phi1  )  const [inline]
 

00052 { return  m_phi1;       }

double TofTrack::phi1  )  const [inline]
 

00052 { return  m_phi1;       }

double TofTrack::phi2  )  const [inline]
 

00053 { return  m_phi2;       }

double TofTrack::phi2  )  const [inline]
 

00053 { return  m_phi2;       }

unsigned int TofTrack::quality void   )  const [inline]
 

00056 { return  m_quality;    }

unsigned int TofTrack::quality  )  const [inline]
 

00056 { return  m_quality;    }

unsigned int TofTrack::quality1  )  const [inline]
 

00054 { return  m_quality1;   }

unsigned int TofTrack::quality1  )  const [inline]
 

00054 { return  m_quality1;   }

unsigned int TofTrack::quality2  )  const [inline]
 

00055 { return  m_quality2;   }

unsigned int TofTrack::quality2  )  const [inline]
 

00055 { return  m_quality2;   }

void TofTrack::qualityAnalysis  ) 
 

void TofTrack::qualityAnalysis  ) 
 

void TofTrack::setCalibration double  t0,
int  t0Stat
 

void TofTrack::setCalibration double  t0,
int  t0Stat
 

00810                                                      {
00811 
00812   m_estime = t0;
00813   m_t0Stat = t0Stat;
00814 
00815   bool barrel = ( ( m_hitCase == InnerLayer ) || ( m_hitCase == OuterLayer ) || ( m_hitCase == DoubleLayer ) );
00816   bool endcap = ( ( m_hitCase == EastEndcap ) || ( m_hitCase == WestEndcap ) );
00817 
00818   bool innerEast  = ( ( m_quality1 & 0xc ) == 0xc );
00819   bool innerWest  = ( ( m_quality1 & 0x3 ) == 0x3 );
00820   bool outerEast  = ( ( m_quality2 & 0xc ) == 0xc );
00821   bool outerWest  = ( ( m_quality2 & 0x3 ) == 0x3 );
00822   bool innerLayer = ( ( m_quality1 & 0xf ) == 0xf );
00823   bool outerLayer = ( ( m_quality2 & 0xf ) == 0xf );
00824 
00825   bool endcapData = ( ( m_quality1 & 0xc ) == 0xc );
00826 
00827   if( m_hitCase == DoubleLayer ) {
00828     for( unsigned int i=0; i<5; i++ ) {
00829       m_texp[i] = tofCaliSvc->BTimeCluster( m_texpInner[i], m_texpOuter[i], m_zr1[i], m_zr2[i], m_tofId1, m_tofId2 );
00830     }
00831     m_path    =  tofCaliSvc->BTimeCluster( m_path1, m_path2, m_zrhit1, m_zrhit2, m_tofId1, m_tofId2 );
00832   }
00833 
00834   if( barrel ) {
00835     if( innerEast ) {
00836       for( unsigned int i=0; i<5; i++ ) {
00837         m_tof11[i] = tofCaliSvc->BTime1( m_adc1, m_tdc1-m_estime, m_zr1[i], m_tofId1 );
00838       }
00839       m_sigma11 = tofCaliSvc->BSigma1( m_zrhit1, m_tofId1 );
00840       m_ph11 = m_adc1;
00841     }
00842     
00843     if( innerWest ) {
00844       for( unsigned int i=0; i<5; i++ ) {
00845         m_tof12[i] = tofCaliSvc->BTime2( m_adc2, m_tdc2-m_estime, m_zr1[i], m_tofId1 );
00846       }
00847       m_sigma12 = tofCaliSvc->BSigma2( m_zrhit1, m_tofId1 );
00848       m_ph12 = m_adc2;
00849     }
00850 
00851     if( innerLayer ) {
00852       for( unsigned int i=0; i<5; i++ ) {
00853         m_tof1[i]  = tofCaliSvc->BTimeCounter( m_tof11[i], m_tof12[i], m_zr1[i], m_tofId1 );
00854       }
00855       m_sigma1  = tofCaliSvc->BSigmaCounter( m_zrhit1, m_tofId1 );
00856       m_ph1  = tofCaliSvc->BPulseHeight( m_adc1, m_adc2, m_zrhit1, m_theta1, m_tofId1 );
00857       /*
00858       if( m_hitCase == InnerLayer ) {
00859         for( unsigned int i=0; i<5; i++ ) {
00860           m_tof[i] = m_tof1[i];
00861         }
00862         m_sigma   = m_sigma1;
00863       }
00864       */
00865     }
00866 
00867     if( outerEast ) {
00868       for( unsigned int i=0; i<5; i++ ) {
00869         m_tof21[i] = tofCaliSvc->BTime1( m_adc3, m_tdc3-m_estime, m_zr2[i], m_tofId2 );
00870       }
00871       m_sigma21 = tofCaliSvc->BSigma1( m_zrhit2, m_tofId2 );
00872       m_ph21 = m_adc3;
00873     }
00874 
00875     if( outerWest ) {
00876       for( unsigned int i=0; i<5; i++ ) {
00877         m_tof22[i] = tofCaliSvc->BTime2( m_adc4, m_tdc4-m_estime, m_zr2[i], m_tofId2 );
00878       }
00879       m_sigma22 = tofCaliSvc->BSigma2( m_zrhit2, m_tofId2 );
00880       m_ph22 = m_adc4;
00881     }
00882 
00883     if( outerLayer ) {
00884       for( unsigned int i=0; i<5; i++ ) {
00885         m_tof2[i]  = tofCaliSvc->BTimeCounter( m_tof21[i], m_tof22[i], m_zr2[i], m_tofId2 );
00886       }
00887       m_sigma2  = tofCaliSvc->BSigmaCounter( m_zrhit2, m_tofId2 );
00888       m_ph2  = tofCaliSvc->BPulseHeight( m_adc3, m_adc4, m_zrhit2, m_theta2, m_tofId2 );
00889       /*
00890       if( m_hitCase == OuterLayer ) {
00891         for( unsigned int i=0; i<5; i++ ) {
00892           m_tof[i] = m_tof2[i];
00893         }
00894         m_sigma   = m_sigma2;
00895       }
00896       */
00897     }
00898 
00899     if( innerLayer && outerLayer ) {
00900       for( unsigned int i=0; i<5; i++ ) {
00901         m_tof[i] = tofCaliSvc->BTimeCluster( m_tof1[i], m_tof2[i], m_zr1[i], m_zr2[i], m_tofId1, m_tofId2 );
00902       }
00903       m_sigma = tofCaliSvc->BSigmaCluster( m_zrhit1, m_zrhit2, m_tofId1, m_tofId2 );
00904       m_ph    = tofCaliSvc->BTimeCluster( m_ph1, m_ph2, m_zrhit1, m_zrhit2, m_tofId1, m_tofId2 );
00905     }
00906   }
00907 
00908   if( endcap ) {
00909     if( endcapData ) {
00910       for( unsigned int i=0; i<5; i++ ) {
00911         m_tof11[i] = tofCaliSvc->ETime( m_adc1, m_tdc1-m_estime, m_zr1[i], m_tofId1 );
00912       }
00913       m_sigma11 = tofCaliSvc->ESigma( m_zrhit1, m_tofId1 );
00914       m_ph11  = tofCaliSvc->EPulseHeight( m_adc1, m_zrhit1, m_theta1, m_tofId1 );
00915       m_quality = 1;
00916       if( (m_quality1&0xa000)!=0 ) { m_quality = 4; }
00917     }
00918   }
00919 
00920   // set Quality of Barrel TOF
00921   if( barrel ) {
00922 
00923     // double layer
00924     if( innerLayer && outerLayer ) {
00925       m_quality = 1;
00926     }
00927     else {
00928       // single layer
00929       if( innerLayer || outerLayer ) {
00930         m_quality = 2;
00931       }
00932       else {
00933         // single-end of one layer
00934         if( innerEast || innerWest || outerEast || outerWest ) {
00935           m_quality = 3;
00936         }
00937       }
00938     }
00939 
00940     // multi-hit
00941     if( ( (m_quality1&0xa000)!=0 ) || ( (m_quality2&0xa000)!=0 ) ) {
00942       m_quality = m_quality + 3;
00943     }
00944 
00945     // ztdc and extrapolated zhit is not matched
00946     if( ( (m_quality1&0x100)==0x100 ) || ( (m_quality2&0x100)==0x100 ) ) {
00947       if( ( m_quality == 1 ) || ( m_quality == 4 ) ) { m_quality = 7; }
00948       else if( ( m_quality == 2 ) || ( m_quality == 5 ) ) { m_quality = 8; }
00949       else if( ( m_quality == 3 ) || ( m_quality == 6 ) ) { m_quality = 9; }
00950       else {
00951         cout << "TofRec::TofTrack::setCalibration: Impossible!" << endl;
00952       }
00953     }
00954 
00955   }
00956 
00957   return;
00958 }

void TofTrack::setExtTrack RecExtTrack extTrack,
int  kal[5]
 

void TofTrack::setExtTrack RecExtTrack extTrack,
int  kal[5]
 

00140                                                               {
00141 
00142   int tofId1 = extTrack->tof1VolumeNumber();
00143   int tofId2 = extTrack->tof2VolumeNumber();
00144   
00145   m_barrel = 3;
00146   if( tofId1>=0 && tofId1<=87 ) {
00147     m_id1 = tofId1;
00148     m_barrel = 1;
00149     m_hitCase = InnerLayer;
00150   }
00151   else if( tofId1>=176 && tofId1<=223 ) {
00152     m_id1 = tofId1 - 176 + 48;
00153     m_barrel = 2;
00154     m_hitCase = WestEndcap;
00155   }
00156   else if( tofId1>=224 && tofId1<=271 ) { 
00157     m_id1 = tofId1 - 176 - 48;
00158     m_barrel = 0;
00159     m_hitCase = EastEndcap;
00160   }
00161   else {
00162     m_barrel = 3;
00163     m_hitCase = NoHit;
00164   }
00165 
00166   if( tofId2>=88 && tofId2<=175 ) {
00167     m_id2 = tofId2;
00168     m_barrel = 1;
00169     if( m_hitCase == InnerLayer ) {
00170       m_hitCase = DoubleLayer;
00171     }
00172     else if( m_hitCase==NoHit ) {
00173       m_hitCase = OuterLayer;
00174     }
00175   }
00176 
00177   m_trackId  = extTrack->trackId();
00178 
00179   m_momentum = extTrack->tof1Momentum().r();
00180   if( m_hitCase == InnerLayer || m_hitCase == DoubleLayer ) {
00181     for( unsigned int i=0; i<5; i++ ) {
00182       m_texpInner[i] = extTrack->tof1(i);
00183     }
00184     m_path1  = extTrack->tof1Path();
00185     m_zrhit1 = extTrack->tof1Position().z();
00186     m_errzr1 = extTrack->tof1PosSigmaAlongZ();
00187     m_theta1 = extTrack->tof1Momentum().rho()/extTrack->tof1Momentum().r();
00188     m_phi1   = extTrack->tof1Position().phi();
00189     for( unsigned int i=0; i<5; i++ ) {
00190       m_zr1[i]  = extTrack->tof1Position(i).z();
00191       m_ezr1[i] = extTrack->tof1PosSigmaAlongZ(i); 
00192     }
00193   }
00194   else if( m_hitCase == EastEndcap || m_hitCase == WestEndcap ) {
00195     for( unsigned int i=0; i<5; i++ ) {
00196       m_texpInner[i] = extTrack->tof1(i);
00197     }
00198     m_path1  = extTrack->tof1Path();
00199     m_zrhit1 = extTrack->tof1Position().rho();
00200     m_errzr1 = sqrt( extTrack->tof1PosSigmaAlongX()*extTrack->tof1PosSigmaAlongX() + extTrack->tof1PosSigmaAlongY()*extTrack->tof1PosSigmaAlongY() );
00201     m_theta1 = extTrack->tof1Momentum().z()/extTrack->tof1Momentum().r();
00202     m_phi1   = extTrack->tof1Position().phi();
00203     for( unsigned int i=0; i<5; i++ ) {
00204       m_zr1[i]  = extTrack->tof1Position(i).rho();
00205       m_ezr1[i] = sqrt( extTrack->tof1PosSigmaAlongX(i)*extTrack->tof1PosSigmaAlongX(i) + extTrack->tof1PosSigmaAlongY(i)*extTrack->tof1PosSigmaAlongY(i) ); 
00206     }
00207   }
00208 
00209   if( m_hitCase == OuterLayer || m_hitCase == DoubleLayer ) {
00210     for( unsigned int i=0; i<5; i++ ) {
00211       m_texpOuter[i] = extTrack->tof2(i);
00212     }
00213     m_path2  = extTrack->tof2Path();
00214     m_zrhit2 = extTrack->tof2Position().z();
00215     m_errzr2 = extTrack->tof2PosSigmaAlongZ();
00216     m_theta2 = extTrack->tof2Momentum().rho()/extTrack->tof2Momentum().r();
00217     m_phi2   = extTrack->tof2Position().phi();
00218     for( unsigned int i=0; i<5; i++ ) {
00219       m_zr2[i]  = extTrack->tof2Position(i).z();
00220       m_ezr2[i] = extTrack->tof2PosSigmaAlongZ(i); 
00221     }
00222   }
00223 
00224   if( m_hitCase == NoHit ) { m_quality = 11; }
00225 
00226   for( unsigned int i=0; i<5; i++ ) {
00227     m_kal[i] = kal[i];
00228   }
00229 
00230   return;
00231 }

void TofTrack::setFlag unsigned int  flag  )  [inline]
 

00106 { m_flag = flag;            }

void TofTrack::setFlag unsigned int  flag  )  [inline]
 

00106 { m_flag = flag;            }

void TofTrack::setQuality int  qual  )  [inline]
 

00105 { m_quality = qual;         }

void TofTrack::setQuality int  qual  )  [inline]
 

00105 { m_quality = qual;         }

void TofTrack::setRecTofTrack RecTofTrack track,
int  layerorend
 

void TofTrack::setRecTofTrack RecTofTrack track,
int  layerorend
 

01241                                                                   {
01242 
01243   double toffset[6];
01244   for( unsigned int i=0; i<6; i++ ) {
01245     toffset[i] = 0.0;
01246   }
01247 
01248   if( layerorend == 0 ) {   // cluster or double layer hit
01249     track->setPh( m_ph );
01250     track->setTof( m_tof[0] );
01251     track->setSigmaElectron( m_sigma );
01252     for( unsigned int i=0; i<5; i++ ) {
01253       toffset[i] = m_tof[0] - m_tof[i];
01254     }
01255     track->setToffset( toffset );
01256     track->setBeta( m_path/m_tof[0]/30.0 );
01257   }
01258   else if( layerorend == 1 ) { // inner layer
01259     track->setPh( m_ph1 );
01260     track->setTof( m_tof1[0] );
01261     track->setSigmaElectron( m_sigma1 );
01262     for( unsigned int i=0; i<5; i++ ) {
01263       toffset[i] = m_tof1[0] - m_tof1[i];
01264     }
01265     track->setToffset( toffset );
01266     track->setBeta( m_path1/m_tof1[0]/30.0 );
01267   }
01268   else if( layerorend == 2 ) { // outer layer
01269     track->setPh( m_ph2 );
01270     track->setTof( m_tof2[0] );
01271     track->setSigmaElectron( m_sigma2 );
01272     for( unsigned int i=0; i<5; i++ ) {
01273       toffset[i] = m_tof2[0] - m_tof2[i];
01274     }
01275     track->setToffset( toffset );
01276     track->setBeta( m_path2/m_tof2[0]/30.0 );
01277   }
01278   else if( layerorend == 11 ) { // inner layer east end readout
01279     track->setPh( m_ph11 );
01280     track->setTof( m_tof11[0] );
01281     track->setSigmaElectron( m_sigma11 );
01282     for( unsigned int i=0; i<5; i++ ) {
01283       toffset[i] = m_tof11[0] - m_tof11[i];
01284     }
01285     track->setToffset( toffset );
01286     track->setBeta( m_path1/m_tof11[0]/30.0 );
01287   }
01288   else if( layerorend == 12 ) { // inner layer west end readout
01289     track->setPh( m_ph12 );
01290     track->setTof( m_tof12[0] );
01291     track->setSigmaElectron( m_sigma12 );
01292     for( unsigned int i=0; i<5; i++ ) {
01293       toffset[i] = m_tof12[0] - m_tof12[i];
01294     }
01295     track->setToffset( toffset );
01296     track->setBeta( m_path1/m_tof12[0]/30.0 );
01297   }
01298   else if( layerorend == 21 ) { // outer layer east end readout
01299     track->setPh( m_ph21 );
01300     track->setTof( m_tof21[0] );
01301     track->setSigmaElectron( m_sigma21 );
01302     for( unsigned int i=0; i<5; i++ ) {
01303       toffset[i] = m_tof21[0] - m_tof21[i];
01304     }
01305     track->setToffset( toffset );
01306     track->setBeta( m_path2/m_tof21[0]/30.0 );
01307   }
01308   else if( layerorend == 22 ) { // outer layer west end readout
01309     track->setPh( m_ph22 );
01310     track->setTof( m_tof22[0] );
01311     track->setSigmaElectron( m_sigma22 );
01312     for( unsigned int i=0; i<5; i++ ) {
01313       toffset[i] = m_tof22[0] - m_tof22[i];
01314     }
01315     track->setToffset( toffset );
01316     track->setBeta( m_path2/m_tof22[0]/30.0 );
01317   }
01318   else{
01319     cout << "TofRec TofTrack::SetRecTofTrack  layerorend = " << layerorend << endl;
01320   }
01321   return;
01322 }

void TofTrack::setTofData TofDataMap  tofDataMap  ) 
 

void TofTrack::setTofData TofDataMap  tofDataMap  ) 
 

00239                                                  {
00240 
00241   if( m_hitCase == NoHit ) return;
00242 
00243   unsigned int identify0 = 0x0000c000;
00244   unsigned int identify1 = 0x0000c000;
00245   unsigned int identify2 = 0x0000c000;
00246   unsigned int count0 = 0;
00247   unsigned int count1 = 0;
00248   unsigned int count2 = 0;
00249 
00250   if( ( ( m_hitCase == InnerLayer ) || ( m_hitCase == DoubleLayer ) ) && ( m_id1 > -1 ) ) {
00251     int tofid0 = m_id1;
00252     identify0 = TofID::getIntID( 1, 0, tofid0, 0 );
00253     count0 = tofDataMap.count( identify0 );
00254     int tofid1 = tofid0 - 1;
00255     if( tofid1 == -1 ) { tofid1 = 87; }
00256     identify1 = TofID::getIntID( 1, 0, tofid1, 0 );
00257     count1 = tofDataMap.count( identify1 );
00258     int tofid2 = tofid0 + 1;
00259     if( tofid2 == 88 ) { tofid2 = 0; }
00260     identify2 = TofID::getIntID( 1, 0, tofid2, 0 );
00261     count2 = tofDataMap.count( identify2 );
00262   }
00263 
00264   if( ( m_hitCase == EastEndcap ) && ( m_id1 > -1 ) ) {
00265     int tofid0 = m_id1;
00266     identify0 = TofID::getIntID( 0, 0, tofid0, 0 );
00267     count0 = tofDataMap.count( identify0 );
00268     int tofid1 = tofid0 - 1;
00269     if( tofid1 == -1 ) { tofid1 = 47; }
00270     identify1 = TofID::getIntID( 0, 0, tofid1, 0 );
00271     count1 = tofDataMap.count( identify1 );
00272     int tofid2 = tofid0 + 1;
00273     if( tofid2 == 48 ) { tofid2 = 0; }
00274     identify2 = TofID::getIntID( 0, 0, tofid2, 0 );
00275     count2 = tofDataMap.count( identify2 );
00276   }
00277 
00278   if( ( m_hitCase == WestEndcap ) && ( m_id1 > -1 ) ) {
00279     int tofid0 = m_id1 - 48;
00280     identify0 = TofID::getIntID( 2, 0, tofid0, 0 );
00281     count0 = tofDataMap.count( identify0 );
00282     int tofid1 = tofid0 - 1;
00283     if( tofid1 == -1 ) { tofid1 = 47; }
00284     identify1 = TofID::getIntID( 2, 0, tofid1, 0 );
00285     count1 = tofDataMap.count( identify1 );
00286     int tofid2 = tofid0 + 1;
00287     if( tofid2 == 48 ) { tofid2 = 0; }
00288     identify2 = TofID::getIntID( 2, 0, tofid2, 0 );
00289     count2 = tofDataMap.count( identify2 );
00290   }
00291 
00292   if( count0 > 0 ) {
00293     pair< IterTofDataMap, IterTofDataMap > range = tofDataMap.equal_range( identify0 );
00294     IterTofDataMap iter = range.first;
00295     for( unsigned int i = 0; i < count0; i++, iter++ ) {
00296       tofDataAnalysis( (*iter).second, 1 );
00297     }
00298   }
00299   if( count1 > 0 ) {
00300     pair< IterTofDataMap, IterTofDataMap > range = tofDataMap.equal_range( identify1 );
00301     IterTofDataMap iter = range.first;
00302     for( unsigned int i = 0; i < count1; i++, iter++ ) {
00303       tofDataAnalysis( (*iter).second, 2 );
00304     }
00305   }
00306   if( count2 > 0 ) {
00307     pair< IterTofDataMap, IterTofDataMap > range = tofDataMap.equal_range( identify2 );
00308     IterTofDataMap iter = range.first;
00309     for( unsigned int i = 0; i < count2; i++, iter++ ) {
00310       tofDataAnalysis( (*iter).second, 2 );
00311     }
00312   }
00313 
00314   if( ( count0 == 0 ) && ( count1 == 0 ) && ( count2 == 0 ) ) {
00315     if( m_hitCase != DoubleLayer ) {
00316       m_hitCase = NoHit; 
00317       m_quality = 12;
00318     }
00319     else {
00320       m_hitCase = OuterLayer;
00321     }
00322   }
00323 
00324   if( ( ( m_hitCase == OuterLayer ) || ( m_hitCase == DoubleLayer ) ) && ( m_id2 > 87 ) ) {
00325     int tofid0 = m_id2 - 88;
00326     identify0 = TofID::getIntID( 1, 1, tofid0, 0 );
00327     count0 = tofDataMap.count( identify0 );
00328     int tofid1 = tofid0 - 1;
00329     if( tofid1 == -1 ) { tofid1 = 87; }
00330     identify1 = TofID::getIntID( 1, 1, tofid1, 0 );
00331     count1 = tofDataMap.count( identify1 );
00332     int tofid2 = tofid0 + 1;
00333     if( tofid2 == 88 ) { tofid2 = 0; }
00334     identify2 = TofID::getIntID( 1, 1, tofid2, 0 );
00335     count2 = tofDataMap.count( identify2 );
00336 
00337     if( count0 > 0 ) {
00338       pair< IterTofDataMap, IterTofDataMap > range = tofDataMap.equal_range( identify0 );
00339       IterTofDataMap iter = range.first;
00340       for( unsigned int i = 0; i < count0; i++, iter++ ) {
00341         tofDataAnalysis( (*iter).second, 3 );
00342       }
00343     }
00344     if( count1 > 0 ) {
00345       pair< IterTofDataMap, IterTofDataMap > range = tofDataMap.equal_range( identify1 );
00346       IterTofDataMap iter = range.first;
00347       for( unsigned int i = 0; i < count1; i++, iter++ ) {
00348         tofDataAnalysis( (*iter).second, 4 );
00349       }
00350     }
00351     if( count2 > 0 ) {
00352       pair< IterTofDataMap, IterTofDataMap > range = tofDataMap.equal_range( identify2 );
00353       IterTofDataMap iter = range.first;
00354       for( unsigned int i = 0; i < count2; i++, iter++ ) {
00355         tofDataAnalysis( (*iter).second, 4 );
00356       }
00357     }
00358 
00359     if( ( count0 == 0 ) && ( count1 == 0 ) && ( count2 == 0 ) ) {
00360       if( m_hitCase != DoubleLayer ) {
00361         m_hitCase = NoHit; 
00362         m_quality = 12;
00363       }
00364       else {
00365         m_hitCase = InnerLayer;
00366       }
00367     }
00368   }
00369 
00370   return;
00371 }

int TofTrack::size1  )  const [inline]
 

00046 { return  m_tofData1.size(); }

int TofTrack::size1  )  const [inline]
 

00046 { return  m_tofData1.size(); }

int TofTrack::size2  )  const [inline]
 

00047 { return  m_tofData2.size(); }

int TofTrack::size2  )  const [inline]
 

00047 { return  m_tofData2.size(); }

int TofTrack::size3  )  const [inline]
 

00048 { return  m_tofData3.size(); }

int TofTrack::size3  )  const [inline]
 

00048 { return  m_tofData3.size(); }

int TofTrack::size4  )  const [inline]
 

00049 { return  m_tofData4.size(); }

int TofTrack::size4  )  const [inline]
 

00049 { return  m_tofData4.size(); }

int TofTrack::t0Stat  )  const [inline]
 

00099 { return  m_t0Stat;     }

int TofTrack::t0Stat  )  const [inline]
 

00099 { return  m_t0Stat;     }

double TofTrack::tdc1  )  const [inline]
 

00081 { return  m_tdc1;       }

double TofTrack::tdc1  )  const [inline]
 

00081 { return  m_tdc1;       }

double TofTrack::tdc2  )  const [inline]
 

00082 { return  m_tdc2;       }

double TofTrack::tdc2  )  const [inline]
 

00082 { return  m_tdc2;       }

double TofTrack::tdc3  )  const [inline]
 

00083 { return  m_tdc3;       }

double TofTrack::tdc3  )  const [inline]
 

00083 { return  m_tdc3;       }

double TofTrack::tdc4  )  const [inline]
 

00084 { return  m_tdc4;       }

double TofTrack::tdc4  )  const [inline]
 

00084 { return  m_tdc4;       }

double TofTrack::tdiff1  )  const [inline]
 

00096 { return  m_tdiff1;     }

double TofTrack::tdiff1  )  const [inline]
 

00096 { return  m_tdiff1;     }

double TofTrack::tdiff2  )  const [inline]
 

00097 { return  m_tdiff2;     }

double TofTrack::tdiff2  )  const [inline]
 

00097 { return  m_tdiff2;     }

double TofTrack::texp unsigned int  i  )  const [inline]
 

00088 { return m_texp[i];      }

double TofTrack::texp unsigned int  i  )  const [inline]
 

00088 { return m_texp[i];      }

double TofTrack::texpInner unsigned int  i  )  const [inline]
 

00086 { return m_texpInner[i]; }

double TofTrack::texpInner unsigned int  i  )  const [inline]
 

00086 { return m_texpInner[i]; }

double TofTrack::texpOuter unsigned int  i  )  const [inline]
 

00087 { return m_texpOuter[i]; }

double TofTrack::texpOuter unsigned int  i  )  const [inline]
 

00087 { return m_texpOuter[i]; }

double TofTrack::theta1  )  const [inline]
 

00050 { return  m_theta1;     }

double TofTrack::theta1  )  const [inline]
 

00050 { return  m_theta1;     }

double TofTrack::theta2  )  const [inline]
 

00051 { return  m_theta2;     }

double TofTrack::theta2  )  const [inline]
 

00051 { return  m_theta2;     }

double TofTrack::tof unsigned int  i  )  const [inline]
 

00075 { return  m_tof[i];     }

double TofTrack::tof unsigned int  i  )  const [inline]
 

00075 { return  m_tof[i];     }

double TofTrack::tof1 unsigned int  i  )  const [inline]
 

00073 { return  m_tof1[i];    }

double TofTrack::tof1 unsigned int  i  )  const [inline]
 

00073 { return  m_tof1[i];    }

double TofTrack::tof11 unsigned int  i  )  const [inline]
 

00069 { return  m_tof11[i];   }

double TofTrack::tof11 unsigned int  i  )  const [inline]
 

00069 { return  m_tof11[i];   }

double TofTrack::tof12 unsigned int  i  )  const [inline]
 

00070 { return  m_tof12[i];   }

double TofTrack::tof12 unsigned int  i  )  const [inline]
 

00070 { return  m_tof12[i];   }

double TofTrack::tof2 unsigned int  i  )  const [inline]
 

00074 { return  m_tof2[i];    }

double TofTrack::tof2 unsigned int  i  )  const [inline]
 

00074 { return  m_tof2[i];    }

double TofTrack::tof21 unsigned int  i  )  const [inline]
 

00071 { return  m_tof21[i];   }

double TofTrack::tof21 unsigned int  i  )  const [inline]
 

00071 { return  m_tof21[i];   }

double TofTrack::tof22 unsigned int  i  )  const [inline]
 

00072 { return  m_tof22[i];   }

double TofTrack::tof22 unsigned int  i  )  const [inline]
 

00072 { return  m_tof22[i];   }

std::vector<TofData*> TofTrack::tofData1  )  const [inline]
 

00044 { return  m_tofData1;   }  

std::vector<TofData*> TofTrack::tofData1  )  const [inline]
 

00044 { return  m_tofData1;   }  

std::vector<TofData*> TofTrack::tofData2  )  const [inline]
 

00045 { return  m_tofData2;   }  

std::vector<TofData*> TofTrack::tofData2  )  const [inline]
 

00045 { return  m_tofData2;   }  

void TofTrack::tofDataAnalysis TofData tof,
unsigned int  iflag
 

void TofTrack::tofDataAnalysis TofData tof,
unsigned int  iflag
 

00377                                                                  {
00378 
00379   unsigned int qual = tof->quality();
00380 
00381   if( ( qual & 0x10 ) == 0 ) {
00382 
00383     //    qual = ( qual | 0x310 );    // zadc, ztdc unmatched, and track matched
00384     qual = ( qual | 0x10 );    // zadc, ztdc unmatched, and track matched
00385 
00386     if( tof->barrel() ) {       // Barrel, Endcap has been done
00387       if( ( tof->quality() == 0x7 ) || ( tof->quality() == 0xd ) ) {
00388         qual = ( qual | 0x20 );                       // lost one Q
00389       }
00390       
00391       if( ( tof->quality() == 0xb ) || ( tof->quality() == 0xe ) ) {
00392         qual = ( qual | 0x40 );                       // lost one T
00393       }
00394       
00395       if( ( tof->quality() == 0x3 ) || ( tof->quality() == 0xc ) ) {
00396         qual = ( qual | 0x80 );                       // single end
00397       }
00398 
00399       if( ( tof->quality() & 0x5 ) == 0x5 ) {
00400         double ztdc = tofCaliSvc->ZTDC( tof->tdc1(), tof->tdc2(), tof->tofId() );
00401         tof->setZTdc( ztdc );
00402         /*
00403         if( ( ( (iflag==1) || (iflag==2) ) && ( abs(ztdc-m_zrhit1)<ztdc_Cut ) ) || ( ( (iflag==3) || (iflag==4) ) && ( abs(ztdc-m_zrhit2)<ztdc_Cut ) ) ) { 
00404           qual = ( qual & 0xeffffeff );               // Z_tdc un-matched.
00405         }
00406         else {
00407           qual = ( qual | 0x100 );
00408         }
00409         */
00410       }
00411 
00412       if( ( tof->quality() & 0xa ) == 0xa ) {
00413         double zadc = tofCaliSvc->ZADC( tof->adc1(), tof->adc2(), tof->tofId() );
00414         tof->setZAdc( zadc );
00415         /*
00416         if( ( ( (iflag==1) || (iflag==2) ) && ( abs(zadc-m_zrhit1)<zadc_Cut ) ) || ( ( (iflag==3) || (iflag==4) ) && ( abs(zadc-m_zrhit2)<zadc_Cut ) ) ) { 
00417           qual = ( qual & 0xeffffbff );               // Z_adc un-matched.
00418         }
00419         else {
00420           qual = ( qual | 0x200 );
00421         }
00422         */
00423       }
00424     }
00425 
00426     tof->setQuality( qual );
00427   }
00428 
00429   if( iflag == 1 )      m_tofData1.push_back( tof );
00430   else if( iflag == 2 ) m_tofData2.push_back( tof );
00431   else if( iflag == 3 ) m_tofData3.push_back( tof );
00432   else if( iflag == 4 ) m_tofData4.push_back( tof );
00433   else {
00434     cout << "TofRec::TofTrack::TofDataAnalylsis: the Flag should be 1-4, out of the Range!" << endl;
00435   }
00436 
00437   return;
00438 }

void TofTrack::tofDataStudy  ) 
 

void TofTrack::tofDataStudy  ) 
 

int TofTrack::tofId1  )  const [inline]
 

00058 { return  m_tofId1;    }

int TofTrack::tofId1  )  const [inline]
 

00058 { return  m_tofId1;    }

int TofTrack::tofId2  )  const [inline]
 

00059 { return  m_tofId2;    }

int TofTrack::tofId2  )  const [inline]
 

00059 { return  m_tofId2;    }

int TofTrack::tofTrackId  )  const [inline]
 

00026 { return  m_tofTrackId; }

int TofTrack::tofTrackId  )  const [inline]
 

00026 { return  m_tofTrackId; }

int TofTrack::trackId  )  const [inline]
 

00025 { return  m_trackId;    }

int TofTrack::trackId  )  const [inline]
 

00025 { return  m_trackId;    }

double TofTrack::zadc1  )  const [inline]
 

00092 { return  m_zadc1;      }

double TofTrack::zadc1  )  const [inline]
 

00092 { return  m_zadc1;      }

double TofTrack::zadc2  )  const [inline]
 

00093 { return  m_zadc2;      }

double TofTrack::zadc2  )  const [inline]
 

00093 { return  m_zadc2;      }

double TofTrack::zrhit1 unsigned int  i  )  const [inline]
 

00040 { return  m_zr1[i];     }

double TofTrack::zrhit1  )  const [inline]
 

00035 { return  m_zrhit1;     }

double TofTrack::zrhit1 unsigned int  i  )  const [inline]
 

00040 { return  m_zr1[i];     }

double TofTrack::zrhit1  )  const [inline]
 

00035 { return  m_zrhit1;     }

double TofTrack::zrhit2 unsigned int  i  )  const [inline]
 

00041 { return  m_zr2[i];     }

double TofTrack::zrhit2  )  const [inline]
 

00036 { return  m_zrhit2;     }

double TofTrack::zrhit2 unsigned int  i  )  const [inline]
 

00041 { return  m_zr2[i];     }

double TofTrack::zrhit2  )  const [inline]
 

00036 { return  m_zrhit2;     }

double TofTrack::ztdc1  )  const [inline]
 

00090 { return  m_ztdc1;      }

double TofTrack::ztdc1  )  const [inline]
 

00090 { return  m_ztdc1;      }

double TofTrack::ztdc2  )  const [inline]
 

00091 { return  m_ztdc2;      }

double TofTrack::ztdc2  )  const [inline]
 

00091 { return  m_ztdc2;      }


Member Data Documentation

double TofTrack::m_adc1 [private]
 

double TofTrack::m_adc2 [private]
 

double TofTrack::m_adc3 [private]
 

double TofTrack::m_adc4 [private]
 

unsigned int TofTrack::m_barrel [private]
 

double TofTrack::m_errzr1 [private]
 

double TofTrack::m_errzr2 [private]
 

double TofTrack::m_estime [private]
 

double TofTrack::m_ezr1 [private]
 

double TofTrack::m_ezr2 [private]
 

unsigned TofTrack::m_flag [private]
 

ExtTrackCase TofTrack::m_hitCase [private]
 

int TofTrack::m_id1 [private]
 

int TofTrack::m_id2 [private]
 

int TofTrack::m_kal [private]
 

double TofTrack::m_momentum [private]
 

double TofTrack::m_path [private]
 

double TofTrack::m_path1 [private]
 

double TofTrack::m_path2 [private]
 

double TofTrack::m_ph [private]
 

double TofTrack::m_ph1 [private]
 

double TofTrack::m_ph11 [private]
 

double TofTrack::m_ph12 [private]
 

double TofTrack::m_ph2 [private]
 

double TofTrack::m_ph21 [private]
 

double TofTrack::m_ph22 [private]
 

double TofTrack::m_phi1 [private]
 

double TofTrack::m_phi2 [private]
 

unsigned int TofTrack::m_quality [private]
 

unsigned int TofTrack::m_quality1 [private]
 

unsigned int TofTrack::m_quality2 [private]
 

double TofTrack::m_sigma [private]
 

double TofTrack::m_sigma1 [private]
 

double TofTrack::m_sigma11 [private]
 

double TofTrack::m_sigma12 [private]
 

double TofTrack::m_sigma2 [private]
 

double TofTrack::m_sigma21 [private]
 

double TofTrack::m_sigma22 [private]
 

int TofTrack::m_t0Stat [private]
 

double TofTrack::m_tdc1 [private]
 

double TofTrack::m_tdc2 [private]
 

double TofTrack::m_tdc3 [private]
 

double TofTrack::m_tdc4 [private]
 

double TofTrack::m_tdiff1 [private]
 

double TofTrack::m_tdiff2 [private]
 

double TofTrack::m_texp [private]
 

double TofTrack::m_texpInner [private]
 

double TofTrack::m_texpOuter [private]
 

double TofTrack::m_theta1 [private]
 

double TofTrack::m_theta2 [private]
 

double TofTrack::m_tof [private]
 

double TofTrack::m_tof1 [private]
 

double TofTrack::m_tof11 [private]
 

double TofTrack::m_tof12 [private]
 

double TofTrack::m_tof2 [private]
 

double TofTrack::m_tof21 [private]
 

double TofTrack::m_tof22 [private]
 

std::vector<TofData*> TofTrack::m_tofData1 [private]
 

std::vector<TofData*> TofTrack::m_tofData1 [private]
 

std::vector<TofData*> TofTrack::m_tofData2 [private]
 

std::vector<TofData*> TofTrack::m_tofData2 [private]
 

std::vector<TofData*> TofTrack::m_tofData3 [private]
 

std::vector<TofData*> TofTrack::m_tofData3 [private]
 

std::vector<TofData*> TofTrack::m_tofData4 [private]
 

std::vector<TofData*> TofTrack::m_tofData4 [private]
 

int TofTrack::m_tofId1 [private]
 

int TofTrack::m_tofId2 [private]
 

int TofTrack::m_tofTrackId [private]
 

int TofTrack::m_trackId [private]
 

double TofTrack::m_zadc1 [private]
 

double TofTrack::m_zadc2 [private]
 

double TofTrack::m_zr1 [private]
 

double TofTrack::m_zr2 [private]
 

double TofTrack::m_zrhit1 [private]
 

double TofTrack::m_zrhit2 [private]
 

double TofTrack::m_ztdc1 [private]
 

double TofTrack::m_ztdc2 [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 19:00:52 2011 for BOSS6.5.5 by  doxygen 1.3.9.1