Skip to content

Commit 2706f4b

Browse files
authored
[PWGCF] additions to IV, validations of banishment loop, support for ES, etc. (#8859)
1 parent 936ee58 commit 2706f4b

File tree

6 files changed

+752
-129
lines changed

6 files changed

+752
-129
lines changed

PWGCF/MultiparticleCorrelations/Core/MuPa-Configurables.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ struct : ConfigurableGroup {
2626
Configurable<bool> cfVerboseUtility{"cfVerboseUtility", false, "run or not in verbose mode, also for simple utility functions (but not for function calls per particle)"};
2727
Configurable<bool> cfVerboseForEachParticle{"cfVerboseForEachParticle", false, "run or not in verbose mode (also for function calls per particle)"};
2828
Configurable<bool> cfVerboseEventCounter{"cfVerboseEventCounter", false, "print or not only event counter"};
29+
Configurable<bool> cfVerboseEventCut{"cfVerboseEventCut", false, "print or not which event cut didn't survive"};
2930
Configurable<bool> cfPlainPrintout{"cfPlainPrintout", false, "print in color or in plain (use the latter in HL)"};
3031
Configurable<bool> cfDoAdditionalInsanityChecks{"cfDoAdditionalInsanityChecks", false, "do additional insanity checks at run time (this leads to small loss of performance)"};
3132
Configurable<bool> cfInsanityCheckForEachParticle{"cfInsanityCheckForEachParticle", false, "do insanity checks at run time for each particle, at the expense of losing a lot of performance. Use only during debugging."};
@@ -168,6 +169,21 @@ struct : ConfigurableGroup {
168169
Configurable<string> cfWhichDefaultLabels{"cfWhichDefaultLabels", "standard", "only for testing purposes, select one set of default labels, see GetDefaultObjArrayWithLabels for supported options"};
169170
} cf_t0;
170171

172+
// *) Eta separation:
173+
struct : ConfigurableGroup {
174+
Configurable<bool> cfCalculateEtaSeparations{"cfCalculateEtaSeparations", false, "calculate or not 2p corr. vs. eta separations"};
175+
Configurable<bool> cfCalculateEtaSeparationsAsFunctionOfIntegrated{"cfCalculateEtaSeparationsAsFunctionOfIntegrated", false, "calculate or not 2p corr. vs. eta separations ..."};
176+
Configurable<bool> cfCalculateEtaSeparationsAsFunctionOfMultiplicity{"cfCalculateEtaSeparationsAsFunctionOfMultiplicity", false, "calculate or not 2p corr. vs. eta separations as a function of multiplicity"};
177+
Configurable<bool> cfCalculateEtaSeparationsAsFunctionOfCentrality{"cfCalculateEtaSeparationsAsFunctionOfCentrality", false, "calculate or not 2p corr. vs. eta separations as a function of centrality"};
178+
Configurable<bool> cfCalculateEtaSeparationsAsFunctionOfPt{"cfCalculateEtaSeparationsAsFunctionOfPt", false, "calculate or not 2p corr. vs. eta separations as a function of pt"};
179+
// Configurable<bool> cfCalculateEtaSeparationsAsFunctionOfEta{"cfCalculateEtaSeparationsAsFunctionOfEta", false, "this one doesn't make sense in this context"};
180+
Configurable<bool> cfCalculateEtaSeparationsAsFunctionOfOccupancy{"cfCalculateEtaSeparationsAsFunctionOfOccupancy", false, "calculate or not 2p corr. vs. eta separations as a function of occupancy"};
181+
Configurable<bool> cfCalculateEtaSeparationsAsFunctionOfInteractionRate{"cfCalculateEtaSeparationsAsFunctionOfInteractionRate", false, "calculate or not 2p corr. vs. eta separations as a function of interaction rate"};
182+
Configurable<bool> cfCalculateEtaSeparationsAsFunctionOfCurrentRunDuration{"cfCalculateEtaSeparationsAsFunctionOfCurrentRunDuration", false, "calculate or not E2p corr. vs. eta separations as a function of current run duration (i.e. vs. seconds since start of run)"};
183+
Configurable<vector<float>> cfEtaSeparationsValues{"cfEtaSeparationsValues", {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, "Eta separation between interval A (-eta) and B (+eta)"};
184+
Configurable<vector<string>> cfEtaSeparationsSkipHarmonics{"cfEtaSeparationsSkipHarmonics", {"0-v1", "0-v2", "0-v3", "0-v4", "1-v5", "1-v6", "1-v7", "1-v8", "1-v9"}, "For calculation of 2p correlation with eta separation these harmonics will be skipped (if first flag = \"0-v1\", v1 will be NOT be skipped in the calculus of 2p correlations with eta separations, etc.)"};
185+
} cf_es;
186+
171187
// *) Particle weights:
172188
struct : ConfigurableGroup {
173189
Configurable<bool> cfUsePhiWeights{"cfUsePhiWeights", false, "use or not phi weights"};

PWGCF/MultiparticleCorrelations/Core/MuPa-DataMembers.h

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ struct TaskConfiguration {
4747
Bool_t fVerboseUtility = kFALSE; // print additional info during debugging also for simply utility function, but not for function calls per particle (see next)
4848
Bool_t fVerboseForEachParticle = kFALSE; // print additional info during debugging, also for function calls per particle
4949
Bool_t fVerboseEventCounter = kTRUE; // print or not only event counter
50+
Bool_t fVerboseEventCut = kTRUE; // print or not only which event cut didn't survive
5051
Bool_t fPlainPrintout = kFALSE; // print in color or in plain (use the latter in HL)
5152
Bool_t fDoAdditionalInsanityChecks = kFALSE; // do additional insanity checks at run time, at the expense of losing a bit of performance
5253
// (for instance, check if the run number in the current 'collision' is the same as run number in the first 'collision', etc.)
@@ -183,10 +184,16 @@ struct Qvector {
183184
TList* fQvectorList = NULL; // list to hold all Q-vector objects
184185
TProfile* fQvectorFlagsPro = NULL; // profile to hold all flags for Q-vector
185186
Bool_t fCalculateQvectors = kTRUE; // to calculate or not to calculate Q-vectors, that's a Boolean...
187+
// Does NOT apply to Qa, Qb, etc., vectors, needed for eta separ.
186188
TComplex fQ[gMaxHarmonic * gMaxCorrelator + 1][gMaxCorrelator + 1] = {{TComplex(0., 0.)}}; //! generic Q-vector
187189
TComplex fQvector[gMaxHarmonic * gMaxCorrelator + 1][gMaxCorrelator + 1] = {{TComplex(0., 0.)}}; //! "integrated" Q-vector
188190
TComplex fqvector[eqvectorKine_N][gMaxNoBinsKine][gMaxHarmonic * gMaxCorrelator + 1][gMaxCorrelator + 1] = {{{{TComplex(0., 0.)}}}}; //! "differenttial" q-vector [kine var.][binNo][fMaxHarmonic*fMaxCorrelator+1][fMaxCorrelator+1] = [6*12+1][12+1]
189191
Int_t fqVectorEntries[eqvectorKine_N][gMaxNoBinsKine] = {{0}}; // count number of entries in each differential q-vector
192+
TComplex fQabVector[2][gMaxHarmonic][gMaxNumberEtaSeparations] = {{{TComplex(0., 0.)}}}; //! integrated [-eta or +eta][harmonic][eta separation]
193+
Double_t fMab[2][gMaxNumberEtaSeparations] = {{0.}}; //! multiplicities in 2 eta separated intervals
194+
TH1F* fMabDist[2][2][2][gMaxNumberEtaSeparations] = {{{{NULL}}}}; // multiplicity distributions in A and B, for each eta separation [ A or B ] [rec or sim] [ before or after cuts ] [ eta separation value ]
195+
TComplex fqabVector[2][gMaxNoBinsKine][gMaxHarmonic][gMaxNumberEtaSeparations] = {{{{TComplex(0., 0.)}}}}; //! differential in pt [-eta or +eta][binNo][harmonic][eta separation]
196+
Double_t fmab[2][gMaxNoBinsKine][gMaxNumberEtaSeparations] = {{{0.}}}; //! multiplicities vs pt in 2 eta separated intervals
190197
} qv; // "qv" is a common label for objects in this struct
191198

192199
// *) Multiparticle correlations (standard, isotropic, same harmonic):
@@ -208,7 +215,7 @@ struct ParticleWeights {
208215
Bool_t fUseWeights[eWeights_N] = {false}; // use weights [phi,pt,eta]
209216
TH1D* fWeightsHist[eWeights_N] = {NULL}; //!<! particle weights
210217
Bool_t fUseDiffWeights[eDiffWeights_N] = {false}; // use differential weights [phipt,phieta]
211-
TH1D* fDiffWeightsHist[eDiffWeights_N][fMaxBinsDiffWeights] = {{NULL}}; // histograms holding differential weights [phipt,phieta][bin number]
218+
TH1D* fDiffWeightsHist[eDiffWeights_N][gMaxBinsDiffWeights] = {{NULL}}; // histograms holding differential weights [phipt,phieta][bin number]
212219
TString fFileWithWeights = ""; // path to external ROOT file which holds all particle weights
213220
Bool_t fParticleWeightsAreFetched = kFALSE; // ensures that particle weights are fetched only once
214221
} pw; // "pw" labels an instance of this group of histograms
@@ -281,6 +288,28 @@ struct Test0 {
281288
TH1I* fTest0LabelsPlaceholder = NULL; // store all Test0 labels in this histogram
282289
} t0; // "t0" labels an instance of this group of histograms
283290

291+
// *) Eta separations:
292+
struct EtaSeparations {
293+
TList* fEtaSeparationsList; // list to hold all correlations with eta separations
294+
TProfile* fEtaSeparationsFlagsPro; // profile to hold all flags for correlations with eta separations
295+
bool fCalculateEtaSeparations; // calculate correlations with eta separations
296+
bool fCalculateEtaSeparationsAsFunctionOf[eAsFunctionOf_N] = {false}; //! [0=integrated,1=vs. multiplicity,2=vs. centrality,3=pT,4=eta,5=vs. occupancy, ...]
297+
float fEtaSeparationsValues[gMaxNumberEtaSeparations] = {-1.}; // this array holds eta separation interals for which 2p correlations with eta separation will be calculated
298+
// See the corresponding cofigurable cfEtaSeparationsValues. If entry is -1, it's ignored
299+
bool fEtaSeparationsSkipHarmonics[gMaxHarmonic] = {false}; // For calculation of 2p correlation with eta separation these harmonics will be skipped
300+
TProfile* fEtaSeparationsPro[gMaxHarmonic][gMaxNumberEtaSeparations][eAsFunctionOf_N]; // [harmonic, 0 = v1, 8 = v9][ different eta Separations - see that enum ] [ AFO ]
301+
} es;
302+
303+
// *) Common cosmetics:
304+
struct CommonCosmetics {
305+
TString srs[2] = {"rec", "sim"}; // used in the histogram name as index when saved to the file
306+
TString srs_long[2] = {"reconstructed", "simulated"}; // used in the histogram title
307+
TString sba[2] = {"before", "after"}; // used in the histogram name as index when saved to the file
308+
TString sba_long[2] = {"before cuts", "after cuts"}; // used in the histogram title
309+
TString scc[eCutCounter_N] = {"abs", "seq"}; // used in the histogram name as index when saved to the file
310+
TString scc_long[eCutCounter_N] = {"absolute", "sequential"}; // used in the histogram title
311+
} cc;
312+
284313
// *) Results:
285314
struct Results { // This is in addition also sort of "abstract" interface, which defines common binning, etc., for other groups of histograms.
286315
TList* fResultsList = NULL; //!<! list to hold all results

PWGCF/MultiparticleCorrelations/Core/MuPa-Enums.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ enum eVnPsin { eVn = 0,
9595
enum eEventHistograms {
9696
eNumberOfEvents = 0, // Total events = eNumberOfEvents + eBefore, Selected events = eNumberOfEvents + eAfter
9797
eTotalMultiplicity, // TBI 20241123 I define it as tracks.size(), but most likely this I do not need this
98-
eMultiplicity, // see documentation below for ebye.fMultiplicity
99-
eReferenceMultiplicity, // see documentation below for ebye.fReferenceMultiplicity
98+
eMultiplicity, // see documentation for ebye.fMultiplicity
99+
eReferenceMultiplicity, // see documentation for ebye.fReferenceMultiplicity
100100
eCentrality, // default centrality estimator
101101
eVertex_x,
102102
eVertex_y,
@@ -118,8 +118,8 @@ enum eEventCuts {
118118
eSel8, // See def. of sel7 in Ref. b) above. Event selection decision based on TVX => use only in Run 3, both for data and MC
119119
// *) As of 20240410, kNoITSROFrameBorder (only in MC) and kNoTimeFrameBorder event selection cuts are part of Sel8
120120
// See also email from EK from 2024041
121-
eMultiplicityEstimator, // see documentation below for ebye.fMultiplicity
122-
eReferenceMultiplicityEstimator, // see documentation below for ebye.fReferenceMultiplicity
121+
eMultiplicityEstimator, // see documentation for ebye.fMultiplicity
122+
eReferenceMultiplicityEstimator, // see documentation for ebye.fReferenceMultiplicity
123123
eCentralityEstimator, // the default centrality estimator, set via configurable. All supported centrality estimators, for QA, etc, are in enum eCentralityEstimators
124124
eSelectedEvents, // selected events = eNumberOfEvents + eAfter => therefore I do not need a special histogram for it
125125
eNoSameBunchPileup, // reject collisions in case of pileup with another collision in the same foundBC (emails from IA on 20240404 and EK on 20240410)

PWGCF/MultiparticleCorrelations/Core/MuPa-GlobalConstants.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@
1414

1515
const Int_t gMaxCorrelator = 12;
1616
const Int_t gMaxHarmonic = 9;
17-
const Int_t gMaxIndex = 300; // per order, used only in Test0
18-
const Int_t gMaxNoBinsKine = 1000; // max number of bins for differential q-vector
19-
const Int_t fMaxBinsDiffWeights = 100; // max number of bins for differential weights, see MakeWeights.C
17+
const Int_t gMaxIndex = 300; // per order, used only in Test0
18+
const Int_t gMaxNoBinsKine = 1000; // max number of bins for differential q-vector
19+
const Int_t gMaxBinsDiffWeights = 100; // max number of bins for differential weights, see MakeWeights.C
20+
const Int_t gMaxNumberEtaSeparations = 9; // max number of different eta separations used to calculated 2p corr. with eta separations
2021

2122
#endif // PWGCF_MULTIPARTICLECORRELATIONS_CORE_MUPA_GLOBALCONSTANTS_H_

0 commit comments

Comments
 (0)