30 G4int seg = m_pHit->GetSeg();
31 G4int gap = m_pHit->GetGap();
32 m_Pos = m_pHit->GetPosLocal().x();
33 if ( ( part == 1 && gap % 2 != 0 ) || ( part != 1 && gap % 2 == 0 ) )
34 { m_Pos = m_pHit->GetPosLocal().y(); }
36 if ( part == 1 && seg == 2 && gap % 2 != 0 ) m_Pos2 = m_pHit->GetPosLocal().x();
38 G4VPhysicalVolume* pvGasChamber = m_pHit->GetVolume();
39 if ( m_pHit->GetTrackID() != -1 )
42 pvGasChamber->GetMotherLogical();
44 m_lvGapName = m_lvGap->GetName();
59 if ( m_pHit->GetTrackID() != -1 )
63 G4float width = posStrip1 - posStrip0;
66 G4int iGuessStrip = G4int( ( m_Pos - posStrip0 ) / width + 0.5 );
68 if ( iGuessStrip < 0 ) { iGuessStrip = 0; }
69 else if ( iGuessStrip >= 112 ) { iGuessStrip = 112; }
82 G4int part = m_pHit->GetPart();
83 G4int seg = m_pHit->GetSeg();
84 G4int gap = m_pHit->GetGap();
86 if ( part == 1 && seg == 2 && gap % 2 != 0 && iGuessStrip > 79 )
88 if ( iGuessStrip > 79 && iGuessStrip <= 95 && m_Pos2 < 0 ) iGuessStrip += 16;
89 if ( iGuessStrip > 95 && iGuessStrip <= 111 && m_Pos2 > 0 ) iGuessStrip -= 16;
96 else return m_pHit->GetStrip();
102 G4LogicalVolume* lvStripPlane = m_lvGap->GetDaughter( 0 )->GetLogicalVolume();
103 G4int daughtersNo = lvStripPlane->GetNoDaughters();
105 if ( i >= 0 && i < daughtersNo )
107 G4VPhysicalVolume* pvStrip = lvStripPlane->GetDaughter( i );
108 G4String strStrip = pvStrip->GetLogicalVolume()->GetName();
112 if ( strStrip.find(
"s" ) == 10 )
124 G4float pos = 1.0e38;
125 if ( !pvStrip )
return pos;
127 G4int part = m_pHit->GetPart();
128 G4int gap = m_pHit->GetGap();
130 pos = pvStrip->GetObjectTranslation().x();
131 if ( ( part == 1 && gap % 2 != 0 ) || ( part != 1 && gap % 2 == 0 ) )
132 { pos = pvStrip->GetObjectTranslation().y(); }
134 G4String striptype = pvStrip->GetLogicalVolume()->GetSolid()->GetEntityType();
137 temp = (G4Box*)pvStrip->GetLogicalVolume()->GetSolid();
138 G4double length = temp->GetXHalfLength();
142 G4float box1, box2, box3;
151 G4float posMax = 1.0e38;
152 G4float posLeftStrip;
153 G4float posRightStrip;
154 G4float posCurrentStrip;
156 G4VPhysicalVolume* pvLeftStrip =
GetStrip( i - 1 );
157 G4VPhysicalVolume* pvRightStrip =
GetStrip( i + 1 );
158 G4VPhysicalVolume* pvCurrentStrip =
GetStrip( i );
160 if ( i < 0 ) {
return i; }
163 posLeftStrip = -1.0 * posMax;
166 else if ( !pvCurrentStrip )
171 else if ( !pvRightStrip )
175 posRightStrip = posMax;
185 G4float distCurrent = std::abs( m_Pos - posCurrentStrip );
186 G4float distLeft = std::abs( m_Pos - posLeftStrip );
187 G4float distRight = std::abs( m_Pos - posRightStrip );
192 if ( ( distCurrent <= distLeft ) && ( distCurrent <= distRight ) ) {
return 0; }
193 else if ( distCurrent > distLeft ) {
return -1; }