Skip to content

Commit d69f457

Browse files
authored
[PWGEM/Dilepton] update testPV.cxx for data (#17516)
1 parent d5eb421 commit d69f457

1 file changed

Lines changed: 35 additions & 23 deletions

File tree

PWGEM/Dilepton/Tasks/testPV.cxx

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,21 @@
1717
#include "Common/DataModel/EventSelection.h"
1818

1919
#include <Framework/AnalysisDataModel.h>
20-
#include <Framework/AnalysisHelpers.h>
2120
#include <Framework/AnalysisTask.h>
2221
#include <Framework/Configurable.h>
2322
#include <Framework/HistogramRegistry.h>
2423
#include <Framework/HistogramSpec.h>
2524
#include <Framework/InitContext.h>
2625
#include <Framework/runDataProcessing.h>
2726

27+
#include <TH1.h>
28+
2829
#include <string>
2930

3031
using namespace o2;
3132
using namespace o2::soa;
3233
using namespace o2::framework;
3334
using namespace o2::framework::expressions;
34-
using namespace o2::constants::physics;
3535

3636
struct testPV {
3737

@@ -99,12 +99,14 @@ struct testPV {
9999
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);
100100
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);
101101

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-
106102
fRegistry.add("Vertex/hCollisionTime", "vertex time;N_{contrib};collision time (ns)", kTH2F, {{101, -0.5, 100.5}, {500, -25, 25}}, false);
107103
fRegistry.add("Vertex/hCollisionTimeRes", "vertex time resolution;N_{contrib};collision time resolution (ns)", kTH2F, {{101, -0.5, 100.5}, {250, 0, 25}}, false);
104+
105+
if (doprocessMC) {
106+
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);
107+
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);
108+
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);
109+
}
108110
}
109111

110112
template <typename TCollision>
@@ -137,8 +139,8 @@ struct testPV {
137139
return true;
138140
}
139141

140-
template <typename TCollision, typename TMCCollision>
141-
void fillVertexHistograms(TCollision const& collision, TMCCollision const& mcCollision)
142+
template <typename TCollision>
143+
void fillVertexHistograms(TCollision const& collision)
142144
{
143145
fRegistry.fill(HIST("Vertex/hZvtx"), collision.posZ());
144146
fRegistry.fill(HIST("Vertex/hNContrib"), collision.numContrib());
@@ -149,37 +151,41 @@ struct testPV {
149151
fRegistry.fill(HIST("Vertex/hSigmaY"), collision.numContrib(), std::sqrt(collision.covYY()) * 1e+4); // convert cm to um
150152
fRegistry.fill(HIST("Vertex/hSigmaZ"), collision.numContrib(), std::sqrt(collision.covZZ()) * 1e+4); // convert cm to um
151153

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-
156154
fRegistry.fill(HIST("Vertex/hCollisionTime"), collision.numContrib(), collision.collisionTime());
157155
fRegistry.fill(HIST("Vertex/hCollisionTimeRes"), collision.numContrib(), collision.collisionTimeRes());
158156
}
159157

160-
template <typename TBCs, typename TCollisions, typename TMCCollisions, typename TMCParticles>
158+
template <bool isMC, typename TBCs, typename TCollisions, typename TMCCollisions, typename TMCParticles>
161159
void run(TBCs const&, TCollisions const& collisions, TMCCollisions const&, TMCParticles const&)
162160
{
163161
for (const auto& collision : collisions) {
164-
if (!collision.has_mcCollision()) {
165-
continue;
166-
}
167162
auto bc = collision.template bc_as<TBCs>();
168163
initCCDB(bc);
169164

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

175175
fRegistry.fill(HIST("hCollisionCounter"), 1);
176176

177177
if (!isSelectedCollision(collision)) {
178178
continue;
179179
}
180-
fRegistry.fill(HIST("hCollisionCounter"), 2);
181180

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

184190
} // end of collision loop
185191
}
@@ -190,11 +196,17 @@ struct testPV {
190196
Filter collisionFilter_evsel = eventCut.cfgZvtxMin < o2::aod::collision::posZ && o2::aod::collision::posZ < eventCut.cfgZvtxMax;
191197
using FilteredMyCollisions = soa::Filtered<MyCollisions>;
192198

199+
void processData(FilteredMyCollisions const& collisions, MyBCs const& bcs)
200+
{
201+
run<false>(bcs, collisions, nullptr, nullptr);
202+
}
203+
PROCESS_SWITCH(testPV, processData, "processData", true);
204+
193205
void processMC(FilteredMyCollisions const& collisions, MyBCs const& bcs, aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
194206
{
195-
run(bcs, collisions, mcCollisions, mcParticles);
207+
run<true>(bcs, collisions, mcCollisions, mcParticles);
196208
}
197-
PROCESS_SWITCH(testPV, processMC, "processMC", true);
209+
PROCESS_SWITCH(testPV, processMC, "processMC", false);
198210

199211
void processDummy(MyCollisions const&) {}
200212
PROCESS_SWITCH(testPV, processDummy, "processDummy", false);

0 commit comments

Comments
 (0)