@@ -786,18 +786,39 @@ struct UpcJpsiCentralBarrel {
786
786
787
787
// MC histograms
788
788
MC.add (" MC/hNumberOfMCCollisions" , " hNumberOfCollisions" , {HistType::kTH1F , {{10 , 0 , 10 }}});
789
- MC.add (" MC/hNumberOfMCTracks" , " hNumberOfMCTracks" , {HistType::kTH1F , {{10 , 0 , 10 }}});
789
+ MC.add (" MC/hNumberOfRecoCollisions" , " hNumberOfRecoCollisions" , {HistType::kTH1F , {{10 , 0 , 10 }}});
790
+ MC.add (" MC/Muon/hNumberOfMCTracks" , " hNumberOfMCTracks" , {HistType::kTH1F , {{10 , 0 , 10 }}});
791
+ MC.add (" MC/Electron/hNumberOfMCTracks" , " hNumberOfMCTracks" , {HistType::kTH1F , {{10 , 0 , 10 }}});
792
+ MC.add (" MC/Proton/hNumberOfMCTracks" , " hNumberOfMCTracks" , {HistType::kTH1F , {{10 , 0 , 10 }}});
790
793
MC.add (" MC/hPosZ" , " hPosZ" , {HistType::kTH1F , {{60 , -15 , 15 }}});
791
- MC.add (" MC/hPDG" , " hPDG" , {HistType::kTH1F , {{900 , -450 , 450 }}});
792
- MC.add (" MC/hEta1" , " hEta1" , {HistType::kTH1F , {axisEta}});
793
- MC.add (" MC/hEta2" , " hEta2" , {HistType::kTH1F , {axisEta}});
794
- MC.add (" MC/hPhi1" , " hPhi1" , {HistType::kTH1F , {axisPhi}});
795
- MC.add (" MC/hPhi2" , " hPhi2" , {HistType::kTH1F , {axisPhi}});
796
- MC.add (" MC/hIVM" , " hIVM" , {HistType::kTH1F , {axisIVM}});
797
- MC.add (" MC/hRapidity" , " hRapidity" , {HistType::kTH1F , {axisEta}});
798
- MC.add (" MC/hPt1" , " hPt1" , {HistType::kTH1F , {axisPt}});
799
- MC.add (" MC/hPt2" , " hPt2" , {HistType::kTH1F , {axisPt}});
800
- MC.add (" MC/hPt" , " hPt" , {HistType::kTH1F , {axisPt}});
794
+ MC.add (" MC/hPDG" , " hPDG" , {HistType::kTH1F , {{200000 , -100000 , 100000 }}});
795
+ MC.add (" MC/Electron/hEta1" , " hEta1" , {HistType::kTH1F , {axisEta}});
796
+ MC.add (" MC/Electron/hEta2" , " hEta2" , {HistType::kTH1F , {axisEta}});
797
+ MC.add (" MC/Electron/hPhi1" , " hPhi1" , {HistType::kTH1F , {axisPhi}});
798
+ MC.add (" MC/Electron/hPhi2" , " hPhi2" , {HistType::kTH1F , {axisPhi}});
799
+ MC.add (" MC/Electron/hIVM" , " hIVM" , {HistType::kTH1F , {axisIVM}});
800
+ MC.add (" MC/Electron/hRapidity" , " hRapidity" , {HistType::kTH1F , {axisEta}});
801
+ MC.add (" MC/Electron/hPt1" , " hPt1" , {HistType::kTH1F , {axisPt}});
802
+ MC.add (" MC/Electron/hPt2" , " hPt2" , {HistType::kTH1F , {axisPt}});
803
+ MC.add (" MC/Electron/hPt" , " hPt" , {HistType::kTH1F , {axisPt}});
804
+ MC.add (" MC/Muon/hEta1" , " hEta1" , {HistType::kTH1F , {axisEta}});
805
+ MC.add (" MC/Muon/hEta2" , " hEta2" , {HistType::kTH1F , {axisEta}});
806
+ MC.add (" MC/Muon/hPhi1" , " hPhi1" , {HistType::kTH1F , {axisPhi}});
807
+ MC.add (" MC/Muon/hPhi2" , " hPhi2" , {HistType::kTH1F , {axisPhi}});
808
+ MC.add (" MC/Muon/hIVM" , " hIVM" , {HistType::kTH1F , {axisIVM}});
809
+ MC.add (" MC/Muon/hRapidity" , " hRapidity" , {HistType::kTH1F , {axisEta}});
810
+ MC.add (" MC/Muon/hPt1" , " hPt1" , {HistType::kTH1F , {axisPt}});
811
+ MC.add (" MC/Muon/hPt2" , " hPt2" , {HistType::kTH1F , {axisPt}});
812
+ MC.add (" MC/Muon/hPt" , " hPt" , {HistType::kTH1F , {axisPt}});
813
+ MC.add (" MC/Proton/hEta1" , " hEta1" , {HistType::kTH1F , {axisEta}});
814
+ MC.add (" MC/Proton/hEta2" , " hEta2" , {HistType::kTH1F , {axisEta}});
815
+ MC.add (" MC/Proton/hPhi1" , " hPhi1" , {HistType::kTH1F , {axisPhi}});
816
+ MC.add (" MC/Proton/hPhi2" , " hPhi2" , {HistType::kTH1F , {axisPhi}});
817
+ MC.add (" MC/Proton/hIVM" , " hIVM" , {HistType::kTH1F , {axisIVM}});
818
+ MC.add (" MC/Proton/hRapidity" , " hRapidity" , {HistType::kTH1F , {axisEta}});
819
+ MC.add (" MC/Proton/hPt1" , " hPt1" , {HistType::kTH1F , {axisPt}});
820
+ MC.add (" MC/Proton/hPt2" , " hPt2" , {HistType::kTH1F , {axisPt}});
821
+ MC.add (" MC/Proton/hPt" , " hPt" , {HistType::kTH1F , {axisPt}});
801
822
}
802
823
803
824
bool cutITSLayers (uint8_t itsClusterMap) const
@@ -1227,7 +1248,8 @@ struct UpcJpsiCentralBarrel {
1227
1248
} else if (OnOn) {
1228
1249
JPsiToEl.get <TH1>(HIST (" JPsiToEl/NotCoherent/OnOn/hIVM" ))->Fill (massJpsi);
1229
1250
}
1230
- } else {
1251
+ }
1252
+ if (RecoDecay::pt (mother) > 0 .2f ) {
1231
1253
JPsiToEl.get <TH1>(HIST (" JPsiToEl/Incoherent/hIVM" ))->Fill (massJpsi);
1232
1254
if (XnXn) {
1233
1255
JPsiToEl.get <TH1>(HIST (" JPsiToEl/Incoherent/XnXn/hIVM" ))->Fill (massJpsi);
@@ -1631,7 +1653,8 @@ struct UpcJpsiCentralBarrel {
1631
1653
} else if (OnOn) {
1632
1654
JPsiToMu.get <TH1>(HIST (" JPsiToMu/NotCoherent/OnOn/hIVM" ))->Fill (massJpsi);
1633
1655
}
1634
- } else {
1656
+ }
1657
+ if (RecoDecay::pt (mother) > 0 .2f ) {
1635
1658
JPsiToMu.get <TH1>(HIST (" JPsiToMu/Incoherent/hIVM" ))->Fill (massJpsi);
1636
1659
if (XnXn) {
1637
1660
JPsiToMu.get <TH1>(HIST (" JPsiToMu/Incoherent/XnXn/hIVM" ))->Fill (massJpsi);
@@ -2083,44 +2106,106 @@ struct UpcJpsiCentralBarrel {
2083
2106
MC.get <TH1>(HIST (" MC/hNumberOfMCCollisions" ))->Fill (1 .);
2084
2107
MC.get <TH1>(HIST (" MC/hPosZ" ))->Fill (mcCollision.posZ ());
2085
2108
2086
- std::array<float , 3 > daughPart1;
2087
- std::array<float , 3 > daughPart2;
2109
+ std::array<float , 3 > daughPart1Mu;
2110
+ std::array<float , 3 > daughPart2Mu;
2111
+ std::array<float , 3 > daughPart1El;
2112
+ std::array<float , 3 > daughPart2El;
2113
+ std::array<float , 3 > daughPart1Pr;
2114
+ std::array<float , 3 > daughPart2Pr;
2088
2115
2089
2116
// fill number of particles
2090
2117
for (auto const & mcParticle : mcParticles) {
2091
- MC.get <TH1>(HIST (" MC/hNumberOfMCTracks" ))->Fill (1 .);
2118
+ MC.get <TH1>(HIST (" MC/Muon/hNumberOfMCTracks" ))->Fill (1 .);
2119
+ MC.get <TH1>(HIST (" MC/Electron/hNumberOfMCTracks" ))->Fill (1 .);
2120
+ MC.get <TH1>(HIST (" MC/Proton/hNumberOfMCTracks" ))->Fill (1 .);
2092
2121
MC.get <TH1>(HIST (" MC/hPDG" ))->Fill (mcParticle.pdgCode ());
2093
2122
2094
2123
// check if only muons and physical primaries are present
2095
2124
if ((mcParticle.pdgCode () == 13 ) && mcParticle.isPhysicalPrimary ()) {
2096
- daughPart1 = {mcParticle.px (), mcParticle.py (), mcParticle.pz ()};
2125
+ daughPart1Mu = {mcParticle.px (), mcParticle.py (), mcParticle.pz ()};
2097
2126
2098
- MC.get <TH1>(HIST (" MC/hNumberOfMCTracks" ))->Fill (2 .);
2127
+ MC.get <TH1>(HIST (" MC/Muon/ hNumberOfMCTracks" ))->Fill (2 .);
2099
2128
}
2100
2129
if ((mcParticle.pdgCode () == -13 ) && mcParticle.isPhysicalPrimary ()) {
2101
- daughPart2 = {mcParticle.px (), mcParticle.py (), mcParticle.pz ()};
2130
+ daughPart2Mu = {mcParticle.px (), mcParticle.py (), mcParticle.pz ()};
2131
+
2132
+ MC.get <TH1>(HIST (" MC/Muon/hNumberOfMCTracks" ))->Fill (3 .);
2133
+ }
2134
+ if ((mcParticle.pdgCode () == 11 ) && mcParticle.isPhysicalPrimary ()) {
2135
+ daughPart1El = {mcParticle.px (), mcParticle.py (), mcParticle.pz ()};
2136
+
2137
+ MC.get <TH1>(HIST (" MC/Electron/hNumberOfMCTracks" ))->Fill (2 .);
2138
+ }
2139
+ if ((mcParticle.pdgCode () == -11 ) && mcParticle.isPhysicalPrimary ()) {
2140
+ daughPart2El = {mcParticle.px (), mcParticle.py (), mcParticle.pz ()};
2141
+
2142
+ MC.get <TH1>(HIST (" MC/Electron/hNumberOfMCTracks" ))->Fill (3 .);
2143
+ }
2144
+ if ((mcParticle.pdgCode () == 2212 ) && mcParticle.isPhysicalPrimary ()) {
2145
+ daughPart1Pr = {mcParticle.px (), mcParticle.py (), mcParticle.pz ()};
2102
2146
2103
- MC.get <TH1>(HIST (" MC/hNumberOfMCTracks" ))->Fill (3 .);
2147
+ MC.get <TH1>(HIST (" MC/Proton/hNumberOfMCTracks" ))->Fill (2 .);
2148
+ }
2149
+ if ((mcParticle.pdgCode () == -2212 ) && mcParticle.isPhysicalPrimary ()) {
2150
+ daughPart2Pr = {mcParticle.px (), mcParticle.py (), mcParticle.pz ()};
2151
+
2152
+ MC.get <TH1>(HIST (" MC/Proton/hNumberOfMCTracks" ))->Fill (3 .);
2104
2153
}
2105
2154
}
2106
2155
2107
2156
// calculate J/psi system and needed distributions
2108
- std::array<double , 3 > motherPart = {daughPart1[0 ] + daughPart2[0 ], daughPart1[1 ] + daughPart2[1 ], daughPart1[2 ] + daughPart2[2 ]};
2157
+ std::array<double , 3 > motherPartMu = {daughPart1Mu[0 ] + daughPart2Mu[0 ], daughPart1Mu[1 ] + daughPart2Mu[1 ], daughPart1Mu[2 ] + daughPart2Mu[2 ]};
2158
+ std::array<double , 3 > motherPartEl = {daughPart1El[0 ] + daughPart2El[0 ], daughPart1El[1 ] + daughPart2El[1 ], daughPart1El[2 ] + daughPart2El[2 ]};
2159
+ std::array<double , 3 > motherPartPr = {daughPart1Pr[0 ] + daughPart2Pr[0 ], daughPart1Pr[1 ] + daughPart2Pr[1 ], daughPart1Pr[2 ] + daughPart2Pr[2 ]};
2109
2160
2161
+ float massEl = o2::constants::physics::MassElectron;
2110
2162
float massMu = o2::constants::physics::MassMuonMinus;
2111
- auto arrMom = std::array{daughPart1, daughPart2};
2112
- float massJpsi = RecoDecay::m (arrMom, std::array{massMu, massMu});
2113
-
2114
- MC.get <TH1>(HIST (" MC/hEta1" ))->Fill (RecoDecay::eta (daughPart1));
2115
- MC.get <TH1>(HIST (" MC/hEta2" ))->Fill (RecoDecay::eta (daughPart2));
2116
- MC.get <TH1>(HIST (" MC/hPhi1" ))->Fill (RecoDecay::phi (daughPart1));
2117
- MC.get <TH1>(HIST (" MC/hPhi2" ))->Fill (RecoDecay::phi (daughPart2));
2118
- MC.get <TH1>(HIST (" MC/hPt1" ))->Fill (RecoDecay::pt (daughPart1));
2119
- MC.get <TH1>(HIST (" MC/hPt2" ))->Fill (RecoDecay::pt (daughPart2));
2120
- MC.get <TH1>(HIST (" MC/hPt" ))->Fill (RecoDecay::pt (motherPart));
2121
- MC.get <TH1>(HIST (" MC/hIVM" ))->Fill (massJpsi);
2122
- MC.get <TH1>(HIST (" MC/hRapidity" ))->Fill (RecoDecay::y (motherPart, massJpsi));
2123
- } // end MC process
2163
+ float massPr = o2::constants::physics::MassProton;
2164
+
2165
+ auto arrMomMu = std::array{daughPart1Mu, daughPart2Mu};
2166
+ float massJpsiMu = RecoDecay::m (arrMomMu, std::array{massMu, massMu});
2167
+ auto arrMomEl = std::array{daughPart1El, daughPart2El};
2168
+ float massJpsiEl = RecoDecay::m (arrMomEl, std::array{massEl, massEl});
2169
+ auto arrMomPr = std::array{daughPart1Pr, daughPart2Pr};
2170
+ float massJpsiPr = RecoDecay::m (arrMomPr, std::array{massPr, massPr});
2171
+
2172
+ MC.get <TH1>(HIST (" MC/Muon/hEta1" ))->Fill (RecoDecay::eta (daughPart1Mu));
2173
+ MC.get <TH1>(HIST (" MC/Muon/hEta2" ))->Fill (RecoDecay::eta (daughPart2Mu));
2174
+ MC.get <TH1>(HIST (" MC/Muon/hPhi1" ))->Fill (RecoDecay::phi (daughPart1Mu));
2175
+ MC.get <TH1>(HIST (" MC/Muon/hPhi2" ))->Fill (RecoDecay::phi (daughPart2Mu));
2176
+ MC.get <TH1>(HIST (" MC/Muon/hPt1" ))->Fill (RecoDecay::pt (daughPart1Mu));
2177
+ MC.get <TH1>(HIST (" MC/Muon/hPt2" ))->Fill (RecoDecay::pt (daughPart2Mu));
2178
+ MC.get <TH1>(HIST (" MC/Muon/hPt" ))->Fill (RecoDecay::pt (motherPartMu));
2179
+ MC.get <TH1>(HIST (" MC/Muon/hIVM" ))->Fill (massJpsiMu);
2180
+ MC.get <TH1>(HIST (" MC/Muon/hRapidity" ))->Fill (RecoDecay::y (motherPartMu, massJpsiMu));
2181
+
2182
+ MC.get <TH1>(HIST (" MC/Electron/hEta1" ))->Fill (RecoDecay::eta (daughPart1El));
2183
+ MC.get <TH1>(HIST (" MC/Electron/hEta2" ))->Fill (RecoDecay::eta (daughPart2El));
2184
+ MC.get <TH1>(HIST (" MC/Electron/hPhi1" ))->Fill (RecoDecay::phi (daughPart1El));
2185
+ MC.get <TH1>(HIST (" MC/Electron/hPhi2" ))->Fill (RecoDecay::phi (daughPart2El));
2186
+ MC.get <TH1>(HIST (" MC/Electron/hPt1" ))->Fill (RecoDecay::pt (daughPart1El));
2187
+ MC.get <TH1>(HIST (" MC/Electron/hPt2" ))->Fill (RecoDecay::pt (daughPart2El));
2188
+ MC.get <TH1>(HIST (" MC/Electron/hPt" ))->Fill (RecoDecay::pt (motherPartEl));
2189
+ MC.get <TH1>(HIST (" MC/Electron/hIVM" ))->Fill (massJpsiEl);
2190
+ MC.get <TH1>(HIST (" MC/Electron/hRapidity" ))->Fill (RecoDecay::y (motherPartEl, massJpsiEl));
2191
+
2192
+ MC.get <TH1>(HIST (" MC/Proton/hEta1" ))->Fill (RecoDecay::eta (daughPart1Pr));
2193
+ MC.get <TH1>(HIST (" MC/Proton/hEta2" ))->Fill (RecoDecay::eta (daughPart2Pr));
2194
+ MC.get <TH1>(HIST (" MC/Proton/hPhi1" ))->Fill (RecoDecay::phi (daughPart1Pr));
2195
+ MC.get <TH1>(HIST (" MC/Proton/hPhi2" ))->Fill (RecoDecay::phi (daughPart2Pr));
2196
+ MC.get <TH1>(HIST (" MC/Proton/hPt1" ))->Fill (RecoDecay::pt (daughPart1Pr));
2197
+ MC.get <TH1>(HIST (" MC/Proton/hPt2" ))->Fill (RecoDecay::pt (daughPart2Pr));
2198
+ MC.get <TH1>(HIST (" MC/Proton/hPt" ))->Fill (RecoDecay::pt (motherPartPr));
2199
+ MC.get <TH1>(HIST (" MC/Proton/hIVM" ))->Fill (massJpsiPr);
2200
+ MC.get <TH1>(HIST (" MC/Proton/hRapidity" ))->Fill (RecoDecay::y (motherPartPr, massJpsiPr));
2201
+
2202
+ } // end MC skimmed process
2203
+
2204
+ template <typename C>
2205
+ void processMCU (C const & collisions)
2206
+ {
2207
+ MC.fill (HIST (" MC/hNumberOfRecoCollisions" ), collisions.size ());
2208
+ } // end MC unskimmed process
2124
2209
2125
2210
void processDGrecoLevel (UDCollisionFull const & collision, UDTracksFull const & tracks)
2126
2211
{
@@ -2146,9 +2231,15 @@ struct UpcJpsiCentralBarrel {
2146
2231
processMC (mcCollision, mcParticles);
2147
2232
}
2148
2233
2234
+ void processMCUnskimmed (aod::McCollision const & mcCollision, soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions>> const & collisions /* , aod::McParticles const& mcParticles, aod::TracksIU const& tracks*/ )
2235
+ {
2236
+ processMCU (collisions);
2237
+ }
2238
+
2149
2239
PROCESS_SWITCH (UpcJpsiCentralBarrel, processDGrecoLevel, " Iterate over DG skimmed data." , false );
2150
2240
PROCESS_SWITCH (UpcJpsiCentralBarrel, processSGrecoLevel, " Iterate over SG skimmed data." , false );
2151
2241
PROCESS_SWITCH (UpcJpsiCentralBarrel, processMCtruth, " Iterate of MC true data." , true );
2242
+ PROCESS_SWITCH (UpcJpsiCentralBarrel, processMCUnskimmed, " Iterate over unskimmed data." , true );
2152
2243
}; // end struct
2153
2244
2154
2245
WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments