#include <BesTofDigitizerEcV1.hh>
Inheritance diagram for BesTofDigitizerEcV1:
Public Member Functions | |
BesTofDigitizerEcV1 () | |
BesTofDigitizerEcV1 () | |
virtual void | Digitize (ScintSingle *, BesTofDigitsCollection *) |
virtual void | Digitize (ScintSingle *, BesTofDigitsCollection *) |
void | Initialize () |
void | Initialize () |
void | Smear (G4int) |
void | Smear (G4int) |
void | TofPmtAccum (BesTofHit *) |
void | TofPmtAccum (BesTofHit *) |
void | TofPmtInit () |
void | TofPmtInit () |
~BesTofDigitizerEcV1 () | |
~BesTofDigitizerEcV1 () | |
Protected Attributes | |
G4double | m_ADC [2] |
BesTofDigitsCollection * | m_besTofDigitsCollection |
BesTofDigitsCollection * | m_besTofDigitsCollection |
G4double | m_globalTime |
G4double | m_TDC [2] |
BesTofHitsCollection * | m_THC |
BesTofHitsCollection * | m_THC |
ITofCaliSvc * | m_tofCaliSvc |
ITofCaliSvc * | m_tofCaliSvc |
ITofQElecSvc * | m_tofQElecSvc |
ITofQElecSvc * | m_tofQElecSvc |
ITofSimSvc * | m_tofSimSvc |
ITofSimSvc * | m_tofSimSvc |
G4int | m_trackIndex |
Static Protected Attributes | |
NTuple::Item< double > | m_adc0 |
NTuple::Item< double > | m_adc0 |
NTuple::Item< double > | m_adc1 |
NTuple::Item< double > | m_adc1 |
bool | m_booked = false |
NTuple::Item< double > | m_ddT |
NTuple::Item< double > | m_ddT |
NTuple::Item< double > | m_edep |
NTuple::Item< double > | m_edep |
NTuple::Item< double > | m_edepHit |
NTuple::Item< double > | m_edepHit |
NTuple::Item< double > | m_edepMPV |
NTuple::Item< double > | m_edepMPV |
NTuple::Item< double > | m_endTime |
NTuple::Item< double > | m_endTime |
NTuple::Item< double > | m_eTotal |
NTuple::Item< double > | m_eTotal |
NTuple::Item< double > | m_forb |
NTuple::Item< double > | m_forb |
NTuple::Item< double > | m_max0 |
NTuple::Item< double > | m_max0 |
NTuple::Item< double > | m_max1 |
NTuple::Item< double > | m_max1 |
NTuple::Item< double > | m_nDigi |
NTuple::Item< double > | m_nDigi |
NTuple::Item< double > | m_nDigiOut |
NTuple::Item< double > | m_nDigiOut |
NTuple::Item< double > | m_nHits |
NTuple::Item< double > | m_nHits |
NTuple::Item< double > | m_NphAllSteps |
NTuple::Item< double > | m_NphAllSteps |
NTuple::Item< double > | m_partId |
NTuple::Item< double > | m_partId |
NTuple::Item< double > | m_partIdMPV |
NTuple::Item< double > | m_partIdMPV |
NTuple::Item< double > | m_scinNb |
NTuple::Item< double > | m_scinNb |
NTuple::Item< double > | m_scinNbMPV |
NTuple::Item< double > | m_scinNbMPV |
NTuple::Item< double > | m_scinSwim |
NTuple::Item< double > | m_scinSwim |
NTuple::Item< double > | m_scinTime |
NTuple::Item< double > | m_scinTime |
NTuple::Item< double > | m_tdc0 |
NTuple::Item< double > | m_tdc0 |
NTuple::Item< double > | m_tdc1 |
NTuple::Item< double > | m_tdc1 |
NTuple::Item< double > | m_time1st0 |
NTuple::Item< double > | m_time1st0 |
NTuple::Item< double > | m_time1st1 |
NTuple::Item< double > | m_time1st1 |
NTuple::Item< double > | m_timeFlight |
NTuple::Item< double > | m_timeFlight |
NTuple::Item< double > | m_timelast0 |
NTuple::Item< double > | m_timelast0 |
NTuple::Item< double > | m_timelast1 |
NTuple::Item< double > | m_timelast1 |
NTuple::Item< double > | m_totalPhot0 |
NTuple::Item< double > | m_totalPhot0 |
NTuple::Item< double > | m_totalPhot1 |
NTuple::Item< double > | m_totalPhot1 |
NTuple::Item< double > | m_transitTime |
NTuple::Item< double > | m_transitTime |
NTuple::Tuple * | m_tupleTof1 |
NTuple::Tuple * | m_tupleTof1 = 0 |
NTuple::Tuple * | m_tupleTof2 |
NTuple::Tuple * | m_tupleTof2 = 0 |
NTuple::Tuple * | m_tupleTof3 |
NTuple::Tuple * | m_tupleTof3 = 0 |
Private Attributes | |
G4double | m_bucketPosR |
G4double | m_r |
G4double | m_t1st |
|
00022 { 00023 BesTofGeoParameter* tofPara = BesTofGeoParameter::GetInstance(); 00024 m_bucketPosR = tofPara->GetBucketPosR(); 00025 }
|
|
00028 { 00029 }
|
|
|
|
|
|
Reimplemented from BesTofDigitizerV. |
|
Reimplemented from BesTofDigitizerV. 00032 { 00033 G4cout<<"BesTofDigitizerEcV1::Digitize"<<G4endl; 00034 m_besTofDigitsCollection = DC; 00035 G4DigiManager* digiManager = G4DigiManager::GetDMpointer(); 00036 G4int THCID = digiManager->GetHitsCollectionID("BesTofHitsCollection"); 00037 m_THC = (BesTofHitsCollection*) (digiManager->GetHitsCollection(THCID)); 00038 if (m_THC) 00039 { 00040 G4int partId, scinNb, nHits; 00041 BesTofHit* hit; 00042 partId=scint->GetPartId(); 00043 scinNb=scint->GetScinNb(); 00044 nHits=scint->GetHitIndexes()->size(); 00045 TofPmtInit(); 00046 for (G4int j=0;j<nHits;j++) 00047 { 00048 hit= (*m_THC)[( *(scint->GetHitIndexes()) )[j]]; 00049 TofPmtAccum(hit); 00050 } 00051 00052 Smear(scinNb); 00053 if ( m_TDC[0]>0 ) 00054 { 00055 BesTofDigi* digi = new BesTofDigi; 00056 digi->SetTrackIndex(m_trackIndex); 00057 digi->SetPartId(partId); 00058 digi->SetScinNb(scinNb); 00059 digi->SetForwADC( m_ADC[0]) ; 00060 digi->SetForwTDC( m_TDC[0]) ; 00061 digi->SetBackADC( m_ADC[1]) ; 00062 digi->SetBackTDC( m_TDC[1]) ; 00063 m_besTofDigitsCollection->insert(digi); 00064 } 00065 } 00066 }
|
|
|
|
00149 { 00150 for (G4int i=0;i<2;i++) 00151 { 00152 m_ADC[i] = -999; 00153 m_TDC[i] = -999; 00154 } 00155 m_trackIndex = -999; 00156 m_globalTime = 9999; 00157 }
|
|
|
|
00102 { 00103 /*G4double tofRes = 0.08; 00104 for(G4int i=0;i<2;i++) 00105 { 00106 m_TDC[i] += tofRes * G4RandGauss::shoot(); 00107 }*/ 00108 00109 double pp[8]; 00110 for (int i=0;i<8;i++) 00111 { 00112 pp[i]=m_tofCaliSvc->ETof(scinNb)->getP(i); 00113 } 00114 m_ADC[0] *= 7.; 00115 m_TDC[0] += (pp[0]+pp[1]*m_r)/TMath::Sqrt(m_ADC[0])+ 00116 pp[2]/m_ADC[0]+ 00117 pp[3]*m_r/m_ADC[0]+ 00118 pp[4]*m_r+ 00119 pp[5]*m_r*m_r+ 00120 pp[6]*m_r*m_r*m_r+ 00121 pp[7]; 00122 }
|
|
|
|
00075 { 00076 G4int trackIndex = hit->GetTrackIndex(); 00077 G4int scinNb = hit->GetScinNb(); 00078 G4double time = hit->GetTime(); 00079 if (time<m_globalTime) 00080 { 00081 m_globalTime = time; 00082 m_trackIndex = trackIndex; 00083 } 00084 G4double edep = hit->GetEdep(); 00085 G4ThreeVector pos = hit->GetPos(); 00086 G4double posx = pos.x(); 00087 G4double posy = pos.y(); 00088 G4double pathL=abs(m_bucketPosR-sqrt(posx*posx+posy*posy)); 00089 G4double atten; 00090 atten = m_tofCaliSvc->EAtten(scinNb); 00091 m_ADC[0] += edep*exp(-pathL/atten); 00092 00093 if (time<m_t1st) 00094 { 00095 m_t1st = time; 00096 m_r = sqrt(posx*posx+posy*posy); 00097 m_TDC[0] = m_t1st; 00098 } 00099 }
|
|
|
|
00069 { 00070 Initialize(); 00071 m_t1st = 9999.; 00072 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|