@@ -66,48 +66,61 @@ Detector::Detector(bool active)
6666
6767 switch (baseParam.geoVersion ) {
6868 case 1 :
69- mEtaMinScint = Constants::etaMin_scint_v1;
70- mEtaMinCher = Constants::etaMin_cher_v1;
71- mEtaMaxScint = Constants::etaMax_scint_v1;
72- mEtaMaxCher = Constants::etaMax_cher_v1;
73- mZScint = Constants::zscint_v1;
74- mZCher = Constants::zcher_v1;
69+ mEtaMinScintA = Constants::etaMin_scintA_v1;
70+ mEtaMinScintC = Constants::etaMin_scintC_v1;
71+ mEtaMinCherA = Constants::etaMin_cherA_v1;
72+ mEtaMinCherC = Constants::etaMin_cherC_v1;
73+ mEtaMaxScintA = Constants::etaMax_scintA_v1;
74+ mEtaMaxScintC = Constants::etaMax_scintC_v1;
75+ mEtaMaxCherA = Constants::etaMax_cherA_v1;
76+ mEtaMaxCherC = Constants::etaMax_cherC_v1;
77+ mZScintA = Constants::zscintA_v1;
78+ mZCherA = Constants::zcherA_v1;
79+ mZScintC = Constants::zscintC_v1;
80+ mZCherC = Constants::zcherC_v1;
81+ mYScint = 30 .f ;
82+ mYCher = 30 .f ;
7583 mTopVolumeNameScint = " barrel" ;
7684 mTopVolumeNameCher = " barrel" ;
7785 break ;
7886 case 2 :
79- mEtaMinScint = Constants::etaMin_scint_v2;
80- mEtaMinCher = Constants::etaMin_cher_v2;
81- mEtaMaxScint = Constants::etaMax_scint_v2;
82- mEtaMaxCher = Constants::etaMax_cher_v2;
83- mZScint = Constants::zscint_v2;
84- mZCher = Constants::zcher_v2;
87+ mEtaMinScintA = Constants::etaMin_scint_v2;
88+ mEtaMinScintC = Constants::etaMin_scint_v2;
89+ mEtaMinCherA = Constants::etaMin_cher_v2;
90+ mEtaMinCherC = Constants::etaMin_cher_v2;
91+ mEtaMaxScintA = Constants::etaMax_scint_v2;
92+ mEtaMaxScintC = Constants::etaMax_scint_v2;
93+ mEtaMaxCherA = Constants::etaMax_cher_v2;
94+ mEtaMaxCherC = Constants::etaMax_cher_v2;
95+ mZScintA = Constants::zscint_v2;
96+ mZCherA = Constants::zcher_v2;
97+ mZScintC = -mZScintA ;
98+ mZCherC = - mZCherC ;
99+ mYScint = 0 .f ;
100+ mYCher = 0 .f ;
85101 mTopVolumeNameScint = " cave" ;
86102 mTopVolumeNameCher = " cave" ;
87103 break ;
88104 case 3 :
89- mEtaMinScint = Constants::etaMin_scint_v3;
90- mEtaMinCher = Constants::etaMin_cher_v3;
91- mEtaMaxScint = Constants::etaMax_scint_v3;
92- mEtaMaxCher = Constants::etaMax_cher_v3;
93- mZScint = Constants::zscint_v3;
94- mZCher = Constants::zcher_v3;
105+ mEtaMinScintA = Constants::etaMin_scintA_v1;
106+ mEtaMinScintC = Constants::etaMin_scintC_v1;
107+ mEtaMinCherA = Constants::etaMin_cher_v2;
108+ mEtaMinCherC = Constants::etaMin_cher_v2;
109+ mEtaMaxScintA = Constants::etaMax_scintA_v1;
110+ mEtaMaxScintC = Constants::etaMax_scintC_v1;
111+ mEtaMaxCherA = Constants::etaMax_cher_v2;
112+ mEtaMaxCherC = Constants::etaMax_cher_v2;
113+ mZScintA = Constants::zscintA_v1;
114+ mZScintC = Constants::zscintC_v1;
115+ mZCherA = Constants::zcher_v2;
116+ mZCherC = - mZCherA ;
117+ mYScint = 30 .f ;
118+ mYCher = 0 .f ;
95119 mTopVolumeNameScint = " barrel" ;
96120 mTopVolumeNameCher = " cave" ;
97121 break ;
98122 }
99123
100- for (int i = 0 ; i <= mNumberOfRingsScint + 1 ; i++) {
101- float eta = mEtaMaxScint - i * (mEtaMaxScint - mEtaMinScint ) / mNumberOfRingsScint ;
102- float r = getRingSize (mZScint , eta);
103- mRingSizesScint .emplace_back (r);
104- }
105-
106- for (int i = 0 ; i <= mNumberOfRingsCher + 1 ; i++) {
107- float eta = mEtaMaxCher - i * (mEtaMaxCher - mEtaMinCher ) / mNumberOfRingsCher ;
108- float r = getRingSize (mZCher , eta);
109- mRingSizesCher .emplace_back (r);
110- }
111124}
112125
113126Detector::Detector (const Detector& rhs)
@@ -269,12 +282,12 @@ void Detector::createMaterials()
269282
270283 int fieldType;
271284 float maxField;
272- o2::base::Detector::initFieldTrackingParams (fieldType, maxField);
273- LOG (info) << " FV0: createMaterials(): fieldType " << fieldType << " , maxField " << maxField;
274-
275285 // TODO: Comment out two lines below once tested that the above function assigns field type and max correctly
276286 fieldType = 3 ; // Field type
277287 maxField = 5.0 ; // Field max.
288+ // o2::base::Detector::initFieldTrackingParams(fieldType, maxField);
289+ LOG (info) << " FV0: createMaterials(): fieldType " << fieldType << " , maxField " << maxField;
290+
278291
279292 float tmaxfd3 = -10.0 ; // max deflection angle due to magnetic field in one step
280293 float stepmax = 0.1 ; // max step allowed [cm]
@@ -292,8 +305,8 @@ void Detector::createMaterials()
292305 o2::base::Detector::Medium (Aluminium, " Aluminium" , matId, unsens, fieldType, maxField,
293306 tmaxfd3, stepmax, deemax, epsil, stepmin);
294307
295- // Cherenkov part
296- fieldType = 2 ; // magneticField->Integ();
308+ // Cherenkov radiator
309+ fieldType = 2 ; // magneticField->Integ();
297310 maxField = 10 .; // magneticField->Max();
298311
299312 // Radiator glass SiO2
@@ -331,11 +344,11 @@ void Detector::buildModules()
331344 TGeoVolumeAssembly* vFD3_CherA = buildModuleCherA ();
332345 TGeoVolumeAssembly* vFD3_CherC = buildModuleCherC ();
333346
334- topVolScint->AddNode (vFD3_ScintA, 1 , new TGeoTranslation (0 ., 0 ., mZScint ));
335- topVolScint->AddNode (vFD3_ScintC, 2 , new TGeoTranslation (0 ., 0 ., - mZScint ));
347+ topVolScint->AddNode (vFD3_ScintA, 1 , new TGeoTranslation (0 ., mYScint , mZScintA ));
348+ topVolScint->AddNode (vFD3_ScintC, 2 , new TGeoTranslation (0 ., mYScint , mZScintC ));
336349
337- topVolCher->AddNode (vFD3_CherA, 1 , new TGeoTranslation (0 ., 0 ., mZCher ));
338- topVolCher->AddNode (vFD3_CherC, 2 , new TGeoTranslation (0 ., 0 ., - mZCher ));
350+ topVolCher->AddNode (vFD3_CherA, 1 , new TGeoTranslation (0 ., mYCher , mZCherA ));
351+ topVolCher->AddNode (vFD3_CherC, 2 , new TGeoTranslation (0 ., mYCher , mZCherC ));
339352}
340353
341354TGeoVolumeAssembly* Detector::buildModuleScintA ()
@@ -349,8 +362,10 @@ TGeoVolumeAssembly* Detector::buildModuleScintA()
349362 for (int ir = 0 ; ir < mNumberOfRingsScint ; ir++) {
350363 std::string rName = " fd3_ring" + std::to_string (ir + 1 );
351364 TGeoVolumeAssembly* ring = new TGeoVolumeAssembly (rName.c_str ());
352- float rmin = mRingSizesScint [ir];
353- float rmax = mRingSizesScint [ir + 1 ];
365+ float etaMin = mEtaMaxScintA - (ir + 1 ) * (mEtaMaxScintA - mEtaMinScintA ) / mNumberOfRingsScint ;
366+ float etaMax = mEtaMaxScintA - ir * (mEtaMaxScintA - mEtaMinScintA ) / mNumberOfRingsScint ;
367+ float zmod = mZScintA ;
368+ float rmin = getRingSize (zmod, etaMax), rmax = getRingSize (zmod, etaMin);
354369 LOG (info) << " Scintillator ring" << ir << " : from " << rmin << " to " << rmax;
355370 for (int ic = 0 ; ic < mNumberOfSectors ; ic++) {
356371 int cellId = ic + mNumberOfSectors * ir;
@@ -366,7 +381,7 @@ TGeoVolumeAssembly* Detector::buildModuleScintA()
366381 }
367382 ring->AddNode (nod, cellId);
368383 }
369- mod->AddNode (ring, ir + 1 );
384+ mod->AddNode (ring, 1 );
370385 }
371386
372387 return mod;
@@ -383,8 +398,10 @@ TGeoVolumeAssembly* Detector::buildModuleScintC()
383398 for (int ir = 0 ; ir < mNumberOfRingsScint ; ir++) {
384399 std::string rName = " fd3_ring" + std::to_string (ir + 1 + mNumberOfRingsScint );
385400 TGeoVolumeAssembly* ring = new TGeoVolumeAssembly (rName.c_str ());
386- float rmin = mRingSizesScint [ir];
387- float rmax = mRingSizesScint [ir + 1 ];
401+ float etaMin = mEtaMinScintC + ir * (mEtaMaxScintC - mEtaMinScintC ) / mNumberOfRingsScint ;
402+ float etaMax = mEtaMinScintC + (ir + 1 ) * (mEtaMaxScintC - mEtaMinScintC ) / mNumberOfRingsScint ;
403+ float zmod = mZScintC ;
404+ float rmin = getRingSize (zmod, etaMin), rmax = getRingSize (zmod, etaMax);
388405 LOG (info) << " Scintillator ring" << ir + mNumberOfRingsScint << " : from " << rmin << " to " << rmax;
389406 for (int ic = 0 ; ic < mNumberOfSectors ; ic++) {
390407 int cellId = ic + mNumberOfSectors * (ir + mNumberOfRingsScint );
@@ -400,7 +417,7 @@ TGeoVolumeAssembly* Detector::buildModuleScintC()
400417 }
401418 ring->AddNode (nod, cellId);
402419 }
403- mod->AddNode (ring, ir + 1 );
420+ mod->AddNode (ring, 1 );
404421 }
405422
406423 return mod;
@@ -412,16 +429,18 @@ TGeoVolumeAssembly* Detector::buildModuleCherA()
412429
413430 const TGeoMedium* medium = gGeoManager ->GetMedium (" FD3_Glass" );
414431
415- float dphiDeg = 360 . / mNumberOfSectors ;
432+ float dphiDeg = 360 .; // / mNumberOfSectors;
416433
417434 for (int ir = 0 ; ir < mNumberOfRingsCher ; ir++) {
418435 std::string rName = " fd3_ring" + std::to_string (ir + 1 + 2 * mNumberOfRingsScint );
419436 TGeoVolumeAssembly* ring = new TGeoVolumeAssembly (rName.c_str ());
420- float rmin = mRingSizesCher [ir];
421- float rmax = mRingSizesCher [ir + 1 ];
437+ float etaMin = mEtaMaxCherA - (ir + 1 ) * (mEtaMaxCherA - mEtaMinCherA ) / mNumberOfRingsCher ;
438+ float etaMax = mEtaMaxCherA - ir * (mEtaMaxCherA - mEtaMinCherA ) / mNumberOfRingsCher ;
439+ float zmod = mZCherA ;
440+ float rmin = getRingSize (zmod, etaMax), rmax = getRingSize (zmod, etaMin);
422441 LOG (info) << " Radiator ring" << ir << " : from " << rmin << " to " << rmax;
423442 for (int ic = 0 ; ic < mNumberOfSectors ; ic++) {
424- int cellId = ic + mNumberOfSectors * (ir + 2 * mNumberOfRingsCher );
443+ int cellId = ic + mNumberOfSectors * (ir + 2 * mNumberOfRingsScint );
425444 std::string nodeName = " fd3_node" + std::to_string (cellId);
426445 float phimin = dphiDeg * ic;
427446 float phimax = dphiDeg * (ic + 1 );
@@ -434,7 +453,7 @@ TGeoVolumeAssembly* Detector::buildModuleCherA()
434453 }
435454 ring->AddNode (nod, cellId);
436455 }
437- mod->AddNode (ring, ir + 1 );
456+ mod->AddNode (ring, 1 );
438457 }
439458
440459 return mod;
@@ -446,13 +465,15 @@ TGeoVolumeAssembly* Detector::buildModuleCherC()
446465
447466 const TGeoMedium* medium = gGeoManager ->GetMedium (" FD3_Glass" );
448467
449- float dphiDeg = 360 . / mNumberOfSectors ;
468+ float dphiDeg = 360 .; // / mNumberOfSectors;
450469
451470 for (int ir = 0 ; ir < mNumberOfRingsCher ; ir++) {
452471 std::string rName = " fd3_ring" + std::to_string (ir + 1 + 2 * mNumberOfRingsScint + mNumberOfRingsCher );
453472 TGeoVolumeAssembly* ring = new TGeoVolumeAssembly (rName.c_str ());
454- float rmin = mRingSizesCher [ir];
455- float rmax = mRingSizesCher [ir + 1 ];
473+ float etaMin = mEtaMinCherC + ir * (mEtaMaxCherC - mEtaMinCherC ) / mNumberOfRingsCher ;
474+ float etaMax = mEtaMinCherC + (ir + 1 ) * (mEtaMaxCherC - mEtaMinCherC ) / mNumberOfRingsCher ;
475+ float zmod = mZCherC ;
476+ float rmin = getRingSize (zmod, etaMin), rmax = getRingSize (zmod, etaMax);
456477 LOG (info) << " Radiator ring" << ir + mNumberOfRingsCher << " : from " << rmin << " to " << rmax;
457478 for (int ic = 0 ; ic < mNumberOfSectors ; ic++) {
458479 int cellId = ic + mNumberOfSectors * (ir + 2 * mNumberOfRingsScint + mNumberOfRingsCher );
@@ -468,7 +489,7 @@ TGeoVolumeAssembly* Detector::buildModuleCherC()
468489 }
469490 ring->AddNode (nod, cellId);
470491 }
471- mod->AddNode (ring, ir + 1 );
492+ mod->AddNode (ring, 1 );
472493 }
473494
474495 return mod;
0 commit comments