@@ -113,7 +113,6 @@ struct OnTheFlyTracker {
113113 Configurable<std::string> lutDe{" lutDe" , " lutCovm.de.dat" , " LUT for deuterons" };
114114 Configurable<std::string> lutTr{" lutTr" , " lutCovm.tr.dat" , " LUT for tritons" };
115115 Configurable<std::string> lutHe3{" lutHe3" , " lutCovm.he3.dat" , " LUT for Helium-3" };
116- Configurable<std::string> lutAl{" lutAl" , " lutCovm.he3.dat" , " LUT for Alphas" }; // To be created, for now propagating as He-3
117116
118117 struct : ConfigurableGroup {
119118 ConfigurableAxis axisMomentum{" axisMomentum" , {VARIABLE_WIDTH, 0 .0f , 0 .1f , 0 .2f , 0 .3f , 0 .4f , 0 .5f , 0 .6f , 0 .7f , 0 .8f , 0 .9f , 1 .0f , 1 .1f , 1 .2f , 1 .3f , 1 .4f , 1 .5f , 1 .6f , 1 .7f , 1 .8f , 1 .9f , 2 .0f , 2 .2f , 2 .4f , 2 .6f , 2 .8f , 3 .0f , 3 .2f , 3 .4f , 3 .6f , 3 .8f , 4 .0f , 4 .4f , 4 .8f , 5 .2f , 5 .6f , 6 .0f , 6 .5f , 7 .0f , 7 .5f , 8 .0f , 9 .0f , 10 .0f , 11 .0f , 12 .0f , 13 .0f , 14 .0f , 15 .0f , 17 .0f , 19 .0f , 21 .0f , 23 .0f , 25 .0f , 30 .0f , 35 .0f , 40 .0f , 50 .0f }, " #it{p} (GeV/#it{c})" };
@@ -139,11 +138,12 @@ struct OnTheFlyTracker {
139138 Configurable<int > minSiliconHits{" minSiliconHits" , 6 , " minimum number of silicon hits to accept track" };
140139 Configurable<int > minSiliconHitsIfTPCUsed{" minSiliconHitsIfTPCUsed" , 2 , " minimum number of silicon hits to accept track in case TPC info is present" };
141140 Configurable<int > minTPCClusters{" minTPCClusters" , 70 , " minimum number of TPC hits necessary to consider minSiliconHitsIfTPCUsed" };
142- Configurable<int > alice3detector{" alice3detector" , 0 , " 0: ALICE 3 v1, 1: ALICE 3 v4" };
141+ Configurable<int > alice3detector{" alice3detector" , 2 , " 0: ALICE 3 v1, 1: ALICE 3 v4, 2: ALICE 3 Sep 2025 " };
143142 Configurable<bool > applyZacceptance{" applyZacceptance" , false , " apply z limits to detector layers or not" };
144143 Configurable<bool > applyMSCorrection{" applyMSCorrection" , true , " apply ms corrections for secondaries or not" };
145144 Configurable<bool > applyElossCorrection{" applyElossCorrection" , true , " apply eloss corrections for secondaries or not" };
146145 Configurable<bool > applyEffCorrection{" applyEffCorrection" , true , " apply efficiency correction or not" };
146+ Configurable<int > scaleVD{" scaleVD" , 1 , " scale x0 and xrho in VD layers" };
147147 Configurable<std::vector<float >> pixelRes{" pixelRes" , {0.00025 , 0.00025 , 0.001 , 0.001 }, " RPhiIT, ZIT, RPhiOT, ZOT" };
148148 } fastTrackerSettings; // allows for gap between peak and bg in case someone wants to
149149
@@ -240,44 +240,32 @@ struct OnTheFlyTracker {
240240
241241 // For TGenPhaseSpace seed
242242 TRandom3 rand;
243+ Service<o2::ccdb::BasicCCDBManager> ccdb;
243244
244245 void init (o2::framework::InitContext&)
245246 {
247+
248+ ccdb->setURL (" http://alice-ccdb.cern.ch" );
249+ ccdb->setTimestamp (-1 );
250+
246251 if (enableLUT) {
247- std::map<int , const char *> mapPdgLut;
248- const char * lutElChar = lutEl->c_str ();
249- const char * lutMuChar = lutMu->c_str ();
250- const char * lutPiChar = lutPi->c_str ();
251- const char * lutKaChar = lutKa->c_str ();
252- const char * lutPrChar = lutPr->c_str ();
253-
254- LOGF (info, " Will load electron lut file ..: %s" , lutElChar);
255- LOGF (info, " Will load muon lut file ......: %s" , lutMuChar);
256- LOGF (info, " Will load pion lut file ......: %s" , lutPiChar);
257- LOGF (info, " Will load kaon lut file ......: %s" , lutKaChar);
258- LOGF (info, " Will load proton lut file ....: %s" , lutPrChar);
259-
260- mapPdgLut.insert (std::make_pair (11 , lutElChar));
261- mapPdgLut.insert (std::make_pair (13 , lutMuChar));
262- mapPdgLut.insert (std::make_pair (211 , lutPiChar));
263- mapPdgLut.insert (std::make_pair (321 , lutKaChar));
264- mapPdgLut.insert (std::make_pair (2212 , lutPrChar));
265-
266- if (enableNucleiSmearing) {
267- const char * lutDeChar = lutDe->c_str ();
268- const char * lutTrChar = lutTr->c_str ();
269- const char * lutHe3Char = lutHe3->c_str ();
270- const char * lutAlChar = lutAl->c_str ();
271- mapPdgLut.insert (std::make_pair (1000010020 , lutDeChar));
272- mapPdgLut.insert (std::make_pair (1000010030 , lutTrChar));
273- mapPdgLut.insert (std::make_pair (1000020030 , lutHe3Char));
274- mapPdgLut.insert (std::make_pair (1000020030 , lutAlChar));
275- }
276- for (const auto & e : mapPdgLut) {
277- if (!mSmearer .loadTable (e.first , e.second )) {
278- LOG (fatal) << " Having issue with loading the LUT " << e.first << " " << e.second ;
252+ mSmearer .setCcdbManager (ccdb.operator ->());
253+
254+ auto loadLUT = [&](int pdg, const std::string& lutFile) {
255+ bool success = mSmearer .loadTable (pdg, lutFile.c_str ());
256+ if (!success && !lutFile.empty ()) {
257+ LOG (fatal) << " Having issue with loading the LUT " << pdg << " " << lutFile;
279258 }
280- }
259+ };
260+ loadLUT (11 , lutEl.value );
261+ loadLUT (13 , lutMu.value );
262+ loadLUT (211 , lutPi.value );
263+ loadLUT (321 , lutKa.value );
264+ loadLUT (2212 , lutPr.value );
265+ loadLUT (1000010020 , lutDe.value );
266+ loadLUT (1000010030 , lutTr.value );
267+ loadLUT (1000020030 , lutHe3.value );
268+
281269 // interpolate efficiencies if requested to do so
282270 mSmearer .interpolateEfficiency (static_cast <bool >(interpolateLutEfficiencyVsNch));
283271
@@ -425,12 +413,22 @@ struct OnTheFlyTracker {
425413 fastTracker.SetApplyMSCorrection (fastTrackerSettings.applyMSCorrection );
426414 fastTracker.SetApplyElossCorrection (fastTrackerSettings.applyElossCorrection );
427415
428- if (fastTrackerSettings.alice3detector == 0 ) {
429- fastTracker.AddSiliconALICE3v2 (fastTrackerSettings.pixelRes );
430- }
431- if (fastTrackerSettings.alice3detector == 1 ) {
432- fastTracker.AddSiliconALICE3v4 (fastTrackerSettings.pixelRes );
433- fastTracker.AddTPC (0.1 , 0.1 );
416+ switch (fastTrackerSettings.alice3detector ) {
417+ case 0 :
418+ fastTracker.AddSiliconALICE3v2 (fastTrackerSettings.pixelRes );
419+ break ;
420+
421+ case 1 :
422+ fastTracker.AddSiliconALICE3v4 (fastTrackerSettings.pixelRes );
423+ fastTracker.AddTPC (0.1 , 0.1 );
424+ break ;
425+
426+ case 2 :
427+ fastTracker.AddSiliconALICE3 (fastTrackerSettings.scaleVD , fastTrackerSettings.pixelRes );
428+ break ;
429+
430+ default :
431+ break ;
434432 }
435433
436434 // print fastTracker settings
@@ -518,8 +516,7 @@ struct OnTheFlyTracker {
518516 continue ;
519517 }
520518 const auto pdg = std::abs (mcParticle.pdgCode ());
521- if (pdg != kElectron && pdg != kMuonMinus && pdg != kPiPlus && pdg != kKPlus && pdg != kProton
522- && pdg != 1000010020 && pdg != 1000010030 && pdg != 1000020030 && pdg != 1000020040 ) {
519+ if (pdg != kElectron && pdg != kMuonMinus && pdg != kPiPlus && pdg != kKPlus && pdg != kProton ) {
523520 if (!cascadeDecaySettings.decayXi ) {
524521 continue ;
525522 } else if (pdg != 3312 ) {
@@ -566,8 +563,7 @@ struct OnTheFlyTracker {
566563 continue ;
567564 }
568565 }
569- if (pdg != kElectron && pdg != kMuonMinus && pdg != kPiPlus && pdg != kKPlus && pdg != kProton
570- && pdg != 1000010020 && pdg != 1000010030 && pdg != 1000020030 && pdg != 1000020040 ) {
566+ if (pdg != kElectron && pdg != kMuonMinus && pdg != kPiPlus && pdg != kKPlus && pdg != kProton ) {
571567 if (!cascadeDecaySettings.decayXi ) {
572568 continue ;
573569 } else if (pdg != 3312 ) {
0 commit comments