|
33 | 33 | #include "Common/DataModel/Centrality.h" |
34 | 34 | #include "Common/DataModel/PIDResponse.h" |
35 | 35 | #include "Common/Core/RecoDecay.h" |
36 | | -#include "PWGEM/PhotonMeson/Utils/PCMUtilities.h" |
37 | 36 | #include "PWGEM/PhotonMeson/DataModel/gammaTables.h" |
| 37 | +#include "PWGEM/PhotonMeson/Utils/PCMUtilities.h" |
| 38 | +#include "PWGEM/PhotonMeson/Utils/MCUtilities.h" |
38 | 39 |
|
39 | 40 | using namespace o2; |
40 | 41 | using namespace o2::framework; |
@@ -148,6 +149,18 @@ struct PCMQCMC { |
148 | 149 | registry.add(Form("%sV0/hKFChi2vsR_recalc", pairtype[i].Data()), "recalc. KF conversion point in XY;R_{xy} (cm);KF chi2/NDF", HistType::kTH2F, {{250, 0.0f, 250.0f}, {5000, 0.f, 5000.0f}}); |
149 | 150 | registry.add(Form("%sV0/hKFChi2vsZ_recalc", pairtype[i].Data()), "recalc. KF conversion point in Z;Z (cm);KF chi2/NDF", HistType::kTH2F, {{500, -250.0f, 250.0f}, {5000, 0.f, 5000.0f}}); |
150 | 151 | } |
| 152 | + |
| 153 | + const float rxy[] = {0, 6, 10, 20, 30, 40, 50, 60, 70, 80, 90}; |
| 154 | + registry.add("Generated/hCollisionCounter", "Collision counter", HistType::kTH1F, {{5, 0.5f, 5.5f}}); |
| 155 | + registry.add("Generated/hGammaRxy", "conversion point in XY MC;V_{x} (cm);V_{y} (cm)", HistType::kTH2F, {{2000, -100.0f, 100.0f}, {2000, -100.0f, 100.0f}}); |
| 156 | + registry.add("Generated/hGammaRZ", "conversion point in RZ MC;V_{z} (cm);R_{xy} (cm)", HistType::kTH2F, {{5000, -250.0f, 250.0f}, {1000, 0.f, 100.0f}}); |
| 157 | + |
| 158 | + const int n = sizeof(rxy) / sizeof(rxy[0]); |
| 159 | + for (int i = 0; i < n - 1; i++) { |
| 160 | + float rmin = rxy[i]; |
| 161 | + float rmax = rxy[i + 1]; |
| 162 | + registry.add(Form("Generated/hConvPhi_Rxy%d_%dcm", static_cast<int>(rmin), static_cast<int>(rmax)), Form("conversion point of #varphi MC in %d < R_{xy} < %d cm;#varphi (rad.);N_{e}", static_cast<int>(rmin), static_cast<int>(rmax)), HistType::kTH1F, {{360, 0.0f, TMath::TwoPi()}}); |
| 163 | + } |
151 | 164 | } |
152 | 165 |
|
153 | 166 | void init(InitContext& context) |
@@ -243,7 +256,6 @@ struct PCMQCMC { |
243 | 256 | Preslice<MyV0Photons> perCollision = aod::v0photon::collisionId; |
244 | 257 |
|
245 | 258 | using MyMCV0Legs = soa::Join<aod::V0Legs, aod::EMMCParticleLabels>; |
246 | | - // void processPCMPCM(soa::Join<aod::EMReducedEvents, aod::EMReducedMCEventLabels> const& collisions, MyFilteredV0Photons const& v0photons, MyMCV0Legs const& v0legs, aod::EMMCParticles const& mcparticles) |
247 | 259 | void processQCMC(soa::Join<aod::EMReducedEvents, aod::EMReducedMCEventLabels> const& collisions, MyFilteredV0Photons const& v0photons, MyMCV0Legs const& v0legs, aod::EMMCParticles const& mcparticles) |
248 | 260 | { |
249 | 261 | for (auto& collision : collisions) { |
@@ -302,12 +314,81 @@ struct PCMQCMC { |
302 | 314 | } // end of collision loop |
303 | 315 | } // end of process |
304 | 316 |
|
| 317 | + Preslice<aod::EMMCParticles> perMcCollision = aod::emmcparticle::emreducedmceventId; |
| 318 | + void processGen(soa::Join<aod::EMReducedEvents, aod::EMReducedMCEventLabels> const& collisions, aod::EMReducedMCEvents const& mccollisions, aod::EMMCParticles const& mcparticles) |
| 319 | + { |
| 320 | + // loop over mc stack and fill histograms for pure MC truth signals |
| 321 | + // all MC tracks which belong to the MC event corresponding to the current reconstructed event |
| 322 | + |
| 323 | + for (auto& collision : collisions) { |
| 324 | + registry.fill(HIST("Generated/hCollisionCounter"), 1.0); // all |
| 325 | + if (!collision.sel8()) { |
| 326 | + continue; |
| 327 | + } |
| 328 | + registry.fill(HIST("Generated/hCollisionCounter"), 2.0); // FT0VX i.e. FT0and |
| 329 | + |
| 330 | + if (collision.numContrib() < 0.5) { |
| 331 | + continue; |
| 332 | + } |
| 333 | + registry.fill(HIST("Generated/hCollisionCounter"), 3.0); // Ncontrib > 0 |
| 334 | + |
| 335 | + if (abs(collision.posZ()) > 10.0) { |
| 336 | + continue; |
| 337 | + } |
| 338 | + registry.fill(HIST("Generated/hCollisionCounter"), 4.0); //|Zvtx| < 10 cm |
| 339 | + auto mccollision = collision.emreducedmcevent(); |
| 340 | + |
| 341 | + auto mctracks_coll = mcparticles.sliceBy(perMcCollision, mccollision.globalIndex()); |
| 342 | + for (auto& mctrack : mctracks_coll) { |
| 343 | + |
| 344 | + if (IsEleFromPC(mctrack, mcparticles) > 0) { |
| 345 | + float rxy = sqrt(pow(mctrack.vx(), 2) + pow(mctrack.vy(), 2)); |
| 346 | + registry.fill(HIST("Generated/hGammaRZ"), mctrack.vz(), rxy); |
| 347 | + |
| 348 | + if (abs(mctrack.eta()) > 0.9) |
| 349 | + continue; |
| 350 | + registry.fill(HIST("Generated/hGammaRxy"), mctrack.vx(), mctrack.vy()); |
| 351 | + if (rxy < 6) { |
| 352 | + registry.fill(HIST("Generated/hConvPhi_Rxy0_6cm"), mctrack.phi()); |
| 353 | + } else if (rxy < 10) { |
| 354 | + registry.fill(HIST("Generated/hConvPhi_Rxy6_10cm"), mctrack.phi()); |
| 355 | + |
| 356 | + } else if (rxy < 20) { |
| 357 | + registry.fill(HIST("Generated/hConvPhi_Rxy10_20cm"), mctrack.phi()); |
| 358 | + |
| 359 | + } else if (rxy < 30) { |
| 360 | + registry.fill(HIST("Generated/hConvPhi_Rxy20_30cm"), mctrack.phi()); |
| 361 | + |
| 362 | + } else if (rxy < 40) { |
| 363 | + registry.fill(HIST("Generated/hConvPhi_Rxy30_40cm"), mctrack.phi()); |
| 364 | + |
| 365 | + } else if (rxy < 50) { |
| 366 | + registry.fill(HIST("Generated/hConvPhi_Rxy40_50cm"), mctrack.phi()); |
| 367 | + |
| 368 | + } else if (rxy < 60) { |
| 369 | + registry.fill(HIST("Generated/hConvPhi_Rxy50_60cm"), mctrack.phi()); |
| 370 | + |
| 371 | + } else if (rxy < 70) { |
| 372 | + registry.fill(HIST("Generated/hConvPhi_Rxy60_70cm"), mctrack.phi()); |
| 373 | + |
| 374 | + } else if (rxy < 80) { |
| 375 | + registry.fill(HIST("Generated/hConvPhi_Rxy70_80cm"), mctrack.phi()); |
| 376 | + |
| 377 | + } else if (rxy < 90) { |
| 378 | + registry.fill(HIST("Generated/hConvPhi_Rxy80_90cm"), mctrack.phi()); |
| 379 | + } |
| 380 | + } |
| 381 | + } |
| 382 | + } |
| 383 | + } |
| 384 | + |
305 | 385 | void processDummy(aod::EMReducedEvents::iterator const& collision) |
306 | 386 | { |
307 | 387 | // do nothing |
308 | 388 | } |
309 | 389 |
|
310 | 390 | PROCESS_SWITCH(PCMQCMC, processQCMC, "run PCM QC in MC", true); |
| 391 | + PROCESS_SWITCH(PCMQCMC, processGen, "run generated information", false); |
311 | 392 | PROCESS_SWITCH(PCMQCMC, processDummy, "Dummy function", false); |
312 | 393 | }; |
313 | 394 |
|
|
0 commit comments