@@ -91,6 +91,9 @@ struct LongrangecorrDerived {
9191 Configurable<float > cfgZdcCut{" cfgZdcCut" , 0 .1f , " ZDC threshold" };
9292 Configurable<int > cfgGapSideCut{" cfgGapSideCut" , 0 , " Gap-side A=0, C=1, AC = 2, No Gap = -1, All events = 3" };
9393
94+ Configurable<bool > isApplyAmpCut{" isApplyAmpCut" , false , " Enable FT0 amplitude cut" };
95+ Configurable<float > cfgLowAmpCut{" cfgLowAmpCut" , 2 .0f , " Low FT0 amplitude cut" };
96+
9497 ConfigurableAxis axisMultiplicity{" axisMultiplicity" , {VARIABLE_WIDTH, 0 , 10 , 15 , 25 , 50 , 60 , 1000 }, " multiplicity axis" };
9598 ConfigurableAxis axisPhi{" axisPhi" , {96 , 0 , TwoPI}, " #phi axis" };
9699 ConfigurableAxis axisEtaTrig{" axisEtaTrig" , {40 , -1 ., 1 .}, " #eta trig axis" };
@@ -101,6 +104,8 @@ struct LongrangecorrDerived {
101104 ConfigurableAxis axisDeltaPhi{" axisDeltaPhi" , {72 , -PIHalf, PIHalf * 3 }, " delta phi axis for histograms" };
102105 ConfigurableAxis axisDeltaEta{" axisDeltaEta" , {40 , -6 , -2 }, " delta eta axis for histograms" };
103106 ConfigurableAxis axisInvMass{" axisInvMass" , {VARIABLE_WIDTH, 1.7 , 1.75 , 1.8 , 1.85 , 1.9 , 1.95 , 2.0 }, " invariant mass axis" };
107+ ConfigurableAxis axisInvMassQA{" axisInvMassQA" , {20 , 0.45 , 0.55 }, " invariant mass axis for QA" };
108+ ConfigurableAxis axisAmplitude{" axisAmplitude" , {5000 , 0 , 10000 }, " FT0 amplitude" };
104109 ConfigurableAxis axisMultME{" axisMultME" , {VARIABLE_WIDTH, 0 , 5 , 10 , 20 , 30 , 40 , 50 , 1000 }, " Mixing bins - multiplicity" };
105110 ConfigurableAxis axisVtxZME{" axisVtxZME" , {VARIABLE_WIDTH, -10 , -8 , -6 , -4 , -2 , 0 , 2 , 4 , 6 , 8 , 10 }, " Mixing bins - z-vertex" };
106111
@@ -168,12 +173,14 @@ struct LongrangecorrDerived {
168173 histos.add (" Trig_phi" , " Trig_phi" , kTH1D , {axisPhi});
169174 histos.add (" Trig_etavsphi" , " Trig_etavsphi" , kTH2D , {axisPhi, axisEtaTrig});
170175 histos.add (" Trig_pt" , " Trig_pt" , kTH1D , {axisPtTrigger});
176+ histos.add (" Trig_invMass" , " Trig_invMass" , kTH1D , {axisInvMassQA});
171177 histos.add (" Trig_hist" , " Trig_hist" , kTHnSparseF , {axisVtxZ, axisMultiplicity, axisPtTrigger, axisInvMass});
172178
173179 histos.add (" Assoc_eta" , " Assoc_eta" , kTH1D , {axisEtaAssoc});
174180 histos.add (" Assoc_phi" , " Assoc_phi" , kTH1D , {axisPhi});
175181 histos.add (" Assoc_etavsphi" , " Assoc_etavsphi" , kTH2D , {axisPhi, axisEtaAssoc});
176182 histos.add (" Assoc_pt" , " Assoc_pt" , kTH1D , {axisPtAssoc});
183+ histos.add (" Assoc_amp" , " Assoc_amp" , kTH1D , {axisAmplitude});
177184
178185 histos.add (" deltaEta_deltaPhi_same" , " " , kTH2D , {axisDeltaPhi, axisDeltaEta});
179186 histos.add (" deltaEta_deltaPhi_mixed" , " " , kTH2D , {axisDeltaPhi, axisDeltaEta});
@@ -193,6 +200,9 @@ struct LongrangecorrDerived {
193200 histos.fill (HIST (" Trig_eta" ), track.eta ());
194201 histos.fill (HIST (" Trig_phi" ), track.phi ());
195202 histos.fill (HIST (" Trig_pt" ), track.pt ());
203+ if constexpr (std::experimental::is_detected<HasInvMass, TTrack>::value) {
204+ histos.fill (HIST (" Trig_invMass" ), track.invMass ());
205+ }
196206 }
197207
198208 template <typename TTrack>
@@ -201,6 +211,11 @@ struct LongrangecorrDerived {
201211 histos.fill (HIST (" Assoc_etavsphi" ), track.phi (), track.eta ());
202212 histos.fill (HIST (" Assoc_eta" ), track.eta ());
203213 histos.fill (HIST (" Assoc_phi" ), track.phi ());
214+ if constexpr (std::experimental::is_detected<HasFt0, TTrack>::value) {
215+ histos.fill (HIST (" Assoc_amp" ), track.amplitude ());
216+ } else {
217+ histos.fill (HIST (" Assoc_pt" ), track.pt ());
218+ }
204219 }
205220
206221 template <bool fillHist = true , typename CheckCol>
@@ -229,6 +244,8 @@ struct LongrangecorrDerived {
229244 using HasInvMass = decltype (std::declval<T&>().invMass());
230245 template <class T >
231246 using HasUpc = decltype (std::declval<T&>().gapSide());
247+ template <class T >
248+ using HasFt0 = decltype (std::declval<T&>().channelID());
232249
233250 template <CorrelationContainer::CFStep step, typename TTarget, typename TTriggers, typename TAssocs>
234251 void fillCorrHist (TTarget target, TTriggers const & triggers, TAssocs const & assocs, bool mixing, float vz, float multiplicity, float eventWeight)
@@ -250,6 +267,10 @@ struct LongrangecorrDerived {
250267 }
251268 }
252269 for (auto const & assoTrack : assocs) {
270+ if constexpr (std::experimental::is_detected<HasFt0, typename TAssocs::iterator>::value) {
271+ if (isApplyAmpCut && (assoTrack.amplitude () < cfgLowAmpCut))
272+ continue ;
273+ }
253274 float deltaPhi = RecoDecay::constrainAngle (triggerTrack.phi () - assoTrack.phi (), -PIHalf);
254275 float deltaEta = triggerTrack.eta () - assoTrack.eta ();
255276 if (!mixing) {
0 commit comments