99// granted to it by virtue of its status as an Intergovernmental Organization
1010// or submit itself to any jurisdiction.
1111
12-
1312// / \file flattenicityTask.cxx
1413// / \brief Run-3 calibration task for FT0 flattenicity
1514// / \author Eisha Rani
@@ -53,7 +52,7 @@ using namespace o2::framework;
5352using namespace o2 ::framework::expressions;
5453using namespace o2 ::soa;
5554
56- using FullTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection, aod::TrackSelectionExtension>;
55+ using FullTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection, aod::TrackSelectionExtension>;
5756
5857using CollisionsWithMult = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::PVMults>;
5958using CollisionsNoMult = soa::Join<aod::Collisions, aod::EvSels>;
@@ -114,11 +113,11 @@ struct FlattenicityTask {
114113 static constexpr float kModuleHalfWidth = 2 .65f ;
115114
116115 static constexpr float kZDetA = 335 .5f ;
117- static constexpr float kModuleAx [NSectorsA] = {-12 .2500f , -6 .1500f , -0 .0500f , 6 .1500f , 12 .2500f , -12 .2500f , -6 .1500f , -0 .0500f , 6 .1500f , 12 .2500f , -13 .5800f , -7 .4800f , 7 .4800f , 13 .5800f , -12 .2500f , -6 .1500f , 0 .0500f , 6 .1500f , 12 .2500f , -12 .2500f , -6 .1500f , 0 .0500f , 6 .1500f , 12 .2500f };
118- static constexpr float kModuleAy [NSectorsA] = {12 .2000f , 12 .2000f , 13 .5300f , 12 .2000f , 12 .2000f , 6 .1000f , 6 .1000f , 7 .4300f , 6 .1000f , 6 .1000f , 0 .0000f , 0 .0000f , 0 .0000f , 0 .0000f , -6 .1000f , -6 .1000f , -7 .4300f , -6 .1000f , -6 .1000f , -12 .2000f , -12 .2000f , -13 .5300f , -12 .2000f , -12 .2000f };
119- static constexpr float kModuleCx [NSectorsC] = {-15 .5426f , 15 .5426f , -15 .5069f , 15 .5069f , -9 .3296f , 9 .3296f , -9 .3296f , 9 .3296f , -9 .3296f , 9 .3296f , -3 .1011f , 3 .1011f , -3 .1286f , 3 .1286f , 3 .1010f , -3 .1010f , 3 .1286f , -3 .1286f , 9 .3295f , -9 .3295f , 9 .3296f , -9 .3296f , 9 .3296f , -9 .3296f , 15 .5425f , -15 .5425f , 15 .5068f , -15 .5068f };
120- static constexpr float kModuleCy [NSectorsC] = {3 .2659f , -3 .2659f , 9 .4726f , -9 .4726f , 3 .2436f , -3 .2436f , 9 .4726f , -9 .4726f , 15 .6494f , -15 .6494f , 9 .4725f , -9 .4725f , 15 .6982f , -15 .6982f , 9 .4724f , -9 .4724f , 15 .6981f , -15 .6981f , 3 .2435f , -3 .2435f , 9 .4725f , -9 .4725f , 15 .6493f , -15 .6493f , 3 .2659f , -3 .2659f , 9 .4725f , -9 .4725f };
121- static constexpr float kModuleCz [NSectorsC] = {-85 .2486f , -85 .2486f , -84 .7790f , -84 .7790f , -86 .1724f , -86 .1724f , -85 .7006f , -85 .7006f , -84 .7685f , -84 .7685f , -86 .1618f , -86 .1618f , -85 .2246f , -85 .2246f , -86 .1619f , -86 .1619f , -85 .2247f , -85 .2247f , -86 .1725f , -86 .1725f , -85 .7006f , -85 .7006f , -84 .7685f , -84 .7685f , -85 .2486f , -85 .2486f , -84 .7791f , -84 .7791f };
116+ static constexpr float kModuleAx [NSectorsA] = {-12 .2500f , -6 .1500f , -0 .0500f , 6 .1500f , 12 .2500f , -12 .2500f , -6 .1500f , -0 .0500f , 6 .1500f , 12 .2500f , -13 .5800f , -7 .4800f , 7 .4800f , 13 .5800f , -12 .2500f , -6 .1500f , 0 .0500f , 6 .1500f , 12 .2500f , -12 .2500f , -6 .1500f , 0 .0500f , 6 .1500f , 12 .2500f };
117+ static constexpr float kModuleAy [NSectorsA] = {12 .2000f , 12 .2000f , 13 .5300f , 12 .2000f , 12 .2000f , 6 .1000f , 6 .1000f , 7 .4300f , 6 .1000f , 6 .1000f , 0 .0000f , 0 .0000f , 0 .0000f , 0 .0000f , -6 .1000f , -6 .1000f , -7 .4300f , -6 .1000f , -6 .1000f , -12 .2000f , -12 .2000f , -13 .5300f , -12 .2000f , -12 .2000f };
118+ static constexpr float kModuleCx [NSectorsC] = {-15 .5426f , 15 .5426f , -15 .5069f , 15 .5069f , -9 .3296f , 9 .3296f , -9 .3296f , 9 .3296f , -9 .3296f , 9 .3296f , -3 .1011f , 3 .1011f , -3 .1286f , 3 .1286f , 3 .1010f , -3 .1010f , 3 .1286f , -3 .1286f , 9 .3295f , -9 .3295f , 9 .3296f , -9 .3296f , 9 .3296f , -9 .3296f , 15 .5425f , -15 .5425f , 15 .5068f , -15 .5068f };
119+ static constexpr float kModuleCy [NSectorsC] = {3 .2659f , -3 .2659f , 9 .4726f , -9 .4726f , 3 .2436f , -3 .2436f , 9 .4726f , -9 .4726f , 15 .6494f , -15 .6494f , 9 .4725f , -9 .4725f , 15 .6982f , -15 .6982f , 9 .4724f , -9 .4724f , 15 .6981f , -15 .6981f , 3 .2435f , -3 .2435f , 9 .4725f , -9 .4725f , 15 .6493f , -15 .6493f , 3 .2659f , -3 .2659f , 9 .4725f , -9 .4725f };
120+ static constexpr float kModuleCz [NSectorsC] = {-85 .2486f , -85 .2486f , -84 .7790f , -84 .7790f , -86 .1724f , -86 .1724f , -85 .7006f , -85 .7006f , -84 .7685f , -84 .7685f , -86 .1618f , -86 .1618f , -85 .2246f , -85 .2246f , -86 .1619f , -86 .1619f , -85 .2247f , -85 .2247f , -86 .1725f , -86 .1725f , -85 .7006f , -85 .7006f , -84 .7685f , -84 .7685f , -85 .2486f , -85 .2486f , -84 .7791f , -84 .7791f };
122121
123122 // Official FT0 channel ID -> geometry module index, built by inverting
124123 // localChannelOrder[] from AliceO2 Detectors/FIT/FT0/base/include/FT0Base/
@@ -127,8 +126,8 @@ struct FlattenicityTask {
127126 // above, so truth-level and reco-level sectors are the same physical
128127 // modules. FT0-C table is indexed by (official channel - 96), i.e. the
129128 // channelC() value stored in AO2D (see QA/hFT0ChannelC to confirm).
130- static constexpr int kChannelToModuleA [NchA] = {12 , 12 , 12 , 12 , 8 , 8 , 8 , 8 , 7 , 7 , 7 , 7 , 6 , 6 , 6 , 6 , 11 , 11 , 11 , 11 , 15 , 15 , 15 , 15 , 16 , 16 , 16 , 16 , 17 , 17 , 17 , 17 , 13 , 13 , 13 , 13 , 9 , 9 , 9 , 9 , 4 , 4 , 4 , 4 , 3 , 3 , 3 , 3 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 5 , 5 , 5 , 5 , 10 , 10 , 10 , 10 , 14 , 14 , 14 , 14 , 19 , 19 , 19 , 19 , 20 , 20 , 20 , 20 , 21 , 21 , 21 , 21 , 22 , 22 , 22 , 22 , 23 , 23 , 23 , 23 , 18 , 18 , 18 , 18 };
131- static constexpr int kChannelToModuleC [NchC] = {18 , 18 , 18 , 18 , 20 , 20 , 20 , 20 , 14 , 14 , 14 , 14 , 10 , 10 , 10 , 10 , 6 , 6 , 6 , 6 , 4 , 4 , 4 , 4 , 19 , 19 , 19 , 19 , 21 , 21 , 21 , 21 , 15 , 15 , 15 , 15 , 11 , 11 , 11 , 11 , 7 , 7 , 7 , 7 , 5 , 5 , 5 , 5 , 24 , 24 , 24 , 24 , 26 , 26 , 26 , 26 , 22 , 22 , 22 , 22 , 16 , 16 , 16 , 16 , 12 , 12 , 12 , 12 , 8 , 8 , 8 , 8 , 2 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 25 , 25 , 25 , 25 , 27 , 27 , 27 , 27 , 23 , 23 , 23 , 23 , 17 , 17 , 17 , 17 , 13 , 13 , 13 , 13 , 9 , 9 , 9 , 9 , 3 , 3 , 3 , 3 , 1 , 1 , 1 , 1 };
129+ static constexpr int kChannelToModuleA [NchA] = {12 , 12 , 12 , 12 , 8 , 8 , 8 , 8 , 7 , 7 , 7 , 7 , 6 , 6 , 6 , 6 , 11 , 11 , 11 , 11 , 15 , 15 , 15 , 15 , 16 , 16 , 16 , 16 , 17 , 17 , 17 , 17 , 13 , 13 , 13 , 13 , 9 , 9 , 9 , 9 , 4 , 4 , 4 , 4 , 3 , 3 , 3 , 3 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 5 , 5 , 5 , 5 , 10 , 10 , 10 , 10 , 14 , 14 , 14 , 14 , 19 , 19 , 19 , 19 , 20 , 20 , 20 , 20 , 21 , 21 , 21 , 21 , 22 , 22 , 22 , 22 , 23 , 23 , 23 , 23 , 18 , 18 , 18 , 18 };
130+ static constexpr int kChannelToModuleC [NchC] = {18 , 18 , 18 , 18 , 20 , 20 , 20 , 20 , 14 , 14 , 14 , 14 , 10 , 10 , 10 , 10 , 6 , 6 , 6 , 6 , 4 , 4 , 4 , 4 , 19 , 19 , 19 , 19 , 21 , 21 , 21 , 21 , 15 , 15 , 15 , 15 , 11 , 11 , 11 , 11 , 7 , 7 , 7 , 7 , 5 , 5 , 5 , 5 , 24 , 24 , 24 , 24 , 26 , 26 , 26 , 26 , 22 , 22 , 22 , 22 , 16 , 16 , 16 , 16 , 12 , 12 , 12 , 12 , 8 , 8 , 8 , 8 , 2 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 25 , 25 , 25 , 25 , 27 , 27 , 27 , 27 , 23 , 23 , 23 , 23 , 17 , 17 , 17 , 17 , 13 , 13 , 13 , 13 , 9 , 9 , 9 , 9 , 3 , 3 , 3 , 3 , 1 , 1 , 1 , 1 };
132131
133132 static constexpr int NFlatBins = 10000 ;
134133 static constexpr int NCorrTitleUpdateInterval = 500 ; // refresh Pearson r in the titles every N filled events
@@ -200,10 +199,10 @@ struct FlattenicityTask {
200199 Configurable<float > cfgEtaMax{" cfgEtaMax" , 0.8 , " Maximum |eta| for INEL>0 and track selection" };
201200 Configurable<float > cfgVzMax{" cfgVzMax" , 10.0 , " Maximum absolute collision vertex z (cm)" };
202201 Configurable<bool > cfgApplySel8{" cfgApplySel8" , true , " Apply sel8 event selection" };
203- Configurable<bool > cfgApplyGoodITSLayersAll{" cfgApplyGoodITSLayersAll" , true , " Apply kIsGoodITSLayersAll event selection" };
202+ Configurable<bool > cfgApplyGoodITSLayersAll{" cfgApplyGoodITSLayersAll" , true , " Apply kIsGoodITSLayersAll event selection" };
204203 Configurable<bool > cfgRequireInelGt0{" cfgRequireInelGt0" , true , " Require INEL>0" };
205204 Configurable<bool > cfgPileupRejection{" cfgPileupRejection" , true , " Reject same-bunch pileup (kNoSameBunchPileup)" };
206- Configurable<bool > cfgGoodZvertex{" cfgGoodZvertex" , true , " Require good z-vertex agreement PV-vs-FT0 (kIsGoodZvtxFT0vsPV)" };
205+ Configurable<bool > cfgGoodZvertex{" cfgGoodZvertex" , true , " Require good z-vertex agreement PV-vs-FT0 (kIsGoodZvtxFT0vsPV)" };
207206
208207 Configurable<int > cfgITSreq{" cfgITSreq" , 0 , " ITS requirement (0 = Run3ITSibAny)" };
209208
@@ -226,12 +225,12 @@ struct FlattenicityTask {
226225 {
227226 auto hComb = histos.get <TH2 >(HIST (" MCReco/hTruthVsRecoCombined" ));
228227 if (hComb && hComb->GetEntries () > 0 ) {
229- hComb->SetTitle (Form (" Combined: reco vs truth (Pearson r = %.3f);1-#rho (reco, FT0);1-#rho (truth, MC)" , hComb->GetCorrelationFactor ()));
228+ hComb->SetTitle (Form (" Combined: reco vs truth (Pearson r = %.3f);1-#rho (reco, FT0);1-#rho (truth, MC)" , hComb->GetCorrelationFactor ()));
230229 hComb->SetOption (" COLZ" );
231230 }
232231 auto hAvg = histos.get <TH2 >(HIST (" MCReco/hTruthVsRecoAverage" ));
233232 if (hAvg && hAvg->GetEntries () > 0 ) {
234- hAvg->SetTitle (Form (" Average: reco vs truth (Pearson r = %.3f);1-#rho (reco, FT0);1-#rho (truth, MC)" , hAvg->GetCorrelationFactor ()));
233+ hAvg->SetTitle (Form (" Average: reco vs truth (Pearson r = %.3f);1-#rho (reco, FT0);1-#rho (truth, MC)" , hAvg->GetCorrelationFactor ()));
235234 hAvg->SetOption (" COLZ" );
236235 }
237236 }
@@ -269,13 +268,13 @@ struct FlattenicityTask {
269268 const AxisSpec flatAxisSpecTruthComb{NFlatBins, 0.0 , 1.0 , " flattenicity (MC truth, combined)" };
270269 const AxisSpec flatAxisSpecRecoAvg{NFlatBins, 0.0 , 1.0 , " flattenicity (reco, FT0 average)" };
271270 const AxisSpec flatAxisSpecRecoComb{NFlatBins, 0.0 , 1.0 , " flattenicity (reco, FT0 combined)" };
272- hPtVsFlatTruthAvg = histos.add <TH2 >(" MCTruth/hPtVsFlatTruthAvg" , " MC truth: pT vs flattenicity (average);flattenicity;#it{p}_{T}" ,
271+ hPtVsFlatTruthAvg = histos.add <TH2 >(" MCTruth/hPtVsFlatTruthAvg" , " MC truth: pT vs flattenicity (average);flattenicity;#it{p}_{T}" ,
273272 HistType::kTH2F , {flatAxisSpecTruthAvg, ptAxisSpec});
274- hPtVsFlatTruthComb = histos.add <TH2 >(" MCTruth/hPtVsFlatTruthComb" , " MC truth: pT vs flattenicity (combined);flattenicity;#it{p}_{T}" ,
273+ hPtVsFlatTruthComb = histos.add <TH2 >(" MCTruth/hPtVsFlatTruthComb" , " MC truth: pT vs flattenicity (combined);flattenicity;#it{p}_{T}" ,
275274 HistType::kTH2F , {flatAxisSpecTruthComb, ptAxisSpec});
276- hPtVsFlatRecoAvg = histos.add <TH2 >(" MCReco/hPtVsFlatRecoAvg" , " MC reco: pT vs flattenicity (FT0 average);flattenicity;#it{p}_{T}" ,
275+ hPtVsFlatRecoAvg = histos.add <TH2 >(" MCReco/hPtVsFlatRecoAvg" , " MC reco: pT vs flattenicity (FT0 average);flattenicity;#it{p}_{T}" ,
277276 HistType::kTH2F , {flatAxisSpecRecoAvg, ptAxisSpec});
278- hPtVsFlatRecoComb = histos.add <TH2 >(" MCReco/hPtVsFlatRecoComb" , " MC reco: pT vs flattenicity (FT0 combined);flattenicity;#it{p}_{T}" ,
277+ hPtVsFlatRecoComb = histos.add <TH2 >(" MCReco/hPtVsFlatRecoComb" , " MC reco: pT vs flattenicity (FT0 combined);flattenicity;#it{p}_{T}" ,
279278 HistType::kTH2F , {flatAxisSpecRecoComb, ptAxisSpec});
280279 }
281280
@@ -400,7 +399,7 @@ struct FlattenicityTask {
400399 }
401400
402401 template <typename FT0 >
403- bool computeFT0Flattenicities (const FT0 & ft0, float & flattenicityAverage, float & flattenicityCombined, float & sumAmplitude)
402+ bool computeFT0Flattenicities (const FT0 & ft0, float & flattenicityAverage, float & flattenicityCombined, float & sumAmplitude)
404403 {
405404 std::array<float , NSectorsA> countsA{};
406405 std::array<float , NSectorsC> countsC{};
0 commit comments