Skip to content

Commit 273c3ff

Browse files
committed
[PWGEM/Dilepton] update testPV.cxx for data
1 parent 0c126d3 commit 273c3ff

1 file changed

Lines changed: 35 additions & 22 deletions

File tree

PWGEM/Dilepton/Tasks/testPV.cxx

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,14 @@
2525
#include <Framework/InitContext.h>
2626
#include <Framework/runDataProcessing.h>
2727

28+
#include <TH1.h>
29+
2830
#include <string>
2931

3032
using namespace o2;
3133
using namespace o2::soa;
3234
using namespace o2::framework;
3335
using namespace o2::framework::expressions;
34-
using namespace o2::constants::physics;
3536

3637
struct testPV {
3738

@@ -99,12 +100,14 @@ struct testPV {
99100
fRegistry.add("Vertex/hSigmaY", "vertex #sigma_{Y} vs. N_{contrib};N_{contrib};#sigma_{Y} (#mum)", kTH2F, {{101, -0.5, 100.5}, {1000, 0, 100}}, false);
100101
fRegistry.add("Vertex/hSigmaZ", "vertex #sigma_{Z} vs. N_{contrib};N_{contrib};#sigma_{Z} (#mum)", kTH2F, {{101, -0.5, 100.5}, {1000, 0, 100}}, false);
101102

102-
fRegistry.add("Vertex/hDeltaX", "vertex #DeltaX vs. N_{contrib};N_{contrib};#DeltaX = (X_{rec} #minus X_{gen})/#sigma_{X}", kTH2F, {{101, -0.5, 100.5}, {200, -10, 10}}, false);
103-
fRegistry.add("Vertex/hDeltaY", "vertex #DeltaY vs. N_{contrib};N_{contrib};#DeltaY = (Y_{rec} #minus Y_{gen})/#sigma_{Y}", kTH2F, {{101, -0.5, 100.5}, {200, -10, 10}}, false);
104-
fRegistry.add("Vertex/hDeltaZ", "vertex #DeltaZ vs. N_{contrib};N_{contrib};#DeltaZ = (Z_{rec} #minus Z_{gen})/#sigma_{Z}", kTH2F, {{101, -0.5, 100.5}, {200, -10, 10}}, false);
105-
106103
fRegistry.add("Vertex/hCollisionTime", "vertex time;N_{contrib};collision time (ns)", kTH2F, {{101, -0.5, 100.5}, {500, -25, 25}}, false);
107104
fRegistry.add("Vertex/hCollisionTimeRes", "vertex time resolution;N_{contrib};collision time resolution (ns)", kTH2F, {{101, -0.5, 100.5}, {250, 0, 25}}, false);
105+
106+
if (doprocessMC) {
107+
fRegistry.add("Vertex/hDeltaX", "vertex #DeltaX vs. N_{contrib};N_{contrib};#DeltaX = (X_{rec} #minus X_{gen})/#sigma_{X}", kTH2F, {{101, -0.5, 100.5}, {200, -10, 10}}, false);
108+
fRegistry.add("Vertex/hDeltaY", "vertex #DeltaY vs. N_{contrib};N_{contrib};#DeltaY = (Y_{rec} #minus Y_{gen})/#sigma_{Y}", kTH2F, {{101, -0.5, 100.5}, {200, -10, 10}}, false);
109+
fRegistry.add("Vertex/hDeltaZ", "vertex #DeltaZ vs. N_{contrib};N_{contrib};#DeltaZ = (Z_{rec} #minus Z_{gen})/#sigma_{Z}", kTH2F, {{101, -0.5, 100.5}, {200, -10, 10}}, false);
110+
}
108111
}
109112

110113
template <typename TCollision>
@@ -137,8 +140,8 @@ struct testPV {
137140
return true;
138141
}
139142

140-
template <typename TCollision, typename TMCCollision>
141-
void fillVertexHistograms(TCollision const& collision, TMCCollision const& mcCollision)
143+
template <typename TCollision>
144+
void fillVertexHistograms(TCollision const& collision)
142145
{
143146
fRegistry.fill(HIST("Vertex/hZvtx"), collision.posZ());
144147
fRegistry.fill(HIST("Vertex/hNContrib"), collision.numContrib());
@@ -149,37 +152,41 @@ struct testPV {
149152
fRegistry.fill(HIST("Vertex/hSigmaY"), collision.numContrib(), std::sqrt(collision.covYY()) * 1e+4); // convert cm to um
150153
fRegistry.fill(HIST("Vertex/hSigmaZ"), collision.numContrib(), std::sqrt(collision.covZZ()) * 1e+4); // convert cm to um
151154

152-
fRegistry.fill(HIST("Vertex/hDeltaX"), collision.numContrib(), (collision.posX() - mcCollision.posX()) / std::sqrt(collision.covXX()));
153-
fRegistry.fill(HIST("Vertex/hDeltaY"), collision.numContrib(), (collision.posY() - mcCollision.posY()) / std::sqrt(collision.covYY()));
154-
fRegistry.fill(HIST("Vertex/hDeltaZ"), collision.numContrib(), (collision.posZ() - mcCollision.posZ()) / std::sqrt(collision.covZZ()));
155-
156155
fRegistry.fill(HIST("Vertex/hCollisionTime"), collision.numContrib(), collision.collisionTime());
157156
fRegistry.fill(HIST("Vertex/hCollisionTimeRes"), collision.numContrib(), collision.collisionTimeRes());
158157
}
159158

160-
template <typename TBCs, typename TCollisions, typename TMCCollisions, typename TMCParticles>
159+
template <bool isMC, typename TBCs, typename TCollisions, typename TMCCollisions, typename TMCParticles>
161160
void run(TBCs const&, TCollisions const& collisions, TMCCollisions const&, TMCParticles const&)
162161
{
163162
for (const auto& collision : collisions) {
164-
if (!collision.has_mcCollision()) {
165-
continue;
166-
}
167163
auto bc = collision.template bc_as<TBCs>();
168164
initCCDB(bc);
169165

170-
auto mcCollision = collision.template mcCollision_as<aod::McCollisions>();
171-
if (eventCut.cfgEventGeneratorId > -1 && mcCollision.getSubGeneratorId() != eventCut.cfgEventGeneratorId) {
172-
continue;
166+
if constexpr (isMC) {
167+
if (!collision.has_mcCollision()) {
168+
continue;
169+
}
170+
auto mcCollision = collision.template mcCollision_as<TMCCollisions>();
171+
if (eventCut.cfgEventGeneratorId > -1 && mcCollision.getSubGeneratorId() != eventCut.cfgEventGeneratorId) {
172+
continue;
173+
}
173174
}
174175

175176
fRegistry.fill(HIST("hCollisionCounter"), 1);
176177

177178
if (!isSelectedCollision(collision)) {
178179
continue;
179180
}
180-
fRegistry.fill(HIST("hCollisionCounter"), 2);
181181

182-
fillVertexHistograms(collision, mcCollision);
182+
fRegistry.fill(HIST("hCollisionCounter"), 2);
183+
fillVertexHistograms(collision);
184+
if constexpr (isMC) {
185+
auto mcCollision = collision.template mcCollision_as<TMCCollisions>();
186+
fRegistry.fill(HIST("Vertex/hDeltaX"), collision.numContrib(), (collision.posX() - mcCollision.posX()) / std::sqrt(collision.covXX()));
187+
fRegistry.fill(HIST("Vertex/hDeltaY"), collision.numContrib(), (collision.posY() - mcCollision.posY()) / std::sqrt(collision.covYY()));
188+
fRegistry.fill(HIST("Vertex/hDeltaZ"), collision.numContrib(), (collision.posZ() - mcCollision.posZ()) / std::sqrt(collision.covZZ()));
189+
}
183190

184191
} // end of collision loop
185192
}
@@ -190,11 +197,17 @@ struct testPV {
190197
Filter collisionFilter_evsel = eventCut.cfgZvtxMin < o2::aod::collision::posZ && o2::aod::collision::posZ < eventCut.cfgZvtxMax;
191198
using FilteredMyCollisions = soa::Filtered<MyCollisions>;
192199

200+
void processData(FilteredMyCollisions const& collisions, MyBCs const& bcs)
201+
{
202+
run<false>(bcs, collisions, nullptr, nullptr);
203+
}
204+
PROCESS_SWITCH(testPV, processData, "processData", true);
205+
193206
void processMC(FilteredMyCollisions const& collisions, MyBCs const& bcs, aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
194207
{
195-
run(bcs, collisions, mcCollisions, mcParticles);
208+
run<true>(bcs, collisions, mcCollisions, mcParticles);
196209
}
197-
PROCESS_SWITCH(testPV, processMC, "processMC", true);
210+
PROCESS_SWITCH(testPV, processMC, "processMC", false);
198211

199212
void processDummy(MyCollisions const&) {}
200213
PROCESS_SWITCH(testPV, processDummy, "processDummy", false);

0 commit comments

Comments
 (0)