81 G4double chg = aStep->GetTrack()->GetDefinition()->GetPDGCharge();
82 G4double edep = aStep->GetTotalEnergyDeposit();
83 G4double stepL = aStep->GetStepLength();
84 G4double deltaT = aStep->GetDeltaTime();
85 G4StepPoint* preStep = aStep->GetPreStepPoint();
86 G4ThreeVector pDirection = preStep->GetMomentumDirection();
87 G4String particleName = aStep->GetTrack()->GetDefinition()->GetParticleName();
88 G4Material* scinMaterial = aStep->GetTrack()->GetMaterial();
89 G4double charge = aStep->GetTrack()->GetDefinition()->GetPDGCharge();
90 G4int pdgcode = aStep->GetTrack()->GetDefinition()->GetPDGEncoding();
92 if ( chg == 0 && edep == 0 && stepL == 0 ) {
return false; }
95 G4int trackId = aStep->GetTrack()->GetTrackID();
99 newHit->
SetG4Index( aStep->GetTrack()->GetTrackID() );
103 newHit->
SetTrackL( aStep->GetTrack()->GetTrackLength() );
104 G4ThreeVector pos = preStep->GetPosition();
106 G4double globalTime = preStep->GetGlobalTime();
116 G4ThreeVector locPos( 0, 0, 0 );
117 G4TouchableHistory* theTouchable = (G4TouchableHistory*)( preStep->GetTouchable() );
128 name = theTouchable->GetVolume( 0 )->GetName();
130 G4int partId = -1, scinNb = -1, gapNb = -1, number = -1;
132 gapNb = theTouchable->GetReplicaNumber( 0 );
133 number = theTouchable->GetReplicaNumber( 2 );
136 if ( name.contains(
"physical_gasLayer" ) )
138 locPos = theTouchable->GetHistory()->GetTopTransform().TransformPoint( pos );
139 number = theTouchable->GetReplicaNumber( 3 );
142 G4String name1 = theTouchable->GetVolume( 4 )->GetName();
143 if ( name1 ==
"physicalEcTofEast" ) partId = 3;
144 else if ( name1 ==
"physicalEcTofWest" ) partId = 4;
148 else if ( name ==
"logical_gasLayer" )
150 locPos = theTouchable->GetHistory()->GetTopTransform().TransformPoint( pos );
151 number = theTouchable->GetReplicaNumber( 3 );
152 scinNb = 35 - number;
154 G4String name1 = theTouchable->GetVolume( 4 )->GetName();
155 if ( name1 ==
"logicalEcTofEast" ) partId = 3;
156 else if ( name1 ==
"logicalEcTofWest" ) partId = 4;
161 else if ( name ==
"physicalScinBr1" )
167 else if ( name ==
"physicalScinBr2" )
170 scinNb = number + 88;
173 else if ( name ==
"physicalScinEcWest" )
179 else if ( name ==
"physicalScinEcEast" )
187 else if ( name ==
"logicalScinBr1" || name ==
"logicalScinBr2" )
190 scinNb = ( 527 - number ) / 3;
193 else if ( name ==
"logicalScinEcEast" )
196 scinNb = ( 95 - number ) / 2;
198 else if ( name ==
"logicalScinEcWest" )
201 scinNb = ( 95 - number ) / 2;
203 else {
return false; }
205 if ( name.contains(
"physical_gasLayer" ) || name.contains(
"logical_gasLayer" ) )
207 G4double zz = locPos.z() - 0.5 * mm +
209 if ( zz <= 0 ) { strip = 0; }
210 else if ( zz > 0 && zz < 12 * 27 * mm )
212 for ( G4int i = 0; i < 12; i++ )
214 if ( zz > i * 27 * mm && zz <= ( i + 1 ) * 27 * mm )
223 if ( strip < 0 ) strip = 0;
224 if ( strip > 11 ) strip = 11;
237 G4int trackIndex, g4TrackId;
241 if ( edep > 0 ) { m_besTofCollection->insert( newHit ); }
246 G4int trackIndex, g4TrackId;
249 if ( m_trackIndex != trackIndex )
251 m_trackIndex = trackIndex;
262 G4int pdg =
abs( aStep->GetTrack()->GetDefinition()->GetPDGEncoding() );
263 if ( pdg == 12 || pdg == 14 || pdg == 16 ) {
flag = 0; }
264 if (
flag && aStep->GetTrack()->GetTrackID() == g4TrackId )
266 m_trackIndexes.push_back( trackIndex );
269 m_besTofList->insert( truHit );
273 if ( edep <= 0 ) {
delete newHit; }