PandaRoot
PndRhoTupleQA.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 #ifndef PNDRHOTUPLEQA_H
14 #define PNDRHOTUPLEQA_H 1
15 
16 #include "TLorentzVector.h"
17 #include "TVector3.h"
18 #include "TString.h"
19 #include "RhoCandList.h"
20 #include "RhoVtxPoca.h"
21 
22 class RhoCandidate;
23 class RhoTuple;
24 class PndEventShape;
25 class PndAnalysis;
26 class RhoFitterBase;
27 
29  public:
30  PndRhoTupleQA(PndAnalysis *ana = nullptr, double pbarmom = 15.15);
32 
33  // *** QA methods
34  // *** QA for candidates
35  void qaCand(TString pre, RhoCandidate *cc, RhoTuple *n, bool skip = false);
36  void qaP4(TString pre, TLorentzVector c, RhoTuple *n, bool skip = false);
37  void qaP4Cms(TString pre, TLorentzVector c, RhoTuple *n, bool skip = false);
38  void qaP4Cov(TString pre, RhoCandidate *c, RhoTuple *n, bool skip = false);
39  void qaPos(TString pre, TVector3 p, RhoTuple *n, bool skip = false);
40  void qaPull(TString pre, RhoCandidate *c, RhoTuple *n, bool skip = false);
41 
42  // *** QA for 2-prong
43  void qaCompP4(TString pre, RhoCandidate *c, RhoTuple *n);
44  void qaComp(TString pre, RhoCandidate *c, RhoTuple *n, bool covs = false, bool pulls = false);
45  void qaKs0(TString pre, RhoCandidate *c, RhoTuple *n);
46  void qaPi0(TString pre, RhoCandidate *c, RhoTuple *n);
47 
48  // *** QA of event shape
49  void qaEventShape(TString pre, PndEventShape *evsh, RhoTuple *n);
50  void qaEventShapeShort(TString pre, PndEventShape *evsh, RhoTuple *n);
51 
52  // *** QA for parts of eventshape
53  void qaESPidMult(TString pre, PndEventShape *evsh, double prob, double pmin, RhoTuple *n);
54  void qaESMult(TString pre, PndEventShape *evsh, RhoTuple *n);
55  void qaESSum(TString pre, PndEventShape *evsh, RhoTuple *n);
56  void qaESMinMax(TString pre, PndEventShape *evsh, RhoTuple *n);
57  void qaESEventVars(TString pre, PndEventShape *evsh, RhoTuple *n);
58 
59  // *** QA track, vtx, PID, decay
60  void qaVtx(TString pre, RhoCandidate *c, RhoTuple *n);
61  void qaPoca(TString pre, RhoCandidate *c, RhoTuple *n);
62  void qaPRG(TString pre, RhoCandidate *c, RhoTuple *n);
63  void qa2Body(TString pre, RhoCandidate *c, RhoTuple *n);
64  void qaDalitz(TString pre, RhoCandidate *c, RhoTuple *n);
65  void qaTrk(TString pre, RhoCandidate *c, RhoTuple *n);
66  void qaPid(TString pre, RhoCandidate *c, RhoTuple *n);
67 
68  // *** QA PndPidCandidate raw values
69  void qaEmc(TString pre, RhoCandidate *c, RhoTuple *n);
70  void qaMvd(TString pre, RhoCandidate *c, RhoTuple *n);
71  void qaStt(TString pre, RhoCandidate *c, RhoTuple *n);
72  void qaGem(TString pre, RhoCandidate *c, RhoTuple *n);
73  void qaDrc(TString pre, RhoCandidate *c, RhoTuple *n);
74  void qaDsc(TString pre, RhoCandidate *c, RhoTuple *n);
75  void qaRich(TString pre, RhoCandidate *c, RhoTuple *n);
76  void qaTof(TString pre, RhoCandidate *c, RhoTuple *n);
77  void qaMuo(TString pre, RhoCandidate *c, RhoTuple *n);
78 
79  void qaRecoShort(TString pre, RhoCandidate *c, RhoTuple *n);
80  void qaRecoShortTree(TString pre, RhoCandidate *c, RhoTuple *n);
81  void qaRecoFull(TString pre, RhoCandidate *c, RhoTuple *n);
82  void qaRecoFullTree(TString pre, RhoCandidate *c, RhoTuple *n);
83 
84  // *** QA for the full MC list as array.
85  void qaMcList(TString pre, RhoCandList &l, RhoTuple *n, int max = 10000);
86  void qaMcList(RhoTuple *n, int max = 10000);
87  // *** QA for the MC truth of candidates and the difference of the relevant properties (pos, p4, etc.)
88  void qaMcDiff(TString pre, RhoCandidate *c, RhoTuple *n, bool skip = false);
89  void qaMc(TString pre, RhoCandidate *c, RhoTuple *n, bool skip = false);
90 
91  void qaFitter(TString pre, RhoFitterBase *fitter, RhoTuple *n, bool skip = false);
92 
93  // *** Setters and getters
94  void SetIniP4(TLorentzVector _ini) { fIniP4 = _ini; }
95  TLorentzVector GetIniP4() { return fIniP4; }
96 
97  private:
98  RhoCandidate *fDummyCand; // empty RhoCandidate to replace "mct" if there is no MCTruth partner (added by J.Puetz in June 2018);
99  RhoVtxPoca *fVtxPoca;
100  PndAnalysis *fAnalysis;
101 
102  TLorentzVector fIniP4; // initial 4-momentum
103 };
104 
105 #endif
void qaPi0(TString pre, RhoCandidate *c, RhoTuple *n)
void qaCand(TString pre, RhoCandidate *cc, RhoTuple *n, bool skip=false)
void qaRecoShortTree(TString pre, RhoCandidate *c, RhoTuple *n)
void qaPid(TString pre, RhoCandidate *c, RhoTuple *n)
void qaRecoFullTree(TString pre, RhoCandidate *c, RhoTuple *n)
void qaTrk(TString pre, RhoCandidate *c, RhoTuple *n)
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:37
void qaStt(TString pre, RhoCandidate *c, RhoTuple *n)
void qaVtx(TString pre, RhoCandidate *c, RhoTuple *n)
void qaP4(TString pre, TLorentzVector c, RhoTuple *n, bool skip=false)
void qaKs0(TString pre, RhoCandidate *c, RhoTuple *n)
void qaGem(TString pre, RhoCandidate *c, RhoTuple *n)
void qaESMinMax(TString pre, PndEventShape *evsh, RhoTuple *n)
void qaRich(TString pre, RhoCandidate *c, RhoTuple *n)
void qaDalitz(TString pre, RhoCandidate *c, RhoTuple *n)
void qaMcList(TString pre, RhoCandList &l, RhoTuple *n, int max=10000)
void qaP4Cov(TString pre, RhoCandidate *c, RhoTuple *n, bool skip=false)
void qaCompP4(TString pre, RhoCandidate *c, RhoTuple *n)
void qaPoca(TString pre, RhoCandidate *c, RhoTuple *n)
void qa2Body(TString pre, RhoCandidate *c, RhoTuple *n)
void qaComp(TString pre, RhoCandidate *c, RhoTuple *n, bool covs=false, bool pulls=false)
void qaDsc(TString pre, RhoCandidate *c, RhoTuple *n)
void qaESPidMult(TString pre, PndEventShape *evsh, double prob, double pmin, RhoTuple *n)
PndRhoTupleQA(PndAnalysis *ana=nullptr, double pbarmom=15.15)
void qaMvd(TString pre, RhoCandidate *c, RhoTuple *n)
void qaEventShape(TString pre, PndEventShape *evsh, RhoTuple *n)
void qaEventShapeShort(TString pre, PndEventShape *evsh, RhoTuple *n)
void qaTof(TString pre, RhoCandidate *c, RhoTuple *n)
void qaRecoShort(TString pre, RhoCandidate *c, RhoTuple *n)
void qaRecoFull(TString pre, RhoCandidate *c, RhoTuple *n)
void qaEmc(TString pre, RhoCandidate *c, RhoTuple *n)
void SetIniP4(TLorentzVector _ini)
Definition: PndRhoTupleQA.h:94
void qaESSum(TString pre, PndEventShape *evsh, RhoTuple *n)
void qaMc(TString pre, RhoCandidate *c, RhoTuple *n, bool skip=false)
void qaPRG(TString pre, RhoCandidate *c, RhoTuple *n)
TLorentzVector GetIniP4()
Definition: PndRhoTupleQA.h:95
void qaFitter(TString pre, RhoFitterBase *fitter, RhoTuple *n, bool skip=false)
void qaDrc(TString pre, RhoCandidate *c, RhoTuple *n)
void qaPull(TString pre, RhoCandidate *c, RhoTuple *n, bool skip=false)
void qaP4Cms(TString pre, TLorentzVector c, RhoTuple *n, bool skip=false)
void qaMuo(TString pre, RhoCandidate *c, RhoTuple *n)
void qaPos(TString pre, TVector3 p, RhoTuple *n, bool skip=false)
void qaMcDiff(TString pre, RhoCandidate *c, RhoTuple *n, bool skip=false)
void qaESEventVars(TString pre, PndEventShape *evsh, RhoTuple *n)
void qaESMult(TString pre, PndEventShape *evsh, RhoTuple *n)