#include <BesTofDigitizerBrV1.hh>
Inheritance diagram for BesTofDigitizerBrV1:
Public Member Functions | |
BesTofDigitizerBrV1 () | |
BesTofDigitizerBrV1 () | |
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 () |
~BesTofDigitizerBrV1 () | |
~BesTofDigitizerBrV1 () | |
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_scinLength |
G4double | m_t1st |
G4double | m_z |
|
00022 { 00023 BesTofGeoParameter* tofPara = BesTofGeoParameter::GetInstance(); 00024 m_scinLength = tofPara->GetBr1L(); 00025 }
|
|
00028 { 00029 }
|
|
|
|
|
|
Reimplemented from BesTofDigitizerV. |
|
Reimplemented from BesTofDigitizerV. 00032 { 00033 G4cout<<"BesTofDigitizerBrV1::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 }
|
|
|
|
00110 { 00111 G4cout<<"m_t1st:"<<m_t1st<<" m_z:"<<m_z<<G4endl; 00112 00113 /*G4double tofRes = 0.08; 00114 G4double atten; 00115 for(G4int i=0;i<2;i++) 00116 { 00117 m_TDC[i] += tofRes * G4RandGauss::shoot(); 00118 }*/ 00119 00120 double pp1[10]; 00121 double pp2[10]; 00122 for (int i=0;i<10;i++) 00123 { 00124 pp1[i]=m_tofCaliSvc->BTof(scinNb)->getP1(i); 00125 pp2[i]=m_tofCaliSvc->BTof(scinNb)->getP2(i); 00126 //G4cout<<"pp1["<<i<<"]:"<<pp1[i]<<" "<<"pp2["<<i<<"]:"<<pp2[i]<<G4endl; 00127 } 00128 double pp[10]; 00129 for (int i=0;i<2;i++) 00130 { 00131 m_ADC[i] *= 7.; 00132 for (int j=0;j<10;j++) 00133 { 00134 if (i==0) 00135 pp[j]=pp1[j]; 00136 else 00137 pp[j]=pp2[j]; 00138 } 00139 m_TDC[i] += (pp[0]+pp[1]*m_z)/TMath::Sqrt(m_ADC[i])+ 00140 pp[2]*m_ADC[i]+ 00141 pp[3]*m_ADC[i]*m_ADC[i]+ 00142 pp[4]*m_ADC[i]*m_ADC[i]*m_ADC[i]+ 00143 pp[5]/(84.2*84.2+m_z*m_z)+ 00144 pp[6]*m_z+ 00145 pp[7]*m_z*m_z+ 00146 pp[8]*m_z*m_z*m_z+ 00147 pp[9]; 00148 } 00149 }
|
|
|
|
00075 { 00076 G4int trackIndex = hit->GetTrackIndex(); 00077 G4int partId = hit->GetPartId(); 00078 G4int scinNb = hit->GetScinNb(); 00079 G4double time = hit->GetTime(); 00080 if (time<m_globalTime) 00081 { 00082 m_globalTime = time; 00083 m_trackIndex = trackIndex; 00084 } 00085 G4double edep = hit->GetEdep(); 00086 G4ThreeVector pos = hit->GetPos(); 00087 G4double posx = pos.x(); 00088 G4double posy = pos.y(); 00089 G4double posz = pos.z(); 00090 00091 G4double atten; 00092 atten = m_tofCaliSvc->BAtten(scinNb); 00093 G4double pathL[2]; 00094 pathL[0]=m_scinLength/2-posz; 00095 pathL[1]=posz+m_scinLength/2; 00096 for (G4int j=0;j<2;j++) 00097 { 00098 //G4cout<<"atten:"<<atten<<G4endl; 00099 m_ADC[j] += edep*exp(-pathL[j]/atten); 00100 } 00101 if (time<m_t1st) 00102 { 00103 m_t1st = time; 00104 m_z = posz; 00105 m_TDC[0] = m_TDC[1] = m_t1st; 00106 } 00107 }
|
|
|
|
00069 { 00070 Initialize(); 00071 m_t1st = 9999.; 00072 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|