Skip to content

Commit 8cbc1c8

Browse files
committed
Resolved conflict in netchargeFluctuations.cxx
2 parents 528ad96 + c0cbe83 commit 8cbc1c8

1 file changed

Lines changed: 203 additions & 1 deletion

File tree

PWGCF/EbyEFluctuations/Tasks/netchargeFluctuations.cxx

Lines changed: 203 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111

1212
/// \file netchargeFluctuations.cxx
1313
/// \brief Calculate net-charge fluctuations using nu_dyn observable
14+
/// \brief Calculate nu_dyn fluctuations
1415
/// For charged particles
1516
/// For RUN-3
1617
///
1718
/// \author Nida Malik <nida.malik@cern.ch>
1819
#include "PWGCF/Core/CorrelationContainer.h"
1920
#include "PWGCF/Core/PairCuts.h"
21+
#include <vector> // Include for std::vector
2022

2123
#include "Common/CCDB/EventSelectionParams.h"
2224
#include "Common/CCDB/TriggerAliases.h"
@@ -27,7 +29,25 @@
2729
#include "Common/DataModel/FT0Corrected.h"
2830
#include "Common/DataModel/Multiplicity.h"
2931
#include "Common/DataModel/PIDResponse.h"
32+
#include "Common/Core/trackUtilities.h"
33+
#include "Common/CCDB/EventSelectionParams.h"
34+
#include "Common/Core/TrackSelection.h"
3035
#include "Common/DataModel/TrackSelectionTables.h"
36+
#include "Common/DataModel/Centrality.h"
37+
#include "CommonConstants/MathConstants.h"
38+
#include "Common/DataModel/FT0Corrected.h"
39+
#include "Framework/AnalysisDataModel.h"
40+
#include "Framework/ASoAHelpers.h"
41+
#include "Framework/RunningWorkflowInfo.h"
42+
#include "PWGCF/Core/CorrelationContainer.h"
43+
#include "PWGCF/Core/PairCuts.h"
44+
#include "Common/CCDB/TriggerAliases.h"
45+
#include "Framework/HistogramRegistry.h"
46+
#include "Framework/O2DatabasePDGPlugin.h"
47+
#include "CommonConstants/PhysicsConstants.h"
48+
#include "TProfile.h"
49+
#include "TProfile2D.h"
50+
#include "TRandom3.h"
3151

3252
#include "CCDB/BasicCCDBManager.h"
3353
#include "CommonConstants/MathConstants.h"
@@ -57,6 +77,56 @@ namespace o2
5777
{
5878
namespace aod
5979
{
80+
81+
namespace o2
82+
{
83+
namespace aod
84+
{
85+
namespace net_charge
86+
{
87+
DECLARE_SOA_COLUMN(PosCharge, posCharge, float);
88+
DECLARE_SOA_COLUMN(NegCharge, negCharge, float);
89+
DECLARE_SOA_COLUMN(PosSqCharge, posSqCharge, float);
90+
DECLARE_SOA_COLUMN(NegSqCharge, negSqCharge, float);
91+
DECLARE_SOA_COLUMN(TermPCharge, termPCharge, float);
92+
DECLARE_SOA_COLUMN(TermNCharge, termNCharge, float);
93+
DECLARE_SOA_COLUMN(PosNegCharge, posNegCharge, float);
94+
DECLARE_SOA_COLUMN(Centrality, centrality, float);
95+
} // namespace net_charge
96+
97+
namespace net_charge_gen
98+
{
99+
DECLARE_SOA_COLUMN(PosCharge, posCharge, float);
100+
DECLARE_SOA_COLUMN(NegCharge, negCharge, float);
101+
DECLARE_SOA_COLUMN(PosSqCharge, posSqCharge, float);
102+
DECLARE_SOA_COLUMN(NegSqCharge, negSqCharge, float);
103+
DECLARE_SOA_COLUMN(TermPCharge, termPCharge, float);
104+
DECLARE_SOA_COLUMN(TermNCharge, termNCharge, float);
105+
DECLARE_SOA_COLUMN(PosNegCharge, posNegCharge, float);
106+
DECLARE_SOA_COLUMN(Centrality, centrality, float);
107+
} // namespace net_charge_gen
108+
109+
DECLARE_SOA_TABLE(NetCharge, "AOD", "NETChargefluct",
110+
net_charge::PosCharge,
111+
net_charge::NegCharge,
112+
net_charge::PosSqCharge,
113+
net_charge::NegSqCharge,
114+
net_charge::TermPCharge,
115+
net_charge::TermNCharge,
116+
net_charge::PosNegCharge,
117+
net_charge::Centrality);
118+
119+
DECLARE_SOA_TABLE(NetChargeGen, "AOD", "NETfluctGen",
120+
net_charge_gen::PosCharge,
121+
net_charge_gen::NegCharge,
122+
net_charge_gen::PosSqCharge,
123+
net_charge_gen::NegSqCharge,
124+
net_charge_gen::TermPCharge,
125+
net_charge_gen::TermNCharge,
126+
net_charge_gen::PosNegCharge,
127+
net_charge_gen::Centrality);
128+
129+
>>>>>>> c0cbe833a9419db4408ba58cca2d558f964ffe8c
60130
using MyCollisionsRun2 = soa::Join<aod::Collisions, aod::EvSels, aod::CentRun2V0Ms, aod::Mults>;
61131
using MyCollisionRun2 = MyCollisionsRun2::iterator;
62132
using MyCollisionsRun3 = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms, aod::CentFT0Cs, aod::Mults>;
@@ -81,6 +151,7 @@ enum RunType {
81151
};
82152

83153
struct NetchargeFluctuations {
154+
<<<<<<< HEAD
84155
Service<o2::framework::O2DatabasePDG> pdgService;
85156
Service<o2::ccdb::BasicCCDBManager> ccdb;
86157
TRandom3* fRndm = new TRandom3(0);
@@ -94,13 +165,25 @@ struct NetchargeFluctuations {
94165

95166
Configurable<float> vertexZcut{"vertexZcut", 10.f, "Vertex Z"};
96167
Configurable<float> etaCut{"etaCut", 0.8f, "Eta cut"};
168+
=======
169+
Produces<aod::NetCharge> netCharge;
170+
Produces<aod::NetChargeGen> netChargeGen;
171+
Service<o2::framework::O2DatabasePDG> pdgService;
172+
173+
HistogramRegistry histogramRegistry{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};
174+
175+
// Configurables
176+
Configurable<float> vertexZcut{"vertexZcut", 10.f, "Vertex Z"};
177+
Configurable<float> etaCut{"etaCut", 0.8, "Eta cut"};
178+
>>>>>>> c0cbe833a9419db4408ba58cca2d558f964ffe8c
97179
Configurable<float> ptMinCut{"ptMinCut", 0.2, "Pt min cut"};
98180
Configurable<float> ptMaxCut{"ptMaxCut", 5.0, "Pt max cut"};
99181
Configurable<float> dcaXYCut{"dcaXYCut", 0.12, "DCA XY cut"};
100182
Configurable<float> dcaZCut{"dcaZCut", 0.3, "DCA Z cut"};
101183
Configurable<int> tpcCrossCut{"tpcCrossCut", 70, "TPC crossrows cut"};
102184
Configurable<int> itsChiCut{"itsChiCut", 70, "ITS chi2 cluster cut"};
103185
Configurable<int> tpcChiCut{"tpcChiCut", 70, "TPC chi2 cluster cut"};
186+
<<<<<<< HEAD
104187
Configurable<float> centMin{"centMin", 0.0f, "cenrality min for delta eta"};
105188
Configurable<float> centMax{"centMax", 10.0f, "cenrality max for delta eta"};
106189
Configurable<int> cfgNSubsample{"cfgNSubsample", 30, "Number of subsamples for Error"};
@@ -843,7 +926,6 @@ struct NetchargeFluctuations {
843926

844927
calculationDeltaEta<kRun2>(coll, tracks, etaMin, etaMax);
845928
}
846-
}
847929

848930
PROCESS_SWITCH(NetchargeFluctuations, processDataRun2, "Process for Run2 DATA", false);
849931

@@ -862,6 +944,13 @@ struct NetchargeFluctuations {
862944
PROCESS_SWITCH(NetchargeFluctuations, processMcRun3, "Process reconstructed", true);
863945

864946
// process function for MC Run2
947+
void processMcRun3(aod::MyMCCollisionRun3 const& coll, aod::MyMCTracks const& inputTracks,
948+
aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
949+
{
950+
histosMcRecoGen<kRun3>(coll, inputTracks, mcCollisions, mcParticles);
951+
}
952+
953+
PROCESS_SWITCH(NetchargeFluctuations, processMcRun3, "Process reconstructed", true);
865954

866955
void processMcRun2(aod::MyMCCollisionRun2 const& coll, aod::MyMCTracks const& inputTracks,
867956
aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
@@ -882,4 +971,117 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
882971
{
883972
return WorkflowSpec{
884973
{adaptAnalysisTask<NetchargeFluctuations>(cfgc)}};
974+
histosMcRecoGen<kRun2>(coll, inputTracks, mcCollisions, mcParticles);
975+
}
976+
977+
PROCESS_SWITCH(NetchargeFluctuations, processMcRun2, "Process reconstructed", false);
978+
979+
}; // struct
980+
981+
struct NetchargeAnalysis {
982+
Configurable<int> cfSubSample{"cfSubSample", 30, "Number of subsamples"};
983+
HistogramRegistry registry{"registry", {}, OutputObjHandlingPolicy::AnalysisObject};
984+
std::vector<std::vector<std::shared_ptr<TProfile>>> net;
985+
std::vector<std::vector<std::shared_ptr<TProfile>>> subSample;
986+
std::vector<std::vector<std::shared_ptr<TProfile>>> genSubSample;
987+
TRandom3* fRndm = new TRandom3(0);
988+
989+
void init(o2::framework::InitContext&)
990+
{
991+
std::vector<double> centBinning = {0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
992+
AxisSpec centAxis = {centBinning, "centrality"};
993+
994+
registry.add("data/pos_vs_cent", "", {HistType::kTProfile, {centAxis}});
995+
registry.add("data/neg_vs_cent", "", {HistType::kTProfile, {centAxis}});
996+
registry.add("data/termp_vs_cent", "", {HistType::kTProfile, {centAxis}});
997+
registry.add("data/termn_vs_cent", "", {HistType::kTProfile, {centAxis}});
998+
registry.add("data/pos_sq_vs_cent", "", {HistType::kTProfile, {centAxis}});
999+
registry.add("data/neg_sq_vs_cent", "", {HistType::kTProfile, {centAxis}});
1000+
registry.add("data/posneg_vs_cent", "", {HistType::kTProfile, {centAxis}});
1001+
1002+
registry.add("gen/pos_vs_cent", "", {HistType::kTProfile, {centAxis}});
1003+
registry.add("gen/neg_vs_cent", "", {HistType::kTProfile, {centAxis}});
1004+
registry.add("gen/termp_vs_cent", "", {HistType::kTProfile, {centAxis}});
1005+
registry.add("gen/termn_vs_cent", "", {HistType::kTProfile, {centAxis}});
1006+
registry.add("gen/pos_sq_vs_cent", "", {HistType::kTProfile, {centAxis}});
1007+
registry.add("gen/neg_sq_vs_cent", "", {HistType::kTProfile, {centAxis}});
1008+
registry.add("gen/posneg_vs_cent", "", {HistType::kTProfile, {centAxis}});
1009+
1010+
subSample.resize(cfSubSample);
1011+
genSubSample.resize(cfSubSample);
1012+
1013+
for (int i = 0; i < cfSubSample; ++i) {
1014+
subSample[i].resize(7);
1015+
genSubSample[i].resize(7);
1016+
1017+
subSample[i][0] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("data/subSample_%d/pos_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1018+
subSample[i][1] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("data/subSample_%d/neg_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1019+
subSample[i][2] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("data/subSample_%d/termp_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1020+
subSample[i][3] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("data/subSample_%d/termn_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1021+
subSample[i][4] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("data/subSample_%d/pos_sq_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1022+
subSample[i][5] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("data/subSample_%d/neg_sq_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1023+
subSample[i][6] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("data/subSample_%d/posneg_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1024+
1025+
genSubSample[i][0] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("gen/genSubSample_%d/pos_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1026+
genSubSample[i][1] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("gen/genSubSample_%d/neg_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1027+
genSubSample[i][2] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("gen/genSubSample_%d/termp_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1028+
genSubSample[i][3] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("gen/genSubSample_%d/termn_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1029+
genSubSample[i][4] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("gen/genSubSample_%d/pos_sq_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1030+
genSubSample[i][5] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("gen/genSubSample_%d/neg_sq_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1031+
genSubSample[i][6] = std::get<std::shared_ptr<TProfile>>(registry.add(Form("gen/genSubSample_%d/posneg_vs_cent", i), "", {HistType::kTProfile, {centAxis}}));
1032+
}
1033+
1034+
} // void
1035+
1036+
void processData(aod::NetCharge::iterator const& event_netcharge)
1037+
{
1038+
registry.get<TProfile>(HIST("data/pos_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.posCharge());
1039+
registry.get<TProfile>(HIST("data/neg_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.negCharge());
1040+
registry.get<TProfile>(HIST("data/termp_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.termPCharge());
1041+
registry.get<TProfile>(HIST("data/termn_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.termNCharge());
1042+
registry.get<TProfile>(HIST("data/pos_sq_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.posSqCharge());
1043+
registry.get<TProfile>(HIST("data/neg_sq_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.negSqCharge());
1044+
registry.get<TProfile>(HIST("data/posneg_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.posNegCharge());
1045+
1046+
int sampleIndex = static_cast<int>(cfSubSample * fRndm->Rndm());
1047+
subSample[sampleIndex][0]->Fill(event_netcharge.centrality(), event_netcharge.posCharge());
1048+
subSample[sampleIndex][1]->Fill(event_netcharge.centrality(), event_netcharge.negCharge());
1049+
subSample[sampleIndex][2]->Fill(event_netcharge.centrality(), event_netcharge.termPCharge());
1050+
subSample[sampleIndex][3]->Fill(event_netcharge.centrality(), event_netcharge.termNCharge());
1051+
subSample[sampleIndex][4]->Fill(event_netcharge.centrality(), event_netcharge.posSqCharge());
1052+
subSample[sampleIndex][5]->Fill(event_netcharge.centrality(), event_netcharge.negSqCharge());
1053+
subSample[sampleIndex][6]->Fill(event_netcharge.centrality(), event_netcharge.posNegCharge());
1054+
} // void
1055+
PROCESS_SWITCH(NetchargeAnalysis, processData, "Process reconstructed and Data", true);
1056+
1057+
void processGen(aod::NetChargeGen::iterator const& event_netcharge)
1058+
{
1059+
registry.get<TProfile>(HIST("gen/pos_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.posCharge());
1060+
registry.get<TProfile>(HIST("gen/neg_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.negCharge());
1061+
registry.get<TProfile>(HIST("gen/termp_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.termPCharge());
1062+
registry.get<TProfile>(HIST("gen/termn_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.termNCharge());
1063+
registry.get<TProfile>(HIST("gen/pos_sq_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.posSqCharge());
1064+
registry.get<TProfile>(HIST("gen/neg_sq_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.negSqCharge());
1065+
registry.get<TProfile>(HIST("gen/posneg_vs_cent"))->Fill(event_netcharge.centrality(), event_netcharge.posNegCharge());
1066+
1067+
int sampleIndex = static_cast<int>(cfSubSample * fRndm->Rndm());
1068+
genSubSample[sampleIndex][0]->Fill(event_netcharge.centrality(), event_netcharge.posCharge());
1069+
genSubSample[sampleIndex][1]->Fill(event_netcharge.centrality(), event_netcharge.negCharge());
1070+
genSubSample[sampleIndex][2]->Fill(event_netcharge.centrality(), event_netcharge.termPCharge());
1071+
genSubSample[sampleIndex][3]->Fill(event_netcharge.centrality(), event_netcharge.termNCharge());
1072+
genSubSample[sampleIndex][4]->Fill(event_netcharge.centrality(), event_netcharge.posSqCharge());
1073+
genSubSample[sampleIndex][5]->Fill(event_netcharge.centrality(), event_netcharge.negSqCharge());
1074+
genSubSample[sampleIndex][6]->Fill(event_netcharge.centrality(), event_netcharge.posNegCharge());
1075+
} // void
1076+
PROCESS_SWITCH(NetchargeAnalysis, processGen, "Process generated", true);
1077+
1078+
}; // struct Netcharge_analysis
1079+
1080+
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
1081+
{
1082+
return WorkflowSpec{
1083+
{adaptAnalysisTask<NetchargeFluctuations>(cfgc)},
1084+
{adaptAnalysisTask<NetchargeAnalysis>(cfgc)}
1085+
1086+
};
8851087
}

0 commit comments

Comments
 (0)