Skip to content

Commit 6b32f61

Browse files
authored
[PWGCF] further support for internal validation and occuancy studies (#8415)
1 parent 0e9a886 commit 6b32f61

File tree

4 files changed

+559
-210
lines changed

4 files changed

+559
-210
lines changed

PWGCF/MultiparticleCorrelations/Core/MuPa-Configurables.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ struct : ConfigurableGroup {
3838
struct : ConfigurableGroup {
3939
Configurable<bool> cfCheckUnderflowAndOverflow{"cfCheckUnderflowAndOverflow", false, "check and bail out if in event and particle histograms there are entries which went to underflow or overflow bins (use only locally)"};
4040
Configurable<bool> cfFillQAEventHistograms2D{"cfFillQAEventHistograms2D", false, "if false, all QA 2D event histograms are not filled. if true, only the ones for which fBookQAEventHistograms2D[...] is true, are filled"};
41-
Configurable<vector<string>> cfBookQAEventHistograms2D{"cfBookQAEventHistograms2D", {"MultTPC_vs_NContributors-1", "Vertex_z_vs_MultTPC-1", "Vertex_z_vs_NContributors-1", "CentFT0M_vs_CentNTPV-1", "CentRun2V0M_vs_CentRun2SPDTracklets-1", "CentRun2V0M_vs_NContributors-1", "TrackOccupancyInTimeRange_vs_FT0COccupancyInTimeRange-1"}, "book (1) or do not book (0) this QA 2D event histogram"};
41+
Configurable<vector<string>> cfBookQAEventHistograms2D{"cfBookQAEventHistograms2D", {"MultTPC_vs_NContributors-1", "Vertex_z_vs_MultTPC-1", "Vertex_z_vs_NContributors-1", "CentFT0M_vs_CentNTPV-1", "CentRun2V0M_vs_CentRun2SPDTracklets-1", "CentRun2V0M_vs_NContributors-1", "TrackOccupancyInTimeRange_vs_FT0COccupancyInTimeRange-1", "TrackOccupancyInTimeRange_vs_MultTPC-1", "TrackOccupancyInTimeRange_vs_Vertex_z-1"}, "book (1) or do not book (0) this QA 2D event histogram"};
4242
Configurable<bool> cfFillQAParticleHistograms2D{"cfFillQAParticleHistograms2D", false, "if false, all QA 2D particle histograms are not filled. if true, only the ones for which fBookQAParticleHistograms2D[...] is true, are filled"};
4343
Configurable<vector<string>> cfBookQAParticleHistograms2D{"cfBookQAParticleHistograms2D", {"Pt_vs_dcaXY-1"}, "book (1) or do not book (0) this QA 2D particle histogram"};
4444
} cf_qa;
@@ -131,6 +131,12 @@ struct : ConfigurableGroup {
131131
// *) Multiparticle correlations:
132132
struct : ConfigurableGroup {
133133
Configurable<bool> cfCalculateCorrelations{"cfCalculateCorrelations", false, "calculate or not multiparticle correlations"};
134+
Configurable<bool> cfCalculateCorrelationsAsFunctionOfIntegrated{"cfCalculateCorrelationsAsFunctionOfIntegrated", false, "calculate or not correlations as a function of integrated"};
135+
Configurable<bool> cfCalculateCorrelationsAsFunctionOfMultiplicity{"cfCalculateCorrelationsAsFunctionOfMultiplicity", false, "calculate or not correlations as a function of multiplicity"};
136+
Configurable<bool> cfCalculateCorrelationsAsFunctionOfCentrality{"cfCalculateCorrelationsAsFunctionOfCentrality", false, "calculate or not correlations as a function of centrality"};
137+
Configurable<bool> cfCalculateCorrelationsAsFunctionOfPt{"cfCalculateCorrelationsAsFunctionOfPt", false, "calculate or not correlations as a function of pt"};
138+
Configurable<bool> cfCalculateCorrelationsAsFunctionOfEta{"cfCalculateCorrelationsAsFunctionOfEta", false, "calculate or not correlations as a function of eta"};
139+
Configurable<bool> cfCalculateCorrelationsAsFunctionOfOccupancy{"cfCalculateCorrelationsAsFunctionOfOccupancy", false, "calculate or not correlations as a function of occupancy"};
134140
} cf_mupa;
135141

136142
// *) Test0:
@@ -176,7 +182,7 @@ struct : ConfigurableGroup {
176182
Configurable<bool> cfUseInternalValidation{"cfUseInternalValidation", false, "perform internal validation using flow analysis on-the-fly"};
177183
Configurable<bool> cfInternalValidationForceBailout{"cfInternalValidationForceBailout", false, "force bailout (use only locally, since there is no graceful exit (yet))"};
178184
Configurable<unsigned int> cfnEventsInternalValidation{"cfnEventsInternalValidation", 0, "number of events simulated on-the-fly for internal validation"};
179-
Configurable<string> cfHarmonicsOptionInternalValidation{"cfHarmonicsOptionInternalValidation", "constant", "for internal validation, set whether flow amplitudes are \"constant\" or \"correlared\""};
185+
Configurable<string> cfHarmonicsOptionInternalValidation{"cfHarmonicsOptionInternalValidation", "constant", "for internal validation, set whether flow amplitudes are \"constant\" or \"correlated\""};
180186
Configurable<bool> cfRescaleWithTheoreticalInput{"cfRescaleWithTheoreticalInput", false, "if kTRUE, all correlators are rescaled with theoretical input, so that all results in profiles are 1"};
181187
Configurable<vector<float>> cfInternalValidationAmplitudes{"cfInternalValidationAmplitudes", {0.01, 0.02, 0.03, 0.04}, "{v1, v2, v3, v4, ...} + has an effect only in combination with cfHarmonicsOptionInternalValidation = \"constant\". Max number of vn's is gMaxHarmonic."};
182188
Configurable<vector<float>> cfInternalValidationPlanes{"cfInternalValidationPlanes", {0.0, 0.0, 0.0, 0.0}, "{Psi1, Psi2, Psi3, Psi4, ...} + has an effect only in combination with cfHarmonicsOptionInternalValidation = \"constant\". Max number of Psin's is gMaxHarmonic."};

PWGCF/MultiparticleCorrelations/Core/MuPa-DataMembers.h

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -181,13 +181,15 @@ struct Qvector {
181181

182182
// *) Multiparticle correlations (standard, isotropic, same harmonic):
183183
struct MultiparticleCorrelations {
184-
TList* fCorrelationsList = NULL; // list to hold all correlations objects
185-
TProfile* fCorrelationsFlagsPro = NULL; // profile to hold all flags for correlations
186-
Bool_t fCalculateCorrelations = kTRUE; // calculate and store integrated correlations
187-
TProfile* fCorrelationsPro[4][gMaxHarmonic][eAsFunctionOf_N] = {{{NULL}}}; //! multiparticle correlations
188-
//! [2p=0,4p=1,6p=2,8p=3][n=1,n=2,...,n=gMaxHarmonic][0=integrated,1=vs.
189-
//! multiplicity,2=vs. centrality,3=pT,4=eta]
190-
} mupa; // "mupa" is a common label for objects in this struct
184+
TList* fCorrelationsList = NULL; // list to hold all correlations objects
185+
TProfile* fCorrelationsFlagsPro = NULL; // profile to hold all flags for correlations
186+
Bool_t fCalculateCorrelations = kTRUE; // calculate and store integrated correlations
187+
TProfile* fCorrelationsPro[4][gMaxHarmonic][eAsFunctionOf_N] = {{{NULL}}}; //! multiparticle correlations
188+
// [2p=0,4p=1,6p=2,8p=3][n=1,n=2,...,n=gMaxHarmonic]
189+
// [0=integrated,1=vs. multiplicity,2=vs. centrality,3=pT,4=eta,5=vs. occupancy]
190+
Bool_t fCalculateCorrelationsAsFunctionOf[eAsFunctionOf_N] = {true, true, true, false, false, true}; //! [0=integrated,1=vs. multiplicity,2=vs. centrality,3=pT,4=eta,5=vs. occupancy]
191+
// As of 20241111, 3=pT and 4=eta are not implemented, see void CalculateKineCorrelations(...)
192+
} mupa; // "mupa" is a common label for objects in this struct
191193

192194
// *) Particle weights:
193195
struct ParticleWeights {
@@ -234,25 +236,27 @@ struct InternalValidation {
234236
TList* fInternalValidationList = NULL; // list to hold all objects for internal validation
235237
TProfile* fInternalValidationFlagsPro = NULL; // profile to hold all flags for internal validation
236238
Bool_t fUseInternalValidation = kFALSE; // use internal validation
237-
Bool_t fInternalValidationForceBailout = kFALSE; // force bailout after fnEventsInternalValidation is reached. In HL, for each real event, I do fnEventsInternalValidation events
238-
UInt_t fnEventsInternalValidation = 0; // how many events will be sampled on-the-fly for internal validation
239-
TString* fHarmonicsOptionInternalValidation = NULL; // see .cxx for full documentation
239+
Bool_t fInternalValidationForceBailout = kFALSE; // force bailout in internal validation after either eNumberOfEvents or eSelectedEvents is reached.
240+
// This is OK as long as I do not apply any event cuts in InternalValidation().
241+
// Remember that for each real event, I do fnEventsInternalValidation events on-the-fly.
242+
UInt_t fnEventsInternalValidation = 0; // how many on-the-fly events will be sampled for each real event, for internal validation
243+
TString* fHarmonicsOptionInternalValidation = NULL; // "constant" or "correlated", see .cxx for full documentation
240244
Bool_t fRescaleWithTheoreticalInput = kFALSE; // if kTRUE, all measured correlators are rescaled with theoretical input, so that in profiles everything is at 1
241245
TArrayD* fInternalValidationVnPsin[2] = {NULL}; // 0 = { v1, v2, ... }, 1 = { Psi1, Psi2, ... }
242246
Int_t fMultRangeInternalValidation[2] = {0, 0}; // min and max values for uniform multiplicity distribution in on-the-fly analysis (convention: min <= M < max)
243247
} iv;
244248

245249
// *) Test0:
246250
struct Test0 {
247-
TList* fTest0List = NULL; // list to hold all objects for Test0
248-
TProfile* fTest0FlagsPro = NULL; // store all flags for Test0
249-
Bool_t fCalculateTest0 = kFALSE; // calculate or not Test0
250-
TProfile* fTest0Pro[gMaxCorrelator][gMaxIndex][eAsFunctionOf_N] = {{{NULL}}}; //! [order][index][0=integrated,1=vs. multiplicity,2=vs. centrality,3=pT,4=eta]
251-
TString* fTest0Labels[gMaxCorrelator][gMaxIndex] = {{NULL}}; // all labels: k-p'th order is stored in k-1'th index. So yes, I also store 1-p
252-
Bool_t fCalculateTest0AsFunctionOf[eAsFunctionOf_N] = {true, true, true, false, false}; //! [0=integrated,1=vs. multiplicity,2=vs. centrality,3=pT,4=eta]
253-
TString fFileWithLabels = ""; // path to external ROOT file which specifies all labels of interest
254-
TH1I* fTest0LabelsPlaceholder = NULL; // store all Test0 labels in this histogram
255-
} t0; // "t0" labels an instance of this group of histograms
251+
TList* fTest0List = NULL; // list to hold all objects for Test0
252+
TProfile* fTest0FlagsPro = NULL; // store all flags for Test0
253+
Bool_t fCalculateTest0 = kFALSE; // calculate or not Test0
254+
TProfile* fTest0Pro[gMaxCorrelator][gMaxIndex][eAsFunctionOf_N] = {{{NULL}}}; //! [order][index][0=integrated,1=vs. multiplicity,2=vs. centrality,3=pT,4=eta]
255+
TString* fTest0Labels[gMaxCorrelator][gMaxIndex] = {{NULL}}; // all labels: k-p'th order is stored in k-1'th index. So yes, I also store 1-p
256+
Bool_t fCalculateTest0AsFunctionOf[eAsFunctionOf_N] = {true, true, true, false, false, false}; //! [0=integrated,1=vs. multiplicity,2=vs. centrality,3=pT,4=eta,5=vs. occupancy]
257+
TString fFileWithLabels = ""; // path to external ROOT file which specifies all labels of interest
258+
TH1I* fTest0LabelsPlaceholder = NULL; // store all Test0 labels in this histogram
259+
} t0; // "t0" labels an instance of this group of histograms
256260

257261
// *) Results:
258262
struct Results { // This is in addition also sort of "abstract" interface, which defines common binning, etc., for other groups of histograms.

PWGCF/MultiparticleCorrelations/Core/MuPa-Enums.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -229,12 +229,12 @@ enum eQAEventHistograms2D {
229229
eMultTPC_vs_NContributors = 0,
230230
eVertex_z_vs_MultTPC,
231231
eVertex_z_vs_NContributors,
232-
// Run 3:
233-
eCentFT0M_vs_CentNTPV,
234-
// Run 2 (do not use in Run 1 converted, because there is no centrality information):
235-
eCentRun2V0M_vs_CentRun2SPDTracklets,
236-
eCentRun2V0M_vs_NContributors,
232+
eCentFT0M_vs_CentNTPV, // Run 3 centrality
233+
eCentRun2V0M_vs_CentRun2SPDTracklets, // Run 2 centrality (do not use in Run 1 converted, because there is no centrality information)
234+
eCentRun2V0M_vs_NContributors, // Run 2 centrality (do not use in Run 1 converted, because there is no centrality information)
237235
eTrackOccupancyInTimeRange_vs_FT0COccupancyInTimeRange,
236+
eTrackOccupancyInTimeRange_vs_MultTPC,
237+
eTrackOccupancyInTimeRange_vs_Vertex_z,
238238
eQAEventHistograms2D_N
239239
};
240240

0 commit comments

Comments
 (0)