@@ -83,14 +83,14 @@ void Detector::configDefault()
8383 // mLayers.emplace_back(0, std::string{GeometryTGeo::getTRKLayerPattern() + std::to_string(0)}, 0.5f, 50.f, 100.e-4);
8484 // mLayers.emplace_back(1, std::string{GeometryTGeo::getTRKLayerPattern() + std::to_string(1)}, 1.2f, 50.f, 100.e-4);
8585 // mLayers.emplace_back(2, std::string{GeometryTGeo::getTRKLayerPattern() + std::to_string(2)}, 2.5f, 50.f, 100.e-4);
86- mLayers .emplace_back (3 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (3 )}, 3 .78f , 124 .f , 100 .e -3 );
87- mLayers .emplace_back (4 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (4 )}, 7 .f , 124 .f , 100 .e -3 );
88- mLayers .emplace_back (5 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (5 )}, 12 .f , 124 .f , 100 .e -3 );
89- mLayers .emplace_back (6 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (6 )}, 20 .f , 124 .f , 100 .e -3 );
90- mLayers .emplace_back (7 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (7 )}, 30 .f , 124 .f , 100 .e -3 );
91- mLayers .emplace_back (8 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (8 )}, 45 .f , 258 .f , 100 .e -3 );
92- mLayers .emplace_back (9 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (9 )}, 60 .f , 258 .f , 100 .e -3 );
93- mLayers .emplace_back (10 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (10 )}, 80 .f , 258 .f , 100 .e -3 );
86+ mLayers .emplace_back (0 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (0 )}, 3 .78f , 124 .f , 100 .e -3 );
87+ mLayers .emplace_back (1 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (1 )}, 7 .f , 124 .f , 100 .e -3 );
88+ mLayers .emplace_back (2 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (2 )}, 12 .f , 124 .f , 100 .e -3 );
89+ mLayers .emplace_back (3 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (3 )}, 20 .f , 124 .f , 100 .e -3 );
90+ mLayers .emplace_back (4 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (4 )}, 30 .f , 124 .f , 100 .e -3 );
91+ mLayers .emplace_back (5 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (5 )}, 45 .f , 258 .f , 100 .e -3 );
92+ mLayers .emplace_back (6 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (6 )}, 60 .f , 258 .f , 100 .e -3 );
93+ mLayers .emplace_back (7 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (7 )}, 80 .f , 258 .f , 100 .e -3 );
9494}
9595
9696void Detector::buildTRKNewVacuumVessel ()
@@ -106,28 +106,29 @@ void Detector::buildTRKNewVacuumVessel()
106106 // mLayers.emplace_back(0, std::string{GeometryTGeo::getTRKLayerPattern() + std::to_string(0)}, 0.5f, 50.f, 100.e-4);
107107 // mLayers.emplace_back(1, std::string{GeometryTGeo::getTRKLayerPattern() + std::to_string(1)}, 1.2f, 50.f, 100.e-4);
108108 // mLayers.emplace_back(2, std::string{GeometryTGeo::getTRKLayerPattern() + std::to_string(2)}, 2.5f, 50.f, 100.e-4);
109- mLayers .emplace_back (3 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (3 )}, 7 .f , 124 .f , 100 .e -3 );
110- mLayers .emplace_back (4 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (4 )}, 9 .f , 124 .f , 100 .e -3 );
111- mLayers .emplace_back (5 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (5 )}, 12 .f , 124 .f , 100 .e -3 );
112- mLayers .emplace_back (6 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (6 )}, 20 .f , 124 .f , 100 .e -3 );
113- mLayers .emplace_back (7 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (7 )}, 30 .f , 124 .f , 100 .e -3 );
114- mLayers .emplace_back (8 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (8 )}, 45 .f , 258 .f , 100 .e -3 );
115- mLayers .emplace_back (9 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (9 )}, 60 .f , 258 .f , 100 .e -3 );
116- mLayers .emplace_back (10 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (10 )}, 80 .f , 258 .f , 100 .e -3 );
109+ mLayers .emplace_back (0 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (0 )}, 7 .f , 124 .f , 100 .e -3 );
110+ LOGP (info, " TRKLayer created. Name: {}" , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (0 )});
111+ mLayers .emplace_back (1 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (1 )}, 9 .f , 124 .f , 100 .e -3 );
112+ mLayers .emplace_back (2 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (2 )}, 12 .f , 124 .f , 100 .e -3 );
113+ mLayers .emplace_back (3 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (3 )}, 20 .f , 124 .f , 100 .e -3 );
114+ mLayers .emplace_back (4 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (4 )}, 30 .f , 124 .f , 100 .e -3 );
115+ mLayers .emplace_back (5 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (5 )}, 45 .f , 258 .f , 100 .e -3 );
116+ mLayers .emplace_back (6 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (6 )}, 60 .f , 258 .f , 100 .e -3 );
117+ mLayers .emplace_back (7 , std::string{GeometryTGeo::getTRKLayerPattern () + std::to_string (7 )}, 80 .f , 258 .f , 100 .e -3 );
117118
118119 auto & trkPars = TRKBaseParam::Instance ();
119120
120121 // Middle layers
122+ mLayers [0 ].setLayout (trkPars.layoutML );
123+ mLayers [1 ].setLayout (trkPars.layoutML );
124+ mLayers [2 ].setLayout (trkPars.layoutML );
121125 mLayers [3 ].setLayout (trkPars.layoutML );
122- mLayers [4 ].setLayout (trkPars.layoutML );
123- mLayers [5 ].setLayout (trkPars.layoutML );
124- mLayers [6 ].setLayout (trkPars.layoutML );
125126
126127 // Outer tracker
128+ mLayers [4 ].setLayout (trkPars.layoutOL );
129+ mLayers [5 ].setLayout (trkPars.layoutOL );
130+ mLayers [6 ].setLayout (trkPars.layoutOL );
127131 mLayers [7 ].setLayout (trkPars.layoutOL );
128- mLayers [8 ].setLayout (trkPars.layoutOL );
129- mLayers [9 ].setLayout (trkPars.layoutOL );
130- mLayers [10 ].setLayout (trkPars.layoutOL );
131132}
132133
133134void Detector::configFromFile (std::string fileName)
@@ -266,15 +267,16 @@ void Detector::defineSensitiveVolumes()
266267 for (int petalCase = 0 ; petalCase < 4 ; ++petalCase) {
267268 // Petal layers
268269 for (int petalLayer = 0 ; petalLayer < mPetalCases [petalCase].mPetalLayers .size (); ++petalLayer) {
269- volumeName = mPetalCases [petalCase].mPetalLayers [petalLayer].getName ();
270+ volumeName = mPetalCases [petalCase].mPetalLayers [petalLayer].getSensorName ();
271+ if (petalLayer == 0 ){mFirstOrLastLayers .push_back (volumeName.Data ());}
270272 LOGP (info, " Trying {}" , volumeName.Data ());
271273 v = geoManager->GetVolume (volumeName.Data ());
272274 LOGP (info, " Adding TRK Sensitive Volume {}" , v->GetName ());
273275 AddSensitiveVolume (v);
274276 }
275277 // Petal disks
276278 for (int petalDisk = 0 ; petalDisk < mPetalCases [petalCase].mPetalDisks .size (); ++petalDisk) {
277- volumeName = mPetalCases [petalCase].mPetalDisks [petalDisk].getName ();
279+ volumeName = mPetalCases [petalCase].mPetalDisks [petalDisk].getSensorName ();
278280 LOGP (info, " Trying {}" , volumeName.Data ());
279281 v = geoManager->GetVolume (volumeName.Data ());
280282 LOGP (info, " Adding TRK Sensitive Volume {}" , v->GetName ());
@@ -285,6 +287,7 @@ void Detector::defineSensitiveVolumes()
285287 // The names of the TRK sensitive volumes have the format: TRKLayer(0...mLayers.size()-1)
286288 for (int j{0 }; j < mLayers .size (); j++) {
287289 volumeName = GeometryTGeo::getTRKSensorPattern () + TString::Itoa (j, 10 );
290+ if (j == mLayers .size () - 1 ){mFirstOrLastLayers .push_back (volumeName.Data ());}
288291 LOGP (info, " Trying {}" , volumeName.Data ());
289292 v = geoManager->GetVolume (volumeName.Data ());
290293 LOGP (info, " Adding TRK Sensitive Volume {}" , v->GetName ());
@@ -312,6 +315,17 @@ void Detector::Reset()
312315 }
313316}
314317
318+ bool Detector::InsideFirstOrLastLayer (std::string layerName){
319+ bool inside = false ;
320+ for (auto &firstOrLastLayer: mFirstOrLastLayers ){
321+ if (firstOrLastLayer == layerName){
322+ inside = true ;
323+ break ;
324+ }
325+ }
326+ return inside;
327+ }
328+
315329bool Detector::ProcessHits (FairVolume* vol)
316330{
317331 // This method is called from the MC stepping
@@ -324,7 +338,8 @@ bool Detector::ProcessHits(FairVolume* vol)
324338
325339 // Is it needed to keep a track reference when the outer ITS volume is encountered?
326340 auto stack = (o2::data::Stack*)fMC ->GetStack ();
327- if (fMC ->IsTrackExiting () && (lay == 0 || lay == mLayers .size () - 1 )) {
341+ // if (fMC->IsTrackExiting() && (lay == 0 || lay == mLayers.size() - 1)) {
342+ if (fMC ->IsTrackExiting () && InsideFirstOrLastLayer (vol->GetName ())) {
328343 // Keep the track refs for the innermost and outermost layers only
329344 o2::TrackReference tr (*fMC , GetDetId ());
330345 tr.setTrackID (stack->GetCurrentTrackNumber ());
0 commit comments