@@ -83,7 +83,7 @@ using namespace o2::constants::math;
8383auto static constexpr CintZero = 0 ;
8484auto static constexpr KminFt0cCell = 96 ;
8585auto static constexpr TotFt0Channels = 208 ;
86- AxisSpec axisEvent{15 , 0.5 , 15 .5 , " #Event" , " EventAxis" };
86+ AxisSpec axisEvent{20 , 0.5 , 20 .5 , " #Event" , " EventAxis" };
8787AxisSpec axisTrackSel{10 , 0.5 , 10.5 , " #Track" , " TrackAxis" };
8888auto static constexpr KminCharge = 3 .0f ;
8989static constexpr std::string_view species[] = {" Pi" , " Ka" , " Pr" };
@@ -112,7 +112,9 @@ struct LongrangeMaker {
112112 Configurable<bool > isApplyBestCollIndex{" isApplyBestCollIndex" , true , " bestCollIndex" };
113113 Configurable<bool > isrejectFlangeEvent{" isrejectFlangeEvent" , false , " At least one channel with -350 TDC < time < -450 TDC" };
114114 Configurable<bool > isApplyNoCollInTimeRangeStandard{" isApplyNoCollInTimeRangeStandard" , false , " Enable NoCollInTimeRangeStandard cut" };
115+ Configurable<bool > isApplyNoCollInTimeRangeStrict{" isApplyNoCollInTimeRangeStrict" , false , " Enable NoCollInTimeRangeStrict cut" };
115116 Configurable<bool > isApplyNoCollInRofStandard{" isApplyNoCollInRofStandard" , false , " Enable NoCollInRofStandard cut" };
117+ Configurable<bool > isApplyNoCollInRofStrict{" isApplyNoCollInRofStrict" , false , " Enable NoCollInRofStrict cut" };
116118 Configurable<bool > isApplyNoHighMultCollInPrevRof{" isApplyNoHighMultCollInPrevRof" , false , " Enable NoHighMultCollInPrevRof cut" };
117119 Configurable<bool > isApplyCentFT0C{" isApplyCentFT0C" , false , " Centrality based on FT0C" };
118120 Configurable<bool > isApplyCentFV0A{" isApplyCentFV0A" , false , " Centrality based on FV0A" };
@@ -142,6 +144,7 @@ struct LongrangeMaker {
142144 struct : ConfigurableGroup {
143145 Configurable<bool > cfgUseChi2Cut{" cfgUseChi2Cut" , false , " Use condition on MFT track: chi2/Nclusters" };
144146 Configurable<bool > cfgRequireCA{" cfgRequireCA" , false , " Use Cellular Automaton track-finding algorithm" };
147+ Configurable<bool > cfgRequireLTF{" cfgRequireLTF" , false , " Use LTF track-finding algorithm" };
145148 Configurable<bool > useMftPtCut{" useMftPtCut" , true , " Choose to apply MFT track pT cut" };
146149 Configurable<int > cfgMftCluster{" cfgMftCluster" , 5 , " cut on MFT Cluster" };
147150 Configurable<float > cfgMftEtaMax{" cfgMftEtaMax" , -2 .4f , " Maximum MFT eta cut" };
@@ -251,11 +254,13 @@ struct LongrangeMaker {
251254 x->SetBinLabel (6 , " ApplyGoodZvtxFT0vsPV" );
252255 x->SetBinLabel (7 , " ApplyGoodITSLayersAll" );
253256 x->SetBinLabel (8 , " ApplyExtraCorrCut" );
254- x->SetBinLabel (9 , " ApplyNoCollInTimeRangeStandard" );
255- x->SetBinLabel (10 , " ApplyNoCollInRofStandard" );
256- x->SetBinLabel (11 , " ApplyNoHighMultCollInPrevRof" );
257- x->SetBinLabel (12 , " ApplyOccupancySelection" );
258- x->SetBinLabel (13 , " reject flange event" );
257+ x->SetBinLabel (9 , " ApplyNoCollInRofStandard" );
258+ x->SetBinLabel (10 , " ApplyNoCollInRofStrict" );
259+ x->SetBinLabel (11 , " ApplyNoCollInTimeRangeStandard" );
260+ x->SetBinLabel (12 , " ApplyNoCollInTimeRangeStrict" );
261+ x->SetBinLabel (13 , " ApplyNoHighMultCollInPrevRof" );
262+ x->SetBinLabel (14 , " ApplyOccupancySelection" );
263+ x->SetBinLabel (15 , " reject flange event" );
259264 histos.add (" hSelectionResult" , " hSelectionResult" , kTH1I , {{5 , -0.5 , 4.5 }});
260265
261266 histos.add (" hMftTrkSel" , " hMftTrkSel" , kTH1D , {axisTrackSel}, false );
@@ -277,9 +282,6 @@ struct LongrangeMaker {
277282 xMftBestTrk->SetBinLabel (4 , " DCAxy selection" );
278283 xMftBestTrk->SetBinLabel (5 , " DCAz selection" );
279284
280- histos.add (" ReassignedMFTtrackAmbDegree" , " ReassignedMFTtrackAmbDegree" , kTH1D , {cfgAxis.axisMFTAmbDegree });
281- histos.add (" AssignedMFTtrackAmbDegree" , " AssignedMFTtrackAmbDegree" , kTH1D , {cfgAxis.axisMFTAmbDegree });
282-
283285 histos.add (" FT0A_Amp" , " FT0A_Amp" , kTH1D , {cfgAxis.axisAmplitude });
284286 histos.add (" FT0A_Amp_gaincorrected" , " FT0A_Amp_gaincorrected" , kTH1D , {cfgAxis.axisAmplitude });
285287 histos.add (" FT0A_Channel_vs_Amp" , " FT0A_Channel_vs_Amp" , kTH2D , {cfgAxis.axisChannel , cfgAxis.axisAmplitude });
@@ -427,7 +429,7 @@ struct LongrangeMaker {
427429 return ;
428430 }
429431 }
430- histos.fill (HIST (" EventHist" ), 13 );
432+ histos.fill (HIST (" EventHist" ), 15 );
431433 for (std::size_t iCh = 0 ; iCh < ft0.channelA ().size (); iCh++) {
432434 auto chanelid = ft0.channelA ()[iCh];
433435 float ampl = ft0.amplitudeA ()[iCh];
@@ -483,12 +485,6 @@ struct LongrangeMaker {
483485 continue ;
484486 }
485487 auto phi = itrack.phi ();
486- if (itrack.collisionId () != reassoMftTrack.bestCollisionId ()) {
487- histos.fill (HIST (" ReassignedMFTtrackAmbDegree" ), reassoMftTrack.ambDegree ());
488- }
489- if (itrack.collisionId () == reassoMftTrack.bestCollisionId ()) {
490- histos.fill (HIST (" AssignedMFTtrackAmbDegree" ), reassoMftTrack.ambDegree ());
491- }
492488 o2::math_utils::bringTo02Pi (phi);
493489 lrmfttracks (lrcollision.lastIndex (),
494490 reassoMftTrack.ambDegree (),
@@ -497,7 +493,9 @@ struct LongrangeMaker {
497493 phi,
498494 itrack.nClusters (),
499495 reassoMftTrack.bestDCAXY (),
500- reassoMftTrack.bestDCAZ ());
496+ reassoMftTrack.bestDCAZ (),
497+ itrack.isCA (),
498+ itrack.collisionId () != reassoMftTrack.bestCollisionId ());
501499 }
502500
503501 // v0 loop
@@ -664,20 +662,16 @@ struct LongrangeMaker {
664662 }
665663 auto phi = itrack.phi ();
666664 o2::math_utils::bringTo02Pi (phi);
667- if (itrack.collisionId () != reassoMftTrack.bestCollisionId ()) {
668- histos.fill (HIST (" ReassignedMFTtrackAmbDegree" ), reassoMftTrack.ambDegree ());
669- }
670- if (itrack.collisionId () == reassoMftTrack.bestCollisionId ()) {
671- histos.fill (HIST (" AssignedMFTtrackAmbDegree" ), reassoMftTrack.ambDegree ());
672- }
673665 upclrmfttracks (upclrcollision.lastIndex (),
674666 reassoMftTrack.ambDegree (),
675667 itrack.pt (),
676668 itrack.eta (),
677669 phi,
678670 itrack.nClusters (),
679671 reassoMftTrack.bestDCAXY (),
680- reassoMftTrack.bestDCAZ ());
672+ reassoMftTrack.bestDCAZ (),
673+ itrack.isCA (),
674+ itrack.collisionId () != reassoMftTrack.bestCollisionId ());
681675 }
682676
683677 // v0 loop
@@ -869,20 +863,16 @@ struct LongrangeMaker {
869863 }
870864 auto phi = itrack.phi ();
871865 o2::math_utils::bringTo02Pi (phi);
872- if (itrack.collisionId () != reassoMftTrack.bestCollisionId ()) {
873- histos.fill (HIST (" ReassignedMFTtrackAmbDegree" ), reassoMftTrack.ambDegree ());
874- }
875- if (itrack.collisionId () == reassoMftTrack.bestCollisionId ()) {
876- histos.fill (HIST (" AssignedMFTtrackAmbDegree" ), reassoMftTrack.ambDegree ());
877- }
878866 lrmfttracks (lrcollision.lastIndex (),
879867 reassoMftTrack.ambDegree (),
880868 itrack.pt (),
881869 itrack.eta (),
882870 phi,
883871 itrack.nClusters (),
884872 reassoMftTrack.bestDCAXY (),
885- reassoMftTrack.bestDCAZ ());
873+ reassoMftTrack.bestDCAZ (),
874+ itrack.isCA (),
875+ itrack.collisionId () != reassoMftTrack.bestCollisionId ());
886876 }
887877
888878 for (const auto & particle : mcparticles) {
@@ -1034,6 +1024,12 @@ struct LongrangeMaker {
10341024 if (!isMftTrackSelected (track)) {
10351025 continue ;
10361026 }
1027+ if (cfgmfttrksel.cfgRequireCA && !track.isCA ()) {
1028+ continue ;
1029+ }
1030+ if (cfgmfttrksel.cfgRequireLTF && track.isCA ()) {
1031+ continue ;
1032+ }
10371033 if (!track.has_mcParticle ())
10381034 continue ;
10391035 auto particle = track.mcParticle ();
@@ -1096,22 +1092,30 @@ struct LongrangeMaker {
10961092 return false ;
10971093 }
10981094 histos.fill (HIST (" EventHist" ), 8 );
1099- if (cfgevtsel.isApplyNoCollInTimeRangeStandard && !col.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
1095+ if (cfgevtsel.isApplyNoCollInRofStandard && !col.selection_bit (o2::aod::evsel::kNoCollInRofStandard )) {
11001096 return false ;
11011097 }
11021098 histos.fill (HIST (" EventHist" ), 9 );
1103- if (cfgevtsel.isApplyNoCollInRofStandard && !col.selection_bit (o2::aod::evsel::kNoCollInRofStandard )) {
1099+ if (cfgevtsel.isApplyNoCollInRofStrict && !col.selection_bit (o2::aod::evsel::kNoCollInRofStrict )) {
11041100 return false ;
11051101 }
11061102 histos.fill (HIST (" EventHist" ), 10 );
1107- if (cfgevtsel.isApplyNoHighMultCollInPrevRof && !col.selection_bit (o2::aod::evsel::kNoHighMultCollInPrevRof )) {
1103+ if (cfgevtsel.isApplyNoCollInTimeRangeStandard && !col.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
11081104 return false ;
11091105 }
11101106 histos.fill (HIST (" EventHist" ), 11 );
1111- if (cfgevtsel.isApplyOccuSelection && ( col.trackOccupancyInTimeRange () > cfgevtsel. cfgOccuCut )) {
1107+ if (cfgevtsel.isApplyNoCollInTimeRangeStrict && ! col.selection_bit (o2::aod::evsel:: kNoCollInTimeRangeStrict )) {
11121108 return false ;
11131109 }
11141110 histos.fill (HIST (" EventHist" ), 12 );
1111+ if (cfgevtsel.isApplyNoHighMultCollInPrevRof && !col.selection_bit (o2::aod::evsel::kNoHighMultCollInPrevRof )) {
1112+ return false ;
1113+ }
1114+ histos.fill (HIST (" EventHist" ), 13 );
1115+ if (cfgevtsel.isApplyOccuSelection && (col.trackOccupancyInTimeRange () > cfgevtsel.cfgOccuCut )) {
1116+ return false ;
1117+ }
1118+ histos.fill (HIST (" EventHist" ), 14 );
11151119 return true ;
11161120 }
11171121
@@ -1247,9 +1251,6 @@ struct LongrangeMaker {
12471251 if constexpr (fillHis) {
12481252 histos.fill (HIST (" hMftTrkSel" ), 5 );
12491253 }
1250- if (cfgmfttrksel.cfgRequireCA && !track.isCA ()) {
1251- return false ;
1252- }
12531254 if constexpr (fillHis) {
12541255 histos.fill (HIST (" hMftTrkSel" ), 6 );
12551256 }
0 commit comments