@@ -58,7 +58,7 @@ struct PCMQC {
5858 std::vector<V0PhotonCut> fPCMCuts ;
5959
6060 OutputObj<THashList> fOutputEvent {" Event" };
61- OutputObj<THashList> fOutputTrack { " Track " };
61+ OutputObj<THashList> fOutputV0Leg { " V0Leg " };
6262 OutputObj<THashList> fOutputV0 {" V0" };
6363 THashList* fMainList = new THashList();
6464
@@ -73,23 +73,23 @@ struct PCMQC {
7373 THashList* list_ev = reinterpret_cast <THashList*>(fMainList ->FindObject (" Event" ));
7474 o2::aod::emphotonhistograms::DefineHistograms (list_ev, " Event" );
7575
76- o2::aod::emphotonhistograms::AddHistClass (fMainList , " Track " );
77- THashList* list_tr = reinterpret_cast <THashList*>(fMainList ->FindObject (" Track " ));
76+ o2::aod::emphotonhistograms::AddHistClass (fMainList , " V0Leg " );
77+ THashList* list_v0leg = reinterpret_cast <THashList*>(fMainList ->FindObject (" V0Leg " ));
7878
7979 o2::aod::emphotonhistograms::AddHistClass (fMainList , " V0" );
8080 THashList* list_v0 = reinterpret_cast <THashList*>(fMainList ->FindObject (" V0" ));
8181
8282 for (const auto & cut : fPCMCuts ) {
8383 const char * cutname = cut.GetName ();
84- o2::aod::emphotonhistograms::AddHistClass (list_tr , cutname);
84+ o2::aod::emphotonhistograms::AddHistClass (list_v0leg , cutname);
8585 o2::aod::emphotonhistograms::AddHistClass (list_v0, cutname);
8686 }
8787
8888 // for single tracks
8989 for (auto & cut : fPCMCuts ) {
9090 std::string_view cutname = cut.GetName ();
91- THashList* list = reinterpret_cast <THashList*>(fMainList ->FindObject (" Track " )->FindObject (cutname.data ()));
92- o2::aod::emphotonhistograms::DefineHistograms (list, " Track " );
91+ THashList* list = reinterpret_cast <THashList*>(fMainList ->FindObject (" V0Leg " )->FindObject (cutname.data ()));
92+ o2::aod::emphotonhistograms::DefineHistograms (list, " V0Leg " );
9393 }
9494
9595 // for V0s
@@ -120,61 +120,16 @@ struct PCMQC {
120120 addhistograms (); // please call this after DefinCuts();
121121
122122 fOutputEvent .setObject (reinterpret_cast <THashList*>(fMainList ->FindObject (" Event" )));
123- fOutputTrack .setObject (reinterpret_cast <THashList*>(fMainList ->FindObject (" Track " )));
123+ fOutputV0Leg .setObject (reinterpret_cast <THashList*>(fMainList ->FindObject (" V0Leg " )));
124124 fOutputV0 .setObject (reinterpret_cast <THashList*>(fMainList ->FindObject (" V0" )));
125125 }
126126
127- template <typename T>
128- void fillHistosLeg (const T& leg, const char * cutname)
129- {
130- reinterpret_cast <TH1F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hPt" ))->Fill (leg.pt ());
131- reinterpret_cast <TH1F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hQoverPt" ))->Fill (leg.sign () / leg.pt ());
132- reinterpret_cast <TH2F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hEtaPhi" ))->Fill (leg.phi (), leg.eta ());
133- reinterpret_cast <TH2F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hDCAxyz" ))->Fill (leg.dcaXY (), leg.dcaZ ());
134- reinterpret_cast <TH1F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hNclsTPC" ))->Fill (leg.tpcNClsFound ());
135- reinterpret_cast <TH1F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hNclsITS" ))->Fill (leg.itsNCls ());
136- reinterpret_cast <TH1F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hNcrTPC" ))->Fill (leg.tpcNClsCrossedRows ());
137- reinterpret_cast <TH1F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hTPCNcr2Nf" ))->Fill (leg.tpcCrossedRowsOverFindableCls ());
138- reinterpret_cast <TH1F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hTPCNcls2Nf" ))->Fill (leg.tpcFoundOverFindableCls ());
139- reinterpret_cast <TH1F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hChi2TPC" ))->Fill (leg.tpcChi2NCl ());
140- reinterpret_cast <TH1F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hChi2ITS" ))->Fill (leg.itsChi2NCl ());
141- reinterpret_cast <TH2F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hTPCdEdx" ))->Fill (leg.tpcInnerParam (), leg.tpcSignal ());
142- reinterpret_cast <TH2F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hTPCNsigmaEl" ))->Fill (leg.tpcInnerParam (), leg.tpcNSigmaEl ());
143- reinterpret_cast <TH2F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hTPCNsigmaPi" ))->Fill (leg.tpcInnerParam (), leg.tpcNSigmaPi ());
144- reinterpret_cast <TH2F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hXY" ))->Fill (leg.x (), leg.y ());
145- reinterpret_cast <TH2F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hZX" ))->Fill (leg.z (), leg.x ());
146- reinterpret_cast <TH2F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hZY" ))->Fill (leg.z (), leg.y ());
147- reinterpret_cast <TH2F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hDCAxyEta" ))->Fill (leg.eta (), leg.dcaXY ());
148- reinterpret_cast <TH2F *>(fMainList ->FindObject (" Track" )->FindObject (cutname)->FindObject (" hDCAxyZ" ))->Fill (leg.z (), leg.dcaXY ());
149- }
150-
151- template <typename T>
152- void fillHistosV0 (const T& v0, const char * cutname)
153- {
154- reinterpret_cast <TH1F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hPt" ))->Fill (v0.pt ());
155- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hEtaPhi" ))->Fill (v0.phi (), v0.eta ());
156- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hRadius" ))->Fill (v0.vz (), v0.v0radius ());
157- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hRadius_recalc" ))->Fill (v0.recalculatedVtxZ (), v0.recalculatedVtxR ());
158- reinterpret_cast <TH1F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hCosPA" ))->Fill (abs (v0.cospa ()));
159- reinterpret_cast <TH1F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hPCA" ))->Fill (v0.pca ());
160- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hAPplot" ))->Fill (v0.alpha (), v0.qtarm ());
161- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hMassGamma" ))->Fill (v0.v0radius (), v0.mGamma ());
162- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hMassGamma_recalc" ))->Fill (v0.recalculatedVtxR (), v0.mGamma ());
163- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hGammaPsiPair" ))->Fill (v0.psipair (), v0.mGamma ());
164- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hGammaRxy" ))->Fill (v0.vx (), v0.vy ());
165- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hGammaRxy_recalc" ))->Fill (v0.recalculatedVtxX (), v0.recalculatedVtxY ());
166- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hKFChi2vsR_recalc" ))->Fill (v0.recalculatedVtxR (), v0.chiSquareNDF ());
167- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hKFChi2vsZ_recalc" ))->Fill (v0.recalculatedVtxZ (), v0.chiSquareNDF ());
168-
169- float phi_recalc = atan2 (v0.recalculatedVtxY (), v0.recalculatedVtxX ());
170- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hGammaRPhi" ))->Fill (v0.phi (), v0.v0radius ());
171- reinterpret_cast <TH2F *>(fMainList ->FindObject (" V0" )->FindObject (cutname)->FindObject (" hGammaRPhi_recalc" ))->Fill (phi_recalc < 0 ? phi_recalc + TMath::TwoPi () : phi_recalc, v0.recalculatedVtxR ());
172- }
173-
174127 Preslice<MyV0Photons> perCollision = aod::v0photon::collisionId;
175128 void processQC (aod::EMReducedEvents const & collisions, MyV0Photons const & v0photons, aod::V0Legs const & v0legs)
176129 {
177130 THashList* list_ev = static_cast <THashList*>(fMainList ->FindObject (" Event" ));
131+ THashList* list_v0 = static_cast <THashList*>(fMainList ->FindObject (" V0" ));
132+ THashList* list_v0leg = static_cast <THashList*>(fMainList ->FindObject (" V0Leg" ));
178133
179134 for (auto & collision : collisions) {
180135 reinterpret_cast <TH1F *>(fMainList ->FindObject (" Event" )->FindObject (" hZvtx_before" ))->Fill (collision.posZ ());
@@ -198,19 +153,22 @@ struct PCMQC {
198153
199154 auto V0Photons_coll = v0photons.sliceBy (perCollision, collision.collisionId ());
200155 for (const auto & cut : fPCMCuts ) {
201- int ng = 0 ;
202- for (auto & g : V0Photons_coll) {
203- auto pos = g.posTrack_as <aod::V0Legs>();
204- auto ele = g.negTrack_as <aod::V0Legs>();
205- if (cut.IsSelected <aod::V0Legs>(g)) {
206- fillHistosV0 (g, cut.GetName ());
207- ng++;
156+ THashList* list_v0_cut = static_cast <THashList*>(list_v0->FindObject (cut.GetName ()));
157+ THashList* list_v0leg_cut = static_cast <THashList*>(list_v0leg->FindObject (cut.GetName ()));
158+
159+ int nv0 = 0 ;
160+ for (auto & v0 : V0Photons_coll) {
161+ auto pos = v0.posTrack_as <aod::V0Legs>();
162+ auto ele = v0.negTrack_as <aod::V0Legs>();
163+ if (cut.IsSelected <aod::V0Legs>(v0)) {
164+ o2::aod::emphotonhistograms::FillHistClass<EMHistType::kV0 >(list_v0_cut, " " , v0);
165+ nv0++;
208166 for (auto & leg : {pos, ele}) {
209- fillHistosLeg (leg, cut. GetName () );
167+ o2::aod::emphotonhistograms::FillHistClass<EMHistType:: kV0Leg >(list_v0leg_cut, " " , leg );
210168 }
211169 }
212170 } // end of v0 loop
213- reinterpret_cast <TH1F *>(fMainList ->FindObject (" V0" )->FindObject (cut.GetName ())->FindObject (" hNgamma" ))->Fill (ng );
171+ reinterpret_cast <TH1F *>(fMainList ->FindObject (" V0" )->FindObject (cut.GetName ())->FindObject (" hNgamma" ))->Fill (nv0 );
214172 } // end of cut loop
215173 } // end of collision loop
216174 } // end of process
0 commit comments