FairRoot/PandaRoot
Public Member Functions | Private Attributes | List of all members
PndRhoTupleQA Class Reference

#include <PndRhoTupleQA.h>

Public Member Functions

 PndRhoTupleQA (PndAnalysis *ana=0, double pbarmom=15.15)
 
 ~PndRhoTupleQA ()
 
void qaCand (TString pre, RhoCandidate *cc, RhoTuple *n, bool skip=false)
 
void qaP4 (TString pre, TLorentzVector c, RhoTuple *n, bool skip=false)
 
void qaP4Cms (TString pre, TLorentzVector c, RhoTuple *n, bool skip=false)
 
void qaP4Cov (TString pre, RhoCandidate *c, RhoTuple *n, bool skip=false)
 
void qaPos (TString pre, TVector3 p, RhoTuple *n, bool skip=false)
 
void qaPull (TString pre, RhoCandidate *c, RhoTuple *n, bool skip=false)
 
void qaComp (TString pre, RhoCandidate *c, RhoTuple *n, bool covs=false, bool pulls=false)
 
void qaKs0 (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaPi0 (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaEventShape (TString pre, PndEventShape *evsh, RhoTuple *n)
 
void qaEventShapeShort (TString pre, PndEventShape *evsh, RhoTuple *n)
 
void qaESPidMult (TString pre, PndEventShape *evsh, double prob, double pmin, RhoTuple *n)
 
void qaESMult (TString pre, PndEventShape *evsh, RhoTuple *n)
 
void qaESSum (TString pre, PndEventShape *evsh, RhoTuple *n)
 
void qaESMinMax (TString pre, PndEventShape *evsh, RhoTuple *n)
 
void qaESEventVars (TString pre, PndEventShape *evsh, RhoTuple *n)
 
void qaVtx (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaPoca (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaPRG (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qa2Body (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaDalitz (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaTrk (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaPid (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaEmc (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaMvd (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaStt (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaGem (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaDrc (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaDsc (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaRich (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaTof (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaMuo (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaRecoShort (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaRecoShortTree (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaRecoFull (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaRecoFullTree (TString pre, RhoCandidate *c, RhoTuple *n)
 
void qaMcList (TString pre, RhoCandList &l, RhoTuple *n, int max=10000)
 
void qaMcList (RhoTuple *n, int max=10000)
 
void qaMcDiff (TString pre, RhoCandidate *c, RhoTuple *n, bool skip=false)
 
void qaMc (TString pre, RhoCandidate *c, RhoTuple *n, bool skip=false)
 
void qaFitter (TString pre, RhoFitterBase *fitter, RhoTuple *n, bool skip=false)
 
void SetIniP4 (TLorentzVector _ini)
 
TLorentzVector GetIniP4 ()
 

Private Attributes

RhoCandidatefDummyCand
 
RhoVtxPocafVtxPoca
 
PndAnalysisfAnalysis
 
TLorentzVector fIniP4
 

Detailed Description

Definition at line 16 of file PndRhoTupleQA.h.

Constructor & Destructor Documentation

PndRhoTupleQA::PndRhoTupleQA ( PndAnalysis ana = 0,
double  pbarmom = 15.15 
)

Definition at line 16 of file PndRhoTupleQA.cxx.

References fAnalysis, fDummyCand, fIniP4, fVtxPoca, mp, and sqrt().

17 {
18  fDummyCand = new RhoCandidate();
19  fAnalysis = ana;
20  fVtxPoca = new RhoVtxPoca();
21  double mp=0.938272;
22  fIniP4.SetXYZT(0,0,pbarmom, sqrt(pbarmom*pbarmom+mp*mp)+mp);
23 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
static const double mp
Definition: mzparameters.h:11
TLorentzVector fIniP4
Definition: PndRhoTupleQA.h:90
PndAnalysis * fAnalysis
Definition: PndRhoTupleQA.h:88
RhoVtxPoca * fVtxPoca
Definition: PndRhoTupleQA.h:87
RhoCandidate * fDummyCand
Definition: PndRhoTupleQA.h:86
PndRhoTupleQA::~PndRhoTupleQA ( )

Definition at line 26 of file PndRhoTupleQA.cxx.

References fDummyCand, and fVtxPoca.

27 {
28  delete fVtxPoca;
29  delete fDummyCand;
30 }
RhoVtxPoca * fVtxPoca
Definition: PndRhoTupleQA.h:87
RhoCandidate * fDummyCand
Definition: PndRhoTupleQA.h:86

Member Function Documentation

TLorentzVector PndRhoTupleQA::GetIniP4 ( )
inline

Definition at line 82 of file PndRhoTupleQA.h.

References fIniP4.

82 {return fIniP4;}
TLorentzVector fIniP4
Definition: PndRhoTupleQA.h:90
void PndRhoTupleQA::qa2Body ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 724 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), cos(), d0, RhoCandidate::Daughter(), f, RhoCandidate::NDaughters(), RhoCandidate::P3(), and RhoCandidate::P4().

Referenced by qaComp().

725 {
726  if (n==0) return;
727 
728  if (c->NDaughters()!=2) return;
729 
730  RhoCandidate *d0 = c->Daughter(0);
731  RhoCandidate *d1 = c->Daughter(1);
732 
733  // opening angle lab
734  double oang = d0->P3().Angle(d1->P3());
735 
736  // decay angle
737  TLorentzVector d_cms = d0->P4();
738  d_cms.Boost(-(c->P4().BoostVector()));
739  Float_t dec = d_cms.Vect().Angle(c->P3());
740  Float_t cdec = cos(dec);
741 
742  n->Column(pre+"oang", (Float_t) oang, 0.0f );
743  n->Column(pre+"decang", (Float_t) dec, 0.0f );
744  n->Column(pre+"cdecang", (Float_t) cdec, 0.0f );
745 }
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
RhoCandidate * Daughter(Int_t n)
Double_t d0
Definition: checkhelixhit.C:59
TFile * f
Definition: bump_analys.C:12
TLorentzVector P4() const
Definition: RhoCandidate.h:195
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Int_t NDaughters() const
TVector3 P3() const
Definition: RhoCandidate.h:199
void PndRhoTupleQA::qaCand ( TString  pre,
RhoCandidate cc,
RhoTuple n,
bool  skip = false 
)

Definition at line 554 of file PndRhoTupleQA.cxx.

References c, RhoCandidate::Charge(), RhoTuple::Column(), f, p, RhoCandidate::P4(), RhoCandidate::PdgCode(), RhoCandidate::Pos(), qaP4(), and qaPos().

Referenced by PndTripleAnaTask::DsDs2317Analysis(), PndTripleAnaTask::JpsiAnalysis(), qaComp(), qaKs0(), qaMc(), and qaPi0().

555 {
556  if (n==0) return;
557 
558  if (!skip)
559  {
560  TLorentzVector c=cc->P4();
561  TVector3 p=cc->Pos();
562 
563  qaP4(pre, c, n);
564  qaPos(pre, p, n);
565  n->Column(pre+"chg", (Float_t) cc->Charge(), 0.0f );
566  n->Column(pre+"pdg", (Float_t) cc->PdgCode(), 0.0f );
567  }
568  else
569  {
570  TLorentzVector dummy;
571  TVector3 dummypos;
572  qaP4(pre, dummy, n, true);
573  qaPos(pre, dummypos, n, true);
574  n->Column(pre+"chg", (Float_t) -999., 0.0f );
575  n->Column(pre+"pdg", (Float_t) -999., 0.0f );
576  }
577 }
Double_t p
Definition: anasim.C:58
TVector3 Pos() const
Definition: RhoCandidate.h:186
void qaP4(TString pre, TLorentzVector c, RhoTuple *n, bool skip=false)
TFile * f
Definition: bump_analys.C:12
TLorentzVector P4() const
Definition: RhoCandidate.h:195
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Double_t Charge() const
Definition: RhoCandidate.h:184
void qaPos(TString pre, TVector3 p, RhoTuple *n, bool skip=false)
void PndRhoTupleQA::qaComp ( TString  pre,
RhoCandidate c,
RhoTuple n,
bool  covs = false,
bool  pulls = false 
)

Definition at line 283 of file PndRhoTupleQA.cxx.

References RhoCandidate::Charge(), RhoTuple::Column(), RhoCandidate::Daughter(), f, fabs(), fAnalysis, RhoCandidate::GetMcTruth(), i, RhoCandidate::M(), mct, PndAnalysis::McTruthMatch(), n, name, RhoCandidate::NDaughters(), RhoCandidate::P4(), RhoCandidate::PdgCode(), qa2Body(), qaCand(), qaDalitz(), qaP4Cms(), qaP4Cov(), qaPid(), qaPoca(), qaPull(), qaVtx(), and TString.

Referenced by ana_jpsi(), PndTripleAnaTask::DsDs2317Analysis(), PndTripleAnaTask::JpsiAnalysis(), PndSoftTriggerTask::TagMode(), PndTripleAnaTask::ThreePiAnalysis(), and tut_ana_d0_qahelper().

284 {
285  if (n==0) return;
286 
287  // what kind of particle?
288  //int pdg = c->PdgCode(); //[R.K. 01/2017] unused variable
289 
290  // special composite particle?
291  // pi0 or eta?
292  //if (pdg == 111 || pdg == 221)
293  //{
294  //qaPi0(pre, c, n);
295  //return;
296  //}
298  //if (pdg == 310)
299  //{
300  //qaKs0(pre, c, n);
301  //return;
302  //}
303 
304  // how many daughters?
305  int nd = c->NDaughters();
306 
307  // truth match already done?
308  RhoCandidate *truth = c->GetMcTruth();
309 
310  // if not, try one
311  if (truth == 0 && fAnalysis != 0)
312  {
314  truth = c->GetMcTruth();
315  }
316 
317  bool mct = false;
318  if (truth!=0)
319  {
320  if (nd>0) mct = true;
321  else mct = (truth->PdgCode()==c->PdgCode());
322  }
323  // store cand info in lab and cms
324  qaCand(pre, c, n);
325  qaP4Cms(pre, c->P4(), n);
326  if(covs)qaP4Cov(pre, c, n);
327  if(pulls) qaPull(pre,c,n, (0==truth));
328  n->Column(pre+"mct", (Float_t) mct, 0.0f);
329 
330  // for mass difference e.g. D* -> D pi decays
331  if (nd>=2) n->Column(pre+"mdif", (Float_t) (c->M() - c->Daughter(0)->M()), 0.0f);
332 
333  // cand is final state particle
334  if (nd==0)
335  {
336  // charged particle -> store PID info
337  if ( fabs(c->Charge())>0.1 ) qaPid(pre, c, n);
338 
339  // and pdg code from truth
340  Float_t trpdg = 0.;
341  if (truth) trpdg = truth->PdgCode();
342  n->Column(pre+"trpdg", (Float_t) trpdg, 0.0f);
343  }
344  // cand is composite
345  else
346  {
347  // if 2 daughters -> store decay angle etc
348  if (nd==2) qa2Body(pre, c, n);
349  // if 3 daughters -> dalitz plot vars
350  if (nd==3) qaDalitz(pre, c, n);
351 
352  // counter for charged final states
353  int nchrgfs = 0;
354 
355  for (int i=0; i<nd; ++i)
356  {
357  RhoCandidate *dau = c->Daughter(i);
358  TString name=TString::Format("%sd%d",pre.Data(),i);
359 
360  // count charged final states for possible vertexing later
361  if (dau->NDaughters()==0 && fabs(dau->Charge())>0.01) nchrgfs++;
362 
363  // recursive call of qaComp
364  qaComp(name, dau, n, covs, pulls);
365  }
366  // only charged final state daughters -> Vtx info with RhoVtxPoca
367  if (nchrgfs > 1)
368  {
369  qaPoca(pre, c, n);
370  qaVtx(pre, c, n);
371  }
372  }
373 }
void qaCand(TString pre, RhoCandidate *cc, RhoTuple *n, bool skip=false)
Int_t i
Definition: run_full.C:25
void qaPid(TString pre, RhoCandidate *c, RhoTuple *n)
int n
RhoCandidate * Daughter(Int_t n)
void qaVtx(TString pre, RhoCandidate *c, RhoTuple *n)
void qaDalitz(TString pre, RhoCandidate *c, RhoTuple *n)
void qaP4Cov(TString pre, RhoCandidate *c, RhoTuple *n, bool skip=false)
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)
TFile * f
Definition: bump_analys.C:12
TLorentzVector P4() const
Definition: RhoCandidate.h:195
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
Double_t M() const
TString name
RhoCandidate * GetMcTruth() const
Definition: RhoCandidate.h:437
Int_t NDaughters() const
Double_t Charge() const
Definition: RhoCandidate.h:184
PndAnalysis * fAnalysis
Definition: PndRhoTupleQA.h:88
Bool_t McTruthMatch(RhoCandidate *cand, Int_t level=2, bool verbose=false)
void qaPull(TString pre, RhoCandidate *c, RhoTuple *n, bool skip=false)
void qaP4Cms(TString pre, TLorentzVector c, RhoTuple *n, bool skip=false)
PndMCTrack * mct
Definition: hist-t7.C:147
void PndRhoTupleQA::qaDalitz ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 749 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), RhoCandidate::Daughter(), RhoCandidate::NDaughters(), and RhoCandidate::P4().

Referenced by qaComp().

750 {
751  if (n==0) return;
752 
753  if (c->NDaughters()!=3) return;
754 
755  TLorentzVector l01 = c->Daughter(0)->P4()+c->Daughter(1)->P4();
756  TLorentzVector l12 = c->Daughter(1)->P4()+c->Daughter(2)->P4();
757  TLorentzVector l02 = c->Daughter(2)->P4()+c->Daughter(0)->P4();
758 
759  n->Column(pre+"m01", (Float_t) l01.M(), 0.0f );
760  n->Column(pre+"m12", (Float_t) l12.M(), 0.0f );
761  n->Column(pre+"m02", (Float_t) l02.M(), 0.0f );
762 
763  n->Column(pre+"dal01", (Float_t) l01.M2(), 0.0f );
764  n->Column(pre+"dal12", (Float_t) l12.M2(), 0.0f );
765  n->Column(pre+"dal02", (Float_t) l02.M2(), 0.0f );
766 }
RhoCandidate * Daughter(Int_t n)
TLorentzVector P4() const
Definition: RhoCandidate.h:195
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Int_t NDaughters() const
void PndRhoTupleQA::qaDrc ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 893 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), PndPidCandidate::GetDrcIndex(), PndPidCandidate::GetDrcNumberOfPhotons(), PndPidCandidate::GetDrcQuality(), PndPidCandidate::GetDrcThetaC(), PndPidCandidate::GetDrcThetaCErr(), and RhoCandidate::GetRecoCandidate().

Referenced by PndParticleQATask::Exec(), and qaRecoFull().

894 {
895  if (n==0) return;
896 
898 
899  if (mic)
900  {
901  n->Column(pre+"drcthtc", (Float_t) mic->GetDrcThetaC(), 0.0f );
902  n->Column(pre+"drcdthtc", (Float_t) mic->GetDrcThetaCErr(), 0.0f );
903  n->Column(pre+"drcqa", (Float_t) mic->GetDrcQuality(), 0.0f );
904  n->Column(pre+"drcnphot", (Int_t) mic->GetDrcNumberOfPhotons(), 0 );
905  n->Column(pre+"drcidx", (Int_t) mic->GetDrcIndex(), 0 );
906  }
907 }
Float_t GetDrcThetaCErr() const
PndPidCandidate * GetRecoCandidate() const
Definition: RhoCandidate.h:376
Float_t GetDrcThetaC() const
Int_t GetDrcNumberOfPhotons() const
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Int_t GetDrcIndex() const
Float_t GetDrcQuality() const
void PndRhoTupleQA::qaDsc ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 911 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), PndPidCandidate::GetDiscIndex(), PndPidCandidate::GetDiscNumberOfPhotons(), PndPidCandidate::GetDiscQuality(), PndPidCandidate::GetDiscThetaC(), PndPidCandidate::GetDiscThetaCErr(), and RhoCandidate::GetRecoCandidate().

Referenced by PndParticleQATask::Exec(), and qaRecoFull().

912 {
913  if (n==0) return;
914 
916 
917  if (mic)
918  {
919  n->Column(pre+"dscthtc", (Float_t) mic->GetDiscThetaC(), 0.0f );
920  n->Column(pre+"dscdthtc", (Float_t) mic->GetDiscThetaCErr(), 0.0f );
921  n->Column(pre+"dscqa", (Float_t) mic->GetDiscQuality(), 0.0f );
922  n->Column(pre+"dscnphot", (Int_t) mic->GetDiscNumberOfPhotons(),0 );
923  n->Column(pre+"dscidx", (Int_t) mic->GetDiscIndex(), 0 );
924  }
925 }
Int_t GetDiscIndex() const
PndPidCandidate * GetRecoCandidate() const
Definition: RhoCandidate.h:376
Int_t GetDiscNumberOfPhotons() const
Float_t GetDiscQuality() const
Float_t GetDiscThetaC() const
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Float_t GetDiscThetaCErr() const
void PndRhoTupleQA::qaEmc ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 823 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), PndPidCandidate::GetEmcCalEnergy(), PndPidCandidate::GetEmcClusterE1(), PndPidCandidate::GetEmcClusterE25(), PndPidCandidate::GetEmcClusterE9(), PndPidCandidate::GetEmcClusterLat(), PndPidCandidate::GetEmcClusterZ20(), PndPidCandidate::GetEmcClusterZ53(), PndPidCandidate::GetEmcIndex(), PndPidCandidate::GetEmcModule(), PndPidCandidate::GetEmcNumberOfBumps(), PndPidCandidate::GetEmcNumberOfCrystals(), PndPidCandidate::GetEmcQuality(), PndPidCandidate::GetEmcRawEnergy(), and RhoCandidate::GetRecoCandidate().

Referenced by PndParticleQATask::Exec(), qaPi0(), and qaRecoFull().

824 {
825  if (n==0) return;
826 
828 
829  if (mic)
830  {
831  n->Column(pre+"emceraw", (Float_t) mic->GetEmcRawEnergy(), 0.0f );
832  n->Column(pre+"emcecal", (Float_t) mic->GetEmcCalEnergy(), 0.0f );
833  n->Column(pre+"emcqa", (Float_t) mic->GetEmcQuality(), 0.0f );
834  n->Column(pre+"emcnx", (Int_t) mic->GetEmcNumberOfCrystals(), 0 );
835  n->Column(pre+"emcnb", (Int_t) mic->GetEmcNumberOfBumps(), 0 );
836  n->Column(pre+"emcz20", (Float_t) mic->GetEmcClusterZ20(), 0.0f );
837  n->Column(pre+"emcz53", (Float_t) mic->GetEmcClusterZ53(), 0.0f );
838  n->Column(pre+"emclat", (Float_t) mic->GetEmcClusterLat(), 0.0f );
839  n->Column(pre+"emce1", (Float_t) mic->GetEmcClusterE1(), 0.0f );
840  n->Column(pre+"emce9", (Float_t) mic->GetEmcClusterE9(), 0.0f );
841  n->Column(pre+"emce25", (Float_t) mic->GetEmcClusterE25(), 0.0f );
842  n->Column(pre+"emcmod", (Int_t) mic->GetEmcModule(), 0 );
843  n->Column(pre+"emcidx", (Int_t) mic->GetEmcIndex(), 0 );
844  }
845 }
Double_t GetEmcClusterE25() const
Float_t GetEmcQuality() const
Float_t GetEmcRawEnergy() const
Float_t GetEmcCalEnergy() const
Int_t GetEmcNumberOfCrystals() const
PndPidCandidate * GetRecoCandidate() const
Definition: RhoCandidate.h:376
Double_t GetEmcClusterE9() const
Int_t GetEmcIndex() const
Double_t GetEmcClusterE1() const
Double_t GetEmcClusterZ53() const
Double_t GetEmcClusterLat() const
Int_t GetEmcNumberOfBumps() const
Double_t GetEmcClusterZ20() const
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Int_t GetEmcModule() const
void PndRhoTupleQA::qaESEventVars ( TString  pre,
PndEventShape evsh,
RhoTuple n 
)

Definition at line 82 of file PndRhoTupleQA.cxx.

References PndEventShape::Aplanarity(), PndEventShape::Circularity(), RhoTuple::Column(), PndEventShape::FoxWolfMomR(), PndEventShape::Planarity(), PndEventShape::PRapmax(), PndEventShape::Sphericity(), and PndEventShape::Thrust().

Referenced by qaEventShape(), and qaEventShapeShort().

83 {
84  n->Column(pre+"prapmax",(Float_t) evsh->PRapmax(), 0.0f );
85  n->Column(pre+"sph", (Float_t) evsh->Sphericity(), 0.0f );
86  n->Column(pre+"apl", (Float_t) evsh->Aplanarity(), 0.0f );
87  n->Column(pre+"pla", (Float_t) evsh->Planarity(), 0.0f );
88  n->Column(pre+"thr",(Float_t) evsh->Thrust(), 0.0f );
89  n->Column(pre+"cir", (Float_t) evsh->Circularity(), 0.0f );
90 
91  n->Column(pre+"fw1", (Float_t) evsh->FoxWolfMomR(1), 0.0f );
92  n->Column(pre+"fw2", (Float_t) evsh->FoxWolfMomR(2), 0.0f );
93  n->Column(pre+"fw3", (Float_t) evsh->FoxWolfMomR(3), 0.0f );
94  n->Column(pre+"fw4", (Float_t) evsh->FoxWolfMomR(4), 0.0f );
95  n->Column(pre+"fw5", (Float_t) evsh->FoxWolfMomR(5), 0.0f );
96 }
double Sphericity()
double Circularity()
double Planarity()
double PRapmax() const
Definition: PndEventShape.h:28
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
double Thrust(int Nmax=4)
double FoxWolfMomR(int order)
double Aplanarity()
void PndRhoTupleQA::qaESMinMax ( TString  pre,
PndEventShape evsh,
RhoTuple n 
)

Definition at line 70 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), PndEventShape::PmaxCms(), PndEventShape::PmaxLab(), PndEventShape::PminCms(), PndEventShape::PminLab(), PndEventShape::Ptmax(), and PndEventShape::Ptmin().

Referenced by qaEventShape(), and qaEventShapeShort().

71 {
72  n->Column(pre+"pmax", (Float_t) evsh->PmaxCms(), 0.0f );
73  n->Column(pre+"ptmax",(Float_t) evsh->Ptmax() , 0.0f );
74  n->Column(pre+"pmaxl",(Float_t) evsh->PmaxLab() , 0.0f );
75  n->Column(pre+"pmin", (Float_t) evsh->PminCms(), 0.0f );
76  n->Column(pre+"ptmin",(Float_t) evsh->Ptmin(), 0.0f );
77  n->Column(pre+"pminl",(Float_t) evsh->PminLab(), 0.0f );
78 }
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
double PmaxLab() const
Definition: PndEventShape.h:22
double PminCms() const
Definition: PndEventShape.h:25
double Ptmin() const
Definition: PndEventShape.h:27
double PminLab() const
Definition: PndEventShape.h:24
double PmaxCms() const
Definition: PndEventShape.h:23
double Ptmax() const
Definition: PndEventShape.h:26
void PndRhoTupleQA::qaESMult ( TString  pre,
PndEventShape evsh,
RhoTuple n 
)

Definition at line 44 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), PndEventShape::NCharged(), PndEventShape::NNeutral(), and PndEventShape::NParticles().

Referenced by qaEventShape(), and qaEventShapeShort().

45 {
46  n->Column(pre+"npart", (Int_t) evsh->NParticles(), 0 );
47  n->Column(pre+"nneut", (Int_t) evsh->NNeutral(), 0 );
48  n->Column(pre+"nchrg", (Int_t) evsh->NCharged(), 0 );
49 }
int NParticles() const
Definition: PndEventShape.h:17
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
int NNeutral() const
Definition: PndEventShape.h:19
int NCharged() const
Definition: PndEventShape.h:18
void PndRhoTupleQA::qaESPidMult ( TString  pre,
PndEventShape evsh,
double  prob,
double  pmin,
RhoTuple n 
)

Definition at line 33 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), PndEventShape::MultElectronPminLab(), PndEventShape::MultKaonPminLab(), PndEventShape::MultMuonPminLab(), PndEventShape::MultPionPminLab(), and PndEventShape::MultProtonPminLab().

Referenced by qaEventShape(), and qaEventShapeShort().

34 {
35  n->Column(pre+"npide", (Int_t) evsh->MultElectronPminLab(prob,pmin), 0 );
36  n->Column(pre+"npidmu",(Int_t) evsh->MultMuonPminLab(prob,pmin), 0 );
37  n->Column(pre+"npidpi",(Int_t) evsh->MultPionPminLab(prob,pmin), 0 );
38  n->Column(pre+"npidk", (Int_t) evsh->MultKaonPminLab(prob,pmin), 0 );
39  n->Column(pre+"npidp", (Int_t) evsh->MultProtonPminLab(prob,pmin), 0 );
40 }
int MultKaonPminLab(double prob, double pmin=0)
int MultMuonPminLab(double prob, double pmin=0)
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
int MultPionPminLab(double prob, double pmin=0)
int MultElectronPminLab(double prob, double pmin=0)
int MultProtonPminLab(double prob, double pmin=0)
void PndRhoTupleQA::qaESSum ( TString  pre,
PndEventShape evsh,
RhoTuple n 
)

Definition at line 53 of file PndRhoTupleQA.cxx.

References PndEventShape::ChrgPSumCms(), PndEventShape::ChrgPSumLab(), PndEventShape::ChrgPtSumCms(), PndEventShape::ChrgPtSumLab(), RhoTuple::Column(), PndEventShape::NeutESumCms(), PndEventShape::NeutESumLab(), PndEventShape::NeutEtSumCms(), PndEventShape::NeutEtSumLab(), PndEventShape::PtSumCms(), and PndEventShape::PtSumLab().

Referenced by qaEventShape(), and qaEventShapeShort().

54 {
55  n->Column(pre+"sumpc", (Float_t) evsh->ChrgPSumCms(), 0.0f );
56  n->Column(pre+"sumpcl", (Float_t) evsh->ChrgPSumLab(), 0.0f );
57  n->Column(pre+"sumen", (Float_t) evsh->NeutESumCms(), 0.0f );
58  n->Column(pre+"sumenl", (Float_t) evsh->NeutESumLab(), 0.0f );
59 
60  n->Column(pre+"sumpt", (Float_t) evsh->PtSumCms(), 0.0f );
61  n->Column(pre+"sumptl", (Float_t) evsh->PtSumLab(), 0.0f );
62  n->Column(pre+"sumptc", (Float_t) evsh->ChrgPtSumCms(), 0.0f );
63  n->Column(pre+"sumptcl",(Float_t) evsh->ChrgPtSumLab(), 0.0f );
64  n->Column(pre+"sumetn", (Float_t) evsh->NeutEtSumCms(), 0.0f );
65  n->Column(pre+"sumetnl", (Float_t) evsh->NeutEtSumLab(), 0.0f );
66 }
double ChrgPtSumCms() const
Definition: PndEventShape.h:45
double ChrgPSumCms() const
Definition: PndEventShape.h:46
double ChrgPSumLab() const
Definition: PndEventShape.h:39
double NeutEtSumCms() const
Definition: PndEventShape.h:43
double PtSumLab() const
Definition: PndEventShape.h:35
double NeutESumLab() const
Definition: PndEventShape.h:37
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
double ChrgPtSumLab() const
Definition: PndEventShape.h:38
double PtSumCms() const
Definition: PndEventShape.h:42
double NeutESumCms() const
Definition: PndEventShape.h:44
double NeutEtSumLab() const
Definition: PndEventShape.h:36
void PndRhoTupleQA::qaEventShape ( TString  pre,
PndEventShape evsh,
RhoTuple n 
)

Definition at line 100 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), PndEventShape::DetEmcMax(), PndEventShape::DetEmcSum(), PndEventShape::MultChrgPminCms(), PndEventShape::MultChrgPminLab(), PndEventShape::MultNeutEminLab(), PndEventShape::MultPminCms(), PndEventShape::MultPminLab(), PndEventShape::MultPtminCms(), qaESEventVars(), qaESMinMax(), qaESMult(), qaESPidMult(), qaESSum(), PndEventShape::SumChrgPminCms(), PndEventShape::SumChrgPminLab(), PndEventShape::SumNeutEminCms(), PndEventShape::SumNeutEminLab(), and PndEventShape::SumPtminCms().

Referenced by PndSoftTriggerTask::Exec().

101 {
102  if (n==0) return;
103 
104  // basic multiplicities
105  qaESMult(pre, evsh, n);
106 
107  // PID multiplicities
108  qaESPidMult(pre+"l", evsh, 0.25, 0.0, n);
109  qaESPidMult(pre+"l1", evsh, 0.25, 1.0, n);
110  qaESPidMult(pre+"t", evsh, 0.5, 0.0, n);
111  qaESPidMult(pre+"t1", evsh, 0.5, 1.0, n);
112  qaESPidMult(pre+"vt", evsh, 0.9, 0.0, n);
113 
114  // event vars like thrust, sphericity etc
115  qaESEventVars(pre, evsh, n);
116 
117  // standard sums over pt, p, E for all, neutral, charged in lab, cms
118  qaESSum(pre, evsh, n);
119 
120  // standard min, max values of p, pt in lab, cms
121  qaESMinMax(pre, evsh, n);
122 
123  // Multiplicities with min momemtum cut (cms)
124  n->Column(pre+"np05", (Int_t) evsh->MultPminCms(0.5), 0 );
125  n->Column(pre+"np10", (Int_t) evsh->MultPminCms(1.0), 0 );
126  n->Column(pre+"np20", (Int_t) evsh->MultPminCms(2.0), 0 );
127  n->Column(pre+"np30", (Int_t) evsh->MultPminCms(3.0), 0 );
128  n->Column(pre+"np40", (Int_t) evsh->MultPminCms(4.0), 0 );
129  n->Column(pre+"np50", (Int_t) evsh->MultPminCms(5.0), 0 );
130 
131  // Multiplicities with min momemtum cut (lab)
132  n->Column(pre+"np05l", (Int_t) evsh->MultPminLab(0.5), 0 );
133  n->Column(pre+"np10l", (Int_t) evsh->MultPminLab(1.0), 0 );
134  n->Column(pre+"np20l", (Int_t) evsh->MultPminLab(2.0), 0 );
135  n->Column(pre+"np30l", (Int_t) evsh->MultPminLab(3.0), 0 );
136  n->Column(pre+"np40l", (Int_t) evsh->MultPminLab(4.0), 0 );
137  n->Column(pre+"np50l", (Int_t) evsh->MultPminLab(5.0), 0 );
138 
139  // Multiplicities with min p_t cut (cms)
140  n->Column(pre+"npt05", (Int_t) evsh->MultPtminCms(0.5), 0 );
141  n->Column(pre+"npt10", (Int_t) evsh->MultPtminCms(1.0), 0 );
142  n->Column(pre+"npt15", (Int_t) evsh->MultPtminCms(1.5), 0 );
143  n->Column(pre+"npt20", (Int_t) evsh->MultPtminCms(2.0), 0 );
144  n->Column(pre+"npt25", (Int_t) evsh->MultPtminCms(2.5), 0 );
145  n->Column(pre+"npt30", (Int_t) evsh->MultPtminCms(3.0), 0 );
146 
147  // Neutral multiplicities with min energy cut (lab)
148  n->Column(pre+"nne003l", (Int_t) evsh->MultNeutEminLab(0.03), 0 );
149  n->Column(pre+"nne005l", (Int_t) evsh->MultNeutEminLab(0.05), 0 );
150  n->Column(pre+"nne01l", (Int_t) evsh->MultNeutEminLab(0.1), 0 );
151  n->Column(pre+"nne05l", (Int_t) evsh->MultNeutEminLab(0.5), 0 );
152 
153  // Charged multiplicities with min momentum cut (lab)
154  n->Column(pre+"ncp005l", (Int_t) evsh->MultChrgPminLab(0.05), 0 );
155  n->Column(pre+"ncp01l", (Int_t) evsh->MultChrgPminLab(0.1), 0 );
156  n->Column(pre+"ncp02l", (Int_t) evsh->MultChrgPminLab(0.2), 0 );
157  n->Column(pre+"ncp05l", (Int_t) evsh->MultChrgPminLab(0.5), 0 );
158  n->Column(pre+"ncp10l", (Int_t) evsh->MultChrgPminLab(1.0), 0 );
159 
160  // Charged multiplicities with min momentum cut (cms)
161  n->Column(pre+"ncp005", (Int_t) evsh->MultChrgPminCms(0.05), 0 );
162  n->Column(pre+"ncp01", (Int_t) evsh->MultChrgPminCms(0.1), 0 );
163  n->Column(pre+"ncp02", (Int_t) evsh->MultChrgPminCms(0.2), 0 );
164  n->Column(pre+"ncp05", (Int_t) evsh->MultChrgPminCms(0.5), 0 );
165  n->Column(pre+"ncp10", (Int_t) evsh->MultChrgPminCms(1.0), 0 );
166 
167  // Sum of p_t with min momentum cut (cms)
168  n->Column(pre+"sumpt05", (Float_t) evsh->SumPtminCms(0.5), 0.0f );
169  n->Column(pre+"sumpt10", (Float_t) evsh->SumPtminCms(1.0), 0.0f );
170 
171  // Sum of charged momenta with min momentum cut (cms)
172  n->Column(pre+"sumpc05", (Float_t) evsh->SumChrgPminCms(0.5) ,0.0f );
173  n->Column(pre+"sumpc10", (Float_t) evsh->SumChrgPminCms(1.0),0.0f );
174 
175  // Sum of charged momenta with min momentum cut (lab)
176  n->Column(pre+"sumpc05l", (Float_t)evsh->SumChrgPminLab(0.5) ,0.0f );
177  n->Column(pre+"sumpc10l",(Float_t) evsh->SumChrgPminLab(1.0) ,0.0f );
178 
179  // Sum of neutral energy with min energy cut (cms)
180  n->Column(pre+"sumen05", (Float_t)evsh->SumNeutEminCms(0.5) ,0.0f );
181  n->Column(pre+"sumen10", (Float_t) evsh->SumNeutEminCms(1.0) ,0.0f );
182 
183  // Sum of neutral energy with min energy cut (lab)
184  n->Column(pre+"sumen05l",(Float_t) evsh->SumNeutEminLab(0.5) ,0.0f );
185  n->Column(pre+"sumen10l",(Float_t) evsh->SumNeutEminLab(1.0) ,0.0f );
186 
187  // detector specific variables
188  n->Column(pre+"detemcsum",(Float_t) evsh->DetEmcSum() ,0.0f );
189  n->Column(pre+"detemcmax",(Float_t) evsh->DetEmcMax() ,0.0f );
190 }
int MultChrgPminCms(double pmin)
double SumNeutEminLab(double emin)
double DetEmcSum() const
Definition: PndEventShape.h:49
double SumChrgPminCms(double pmin)
int MultPtminCms(double ptmin)
double SumNeutEminCms(double emin)
void qaESMinMax(TString pre, PndEventShape *evsh, RhoTuple *n)
double SumChrgPminLab(double pmin)
double DetEmcMax() const
Definition: PndEventShape.h:50
int MultPminLab(double pmin)
void qaESPidMult(TString pre, PndEventShape *evsh, double prob, double pmin, RhoTuple *n)
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
double SumPtminCms(double ptmin)
int MultPminCms(double pmin)
int MultNeutEminLab(double emin)
int MultChrgPminLab(double pmin)
void qaESSum(TString pre, PndEventShape *evsh, RhoTuple *n)
void qaESEventVars(TString pre, PndEventShape *evsh, RhoTuple *n)
void qaESMult(TString pre, PndEventShape *evsh, RhoTuple *n)
void PndRhoTupleQA::qaEventShapeShort ( TString  pre,
PndEventShape evsh,
RhoTuple n 
)

Definition at line 192 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), PndEventShape::MultChrgPminLab(), PndEventShape::MultNeutEminLab(), PndEventShape::MultPminCms(), PndEventShape::MultPtminCms(), qaESEventVars(), qaESMinMax(), qaESMult(), qaESPidMult(), qaESSum(), and PndEventShape::SumChrgPminCms().

Referenced by ana_jpsi(), PndTripleAnaTask::DsDs2317Analysis(), PndTripleAnaTask::JpsiAnalysis(), PndSoftTriggerTask::TagMode(), PndTripleAnaTask::ThreePiAnalysis(), and tut_ana_d0_qahelper().

193 {
194  if (n==0) return;
195  // *** vars for PID multiplicity
196  //int ne, nmu, npi, nk, np;
197 
198  // basic multiplicities
199  qaESMult(pre, evsh, n);
200 
201  // PID multiplicities
202  qaESPidMult(pre+"l", evsh, 0.25, 0.0, n);
203  qaESPidMult(pre+"l1", evsh, 0.25, 1.0, n);
204 
205  // event vars like thrust, sphericity etc
206  qaESEventVars(pre, evsh, n);
207 
208  // standard sums over pt, p, E for all, neutral, charged in lab, cms
209  qaESSum(pre, evsh, n);
210 
211  // standard min, max values of p, pt in lab, cms
212  qaESMinMax(pre, evsh, n);
213 
214  // some multiplicities with min momentum cut (lab, cms)
215  n->Column(pre+"np10", (Int_t) evsh->MultPminCms(1.0), 0 );
216  n->Column(pre+"npt10", (Int_t) evsh->MultPtminCms(1.0), 0 );
217  n->Column(pre+"ncp10l", (Int_t) evsh->MultChrgPminLab(1.0), 0 );
218  n->Column(pre+"nne10l",(Int_t) evsh->MultNeutEminLab(1.0), 0 );
219 
220  // sum of charged momenta with min momentum cut
221  n->Column(pre+"sumpc05", (Float_t) evsh->SumChrgPminCms(0.5) ,0.0f );
222 }
double SumChrgPminCms(double pmin)
int MultPtminCms(double ptmin)
void qaESMinMax(TString pre, PndEventShape *evsh, RhoTuple *n)
void qaESPidMult(TString pre, PndEventShape *evsh, double prob, double pmin, RhoTuple *n)
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
int MultPminCms(double pmin)
int MultNeutEminLab(double emin)
int MultChrgPminLab(double pmin)
void qaESSum(TString pre, PndEventShape *evsh, RhoTuple *n)
void qaESEventVars(TString pre, PndEventShape *evsh, RhoTuple *n)
void qaESMult(TString pre, PndEventShape *evsh, RhoTuple *n)
void PndRhoTupleQA::qaFitter ( TString  pre,
RhoFitterBase fitter,
RhoTuple n,
bool  skip = false 
)

Definition at line 1239 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), f, RhoFitterBase::GetChi2(), RhoFitterBase::GetNdf(), and RhoFitterBase::GetProb().

1240 {
1241  if(!skip){
1242  n->Column(pre+"chisq" , (Float_t) fitter->GetChi2(), 0.0f);
1243  n->Column(pre+"ndf" , (Float_t) fitter->GetNdf(), 0.0f);
1244  n->Column(pre+"prob" , (Float_t) fitter->GetProb(), 0.0f);
1245  } else {
1246  n->Column(pre+"chisq" , (Float_t) -999.0, 0.0f);
1247  n->Column(pre+"ndf" , (Float_t) -999.0, 0.0f);
1248  n->Column(pre+"prob" , (Float_t) -999.0, 0.0f);
1249  }
1250 }
TFile * f
Definition: bump_analys.C:12
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
double GetProb() const
Definition: RhoFitterBase.h:50
double GetChi2() const
Definition: RhoFitterBase.h:48
int GetNdf() const
Definition: RhoFitterBase.h:49
void PndRhoTupleQA::qaGem ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 848 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), PndPidCandidate::GetGemHits(), and RhoCandidate::GetRecoCandidate().

Referenced by qaRecoFull().

849 {
850  if (n==0) return;
851 
853 
854  if (mic)
855  {
856  n->Column(pre+"gemnhits", (Int_t) mic->GetGemHits(), 0 );
857  }
858 }
PndPidCandidate * GetRecoCandidate() const
Definition: RhoCandidate.h:376
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Int_t GetGemHits() const
void PndRhoTupleQA::qaKs0 ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 412 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), d0, RhoCandidate::Daughter(), f, fAnalysis, RhoCandidate::GetMcTruth(), RhoCandidate::M(), PndAnalysis::McTruthMatch(), RhoCandidate::P(), RhoCandidate::P3(), RhoCandidate::Pos(), qaCand(), qaPid(), qaPoca(), and qaVtx().

Referenced by PndSoftTriggerTask::CreateKs0Cands().

413 {
414  if (n==0) return;
415 
416  RhoCandidate *d0 = c->Daughter(0);
417  RhoCandidate *d1 = c->Daughter(1);
418  double ang = d0->P3().Angle(d1->P3());
419 
420  if (fAnalysis!=0) fAnalysis->McTruthMatch(c);
421  RhoCandidate *truth = c->GetMcTruth();
422 
423  qaCand(pre, c, n);
424  qaPoca(pre, c, n);
425  qaVtx(pre, c, n);
426 
427  n->Column(pre+"oang",(Float_t) ang, 0.0f);
428 
429  qaCand(pre+"d0", d0, n);
430  qaPid(pre+"d0", d0, n);
431 
432  qaCand(pre+"d1", d1, n);
433  qaPid(pre+"d1", d1, n);
434 
435  if (truth!=0)
436  {
437  TVector3 vdist = truth->Pos() - truth->Daughter(0)->Pos();
438  Float_t dist = vdist.Mag();
439  Float_t ctau = dist * truth->M() / truth->P();
440 
441  qaCand("t"+pre, truth, n);
442  n->Column(pre+"mct", 1.0f, 0.0f);
443  n->Column("t"+pre+"dist", (Float_t) dist , 0.0f);
444  n->Column("t"+pre+"ctau", (Float_t) ctau , 0.0f);
445  }
446  else
447  {
448  qaCand("t"+pre, NULL , n, true);
449  n->Column(pre+"mct", 0.0f, 0.0f);
450  n->Column("t"+pre+"dist", (Float_t) -999. , 0.0f);
451  n->Column("t"+pre+"ctau", (Float_t) -999. , 0.0f);
452  }
453 }
void qaCand(TString pre, RhoCandidate *cc, RhoTuple *n, bool skip=false)
TVector3 Pos() const
Definition: RhoCandidate.h:186
void qaPid(TString pre, RhoCandidate *c, RhoTuple *n)
RhoCandidate * Daughter(Int_t n)
void qaVtx(TString pre, RhoCandidate *c, RhoTuple *n)
Double_t d0
Definition: checkhelixhit.C:59
void qaPoca(TString pre, RhoCandidate *c, RhoTuple *n)
TFile * f
Definition: bump_analys.C:12
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Double_t M() const
RhoCandidate * GetMcTruth() const
Definition: RhoCandidate.h:437
Double_t P() const
PndAnalysis * fAnalysis
Definition: PndRhoTupleQA.h:88
Bool_t McTruthMatch(RhoCandidate *cand, Int_t level=2, bool verbose=false)
TVector3 P3() const
Definition: RhoCandidate.h:199
void PndRhoTupleQA::qaMc ( TString  pre,
RhoCandidate c,
RhoTuple n,
bool  skip = false 
)

Definition at line 1078 of file PndRhoTupleQA.cxx.

References fDummyCand, RhoCandidate::GetMcTruth(), mct, and qaCand().

1079 {
1080  if (n==0) return;
1081  if (c==0) return;
1082 
1083  RhoCandidate *mct=c->GetMcTruth();
1084 
1085  if (mct){
1086  qaCand(pre+"mc",mct,n,skip);
1087  }
1088  else {
1089  qaCand(pre+"mc", fDummyCand,n,skip);
1090  }
1091 }
void qaCand(TString pre, RhoCandidate *cc, RhoTuple *n, bool skip=false)
RhoCandidate * GetMcTruth() const
Definition: RhoCandidate.h:437
RhoCandidate * fDummyCand
Definition: PndRhoTupleQA.h:86
PndMCTrack * mct
Definition: hist-t7.C:147
void PndRhoTupleQA::qaMcDiff ( TString  pre,
RhoCandidate c,
RhoTuple n,
bool  skip = false 
)

Definition at line 1163 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), RhoCandidate::Cov7(), f, RhoCandidate::GetMcTruth(), RhoCandidate::GetPosition(), mct, RhoCandidate::P4(), sqrt(), and v.

1164 {
1165  if (n==0) return;
1166  if (c==0) return;
1167 
1168  RhoCandidate *mct=c->GetMcTruth();
1169  if (!skip && mct)
1170  {
1171  TLorentzVector p4=c->P4();
1172  TLorentzVector mcp4=mct->P4();
1173  TLorentzVector diff = p4 - mcp4;
1174  TVector3 v=c->GetPosition();
1175  TVector3 mcv=mct->GetPosition();
1176  TVector3 vdiff= v - mcv;
1177  TMatrixD cov7 = c->Cov7();
1178 
1179  n->Column(pre+"mcdiffvx", (Float_t) vdiff.x() , 0.0f );
1180  n->Column(pre+"mcdiffvy", (Float_t) vdiff.y() , 0.0f );
1181  n->Column(pre+"mcdiffvz", (Float_t) vdiff.z() , 0.0f );
1182  n->Column(pre+"mcdiffpx", (Float_t) diff.Px(), 0.0f );
1183  n->Column(pre+"mcdiffpy", (Float_t) diff.Py(), 0.0f );
1184  n->Column(pre+"mcdiffpz", (Float_t) diff.Pz(), 0.0f );
1185  n->Column(pre+"mcdiffe", (Float_t) diff.E(), 0.0f );
1186 
1187  n->Column(pre+"mcdiffp", (Float_t) (p4.P()-mcp4.P()), 0.0f );
1188  n->Column(pre+"mcdifftht", (Float_t) (p4.Theta()-mcp4.Theta()), 0.0f );
1189  n->Column(pre+"mcdiffphi", (Float_t) (p4.Phi()-mcp4.Phi()), 0.0f );
1190 
1191  n->Column(pre+"mcpullvx", (Float_t) ( vdiff.x()/sqrt(cov7(0,0)) ), 0.0f );
1192  n->Column(pre+"mcpullvy", (Float_t) ( vdiff.y()/sqrt(cov7(1,1)) ), 0.0f );
1193  n->Column(pre+"mcpullvz", (Float_t) ( vdiff.z()/sqrt(cov7(2,2)) ), 0.0f );
1194  n->Column(pre+"mcpullpx", (Float_t) ( diff.Px()/sqrt(cov7(3,3)) ), 0.0f );
1195  n->Column(pre+"mcpullpy", (Float_t) ( diff.Py()/sqrt(cov7(4,4)) ), 0.0f );
1196  n->Column(pre+"mcpullpz", (Float_t) ( diff.Pz()/sqrt(cov7(5,5)) ), 0.0f );
1197  n->Column(pre+"mcpulle", (Float_t) ( diff.E() /sqrt(cov7(6,6)) ), 0.0f );
1198 
1199  n->Column(pre+"mcerrvx", (Float_t) sqrt(cov7(0,0)), 0.0f );
1200  n->Column(pre+"mcerrvy", (Float_t) sqrt(cov7(1,1)), 0.0f );
1201  n->Column(pre+"mcerrvz", (Float_t) sqrt(cov7(2,2)), 0.0f );
1202  n->Column(pre+"mcerrpx", (Float_t) sqrt(cov7(3,3)), 0.0f );
1203  n->Column(pre+"mcerrpy", (Float_t) sqrt(cov7(4,4)), 0.0f );
1204  n->Column(pre+"mcerrpz", (Float_t) sqrt(cov7(5,5)), 0.0f );
1205  n->Column(pre+"mcerre", (Float_t) sqrt(cov7(6,6)), 0.0f );
1206  }
1207  else
1208  {
1209  TLorentzVector dummy;
1210  n->Column(pre+"mcdiffvx", (Float_t) -999.0, 0.0f );
1211  n->Column(pre+"mcdiffvy", (Float_t) -999.0, 0.0f );
1212  n->Column(pre+"mcdiffvz", (Float_t) -999.0, 0.0f );
1213  n->Column(pre+"mcdiffpx", (Float_t) -999.0, 0.0f );
1214  n->Column(pre+"mcdiffpy", (Float_t) -999.0, 0.0f );
1215  n->Column(pre+"mcdiffpz", (Float_t) -999.0, 0.0f );
1216  n->Column(pre+"mcdiffe", (Float_t) -999.0, 0.0f );
1217  n->Column(pre+"mcdiffp", (Float_t) -999.0, 0.0f );
1218  n->Column(pre+"mcdifftht", (Float_t) -999.0, 0.0f );
1219  n->Column(pre+"mcdiffphi", (Float_t) -999.0, 0.0f );
1220 
1221  n->Column(pre+"mcpullvx", (Float_t) -999.0, 0.0f );
1222  n->Column(pre+"mcpullvy", (Float_t) -999.0, 0.0f );
1223  n->Column(pre+"mcpullvz", (Float_t) -999.0, 0.0f );
1224  n->Column(pre+"mcpullpx", (Float_t) -999.0, 0.0f );
1225  n->Column(pre+"mcpullpy", (Float_t) -999.0, 0.0f );
1226  n->Column(pre+"mcpullpz", (Float_t) -999.0, 0.0f );
1227  n->Column(pre+"mcpulle", (Float_t) -999.0, 0.0f );
1228 
1229  n->Column(pre+"mcerrvx", (Float_t) -999.0, 0.0f );
1230  n->Column(pre+"mcerrvy", (Float_t) -999.0, 0.0f );
1231  n->Column(pre+"mcerrvz", (Float_t) -999.0, 0.0f );
1232  n->Column(pre+"mcerrpx", (Float_t) -999.0, 0.0f );
1233  n->Column(pre+"mcerrpy", (Float_t) -999.0, 0.0f );
1234  n->Column(pre+"mcerrpz", (Float_t) -999.0, 0.0f );
1235  n->Column(pre+"mcerre", (Float_t) -999.0, 0.0f );
1236  }
1237 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
__m128 v
Definition: P4_F32vec4.h:4
TVector3 GetPosition() const
Definition: RhoCandidate.h:185
TFile * f
Definition: bump_analys.C:12
TLorentzVector P4() const
Definition: RhoCandidate.h:195
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
RhoCandidate * GetMcTruth() const
Definition: RhoCandidate.h:437
TMatrixD Cov7() const
PndMCTrack * mct
Definition: hist-t7.C:147
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52
void PndRhoTupleQA::qaMcList ( TString  pre,
RhoCandList l,
RhoTuple n,
int  max = 10000 
)

Definition at line 1102 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), RhoCandList::GetLength(), RhoCandidate::GetTrackNumber(), and max().

Referenced by ana_jpsi(), PndParticleQATask::Exec(), PndTripleAnaTask::Exec(), PndSoftTriggerTask::Exec(), and qaMcList().

1103 {
1104  if (n==0) return;
1105 
1106  int npart = l.GetLength();
1107  if (npart>max) npart=max;
1108 
1109  TVector vpart(npart), vpdg(npart), vmoth(npart),
1110  vp(npart), vmass(npart), vndau(npart),
1111  vpx(npart), vpy(npart), vpz(npart), ve(npart),
1112  vtht(npart), vphi(npart),
1113  vx(npart), vy(npart), vz(npart);
1114 
1115  for (int j=0;j<npart;++j)
1116  {
1117  RhoCandidate *moth = l[j]->TheMother();
1118 
1119  vpart(j) = j;
1120  vpdg(j) = l[j]->PdgCode();
1121  vmoth(j) = (moth!=0x0) ? moth->GetTrackNumber() : -1;
1122  vndau(j) = l[j]->NDaughters();
1123 
1124  vmass(j) = l[j]->Mass();
1125  vp(j) = l[j]->P();
1126 
1127  vpx(j) = l[j]->Px();
1128  vpy(j) = l[j]->Py();
1129  vpz(j) = l[j]->Pz();
1130  ve(j) = l[j]->E();
1131 
1132  vtht(j) = l[j]->P3().Theta();
1133  vphi(j) = l[j]->P3().Phi();
1134 
1135  vx(j) = l[j]->Pos().X();
1136  vy(j) = l[j]->Pos().Y();
1137  vz(j) = l[j]->Pos().Z();
1138  }
1139 
1140  n->Column(pre+"npart", (Int_t) npart);
1141 
1142  n->Column(pre+"part", vpart, pre+"npart");
1143  n->Column(pre+"pdg", vpdg, pre+"npart");
1144  n->Column(pre+"moth", vmoth, pre+"npart");
1145  n->Column(pre+"ndau", vndau, pre+"npart");
1146 
1147  n->Column(pre+"m", vmass, pre+"npart");
1148  n->Column(pre+"p", vp, pre+"npart");
1149 
1150  n->Column(pre+"px", vpx, pre+"npart");
1151  n->Column(pre+"py", vpy, pre+"npart");
1152  n->Column(pre+"pz", vpz, pre+"npart");
1153  n->Column(pre+"e", ve, pre+"npart");
1154 
1155  n->Column(pre+"tht", vtht, pre+"npart");
1156  n->Column(pre+"phi", vphi, pre+"npart");
1157 
1158  n->Column(pre+"x", vx, pre+"npart");
1159  n->Column(pre+"y", vy, pre+"npart");
1160  n->Column(pre+"z", vz, pre+"npart");
1161 }
Int_t GetTrackNumber() const
Definition: RhoCandidate.h:417
Int_t GetLength() const
Definition: RhoCandList.h:46
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:26
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
void PndRhoTupleQA::qaMcList ( RhoTuple n,
int  max = 10000 
)

Definition at line 1094 of file PndRhoTupleQA.cxx.

References fAnalysis, PndAnalysis::FillList(), and qaMcList().

1095 {
1096  RhoCandList mc;
1097  fAnalysis->FillList(mc,"McTruth");
1098  qaMcList("",mc,n,max);
1099 }
Bool_t FillList(RhoCandList &l, TString listkey="All", TString pidTcaNames="", int trackHypothesis=-1)
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:26
void qaMcList(TString pre, RhoCandList &l, RhoTuple *n, int max=10000)
PndAnalysis * fAnalysis
Definition: PndRhoTupleQA.h:88
void PndRhoTupleQA::qaMuo ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 947 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), PndPidCandidate::GetMuoHits(), PndPidCandidate::GetMuoIndex(), PndPidCandidate::GetMuoIron(), PndPidCandidate::GetMuoModule(), PndPidCandidate::GetMuoMomentumIn(), PndPidCandidate::GetMuoNumberOfLayers(), PndPidCandidate::GetMuoProbability(), PndPidCandidate::GetMuoQuality(), and RhoCandidate::GetRecoCandidate().

Referenced by PndParticleQATask::Exec(), and qaRecoFull().

948 {
949  if (n==0) return;
950 
952 
953  if (mic)
954  {
955  n->Column(pre+"muonlay", (Int_t) mic->GetMuoNumberOfLayers(), 0 );;
956  n->Column(pre+"muoprob", (Float_t) mic->GetMuoProbability(), 0.0f );;
957  n->Column(pre+"muoqa", (Float_t) mic->GetMuoQuality() , 0.0f ); ;
958  n->Column(pre+"muoiron", (Float_t) mic->GetMuoIron() , 0.0f ); ;
959  n->Column(pre+"muopin", (Float_t) mic->GetMuoMomentumIn(), 0.0f );;
960  n->Column(pre+"muomod", (Int_t) mic->GetMuoModule(), 0 ); ;
961  n->Column(pre+"muohits", (Int_t) mic->GetMuoHits(), 0 ); ;
962  n->Column(pre+"muoidx", (Int_t) mic->GetMuoIndex(), 0 ); ;
963  }
964 }
Float_t GetMuoQuality() const
Float_t GetMuoProbability() const
PndPidCandidate * GetRecoCandidate() const
Definition: RhoCandidate.h:376
Float_t GetMuoIron() const
Float_t GetMuoMomentumIn() const
Int_t GetMuoIndex() const
Int_t GetMuoNumberOfLayers() const
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Int_t GetMuoHits() const
Int_t GetMuoModule() const
void PndRhoTupleQA::qaMvd ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 863 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), PndPidCandidate::GetMvdDEDX(), PndPidCandidate::GetMvdHits(), and RhoCandidate::GetRecoCandidate().

Referenced by PndParticleQATask::Exec(), and qaRecoFull().

864 {
865  if (n==0) return;
866 
868 
869  if (mic)
870  {
871  n->Column(pre+"mvddedx", (Float_t) mic->GetMvdDEDX(), 0.0f );
872  n->Column(pre+"mvdhits", (Int_t) mic->GetMvdHits(), 0 );
873  }
874 }
PndPidCandidate * GetRecoCandidate() const
Definition: RhoCandidate.h:376
Float_t GetMvdDEDX() const
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Int_t GetMvdHits() const
void PndRhoTupleQA::qaP4 ( TString  pre,
TLorentzVector  c,
RhoTuple n,
bool  skip = false 
)

Definition at line 457 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), and f.

Referenced by ana_jpsi(), PndSoftTriggerTask::CreateKs0Cands(), PndTripleAnaTask::DsDs2317Analysis(), PndParticleQATask::Exec(), PndSoftTriggerTask::Exec(), PndSoftTriggerTask::FillGlobalLists(), PndTripleAnaTask::JpsiAnalysis(), qaCand(), PndSoftTriggerTask::TagMode(), PndTripleAnaTask::ThreePiAnalysis(), and tut_ana_d0_qahelper().

458 {
459  if (n==0) return;
460 
461  if (!skip)
462  {
463  n->Column(pre+"px", (Float_t) c.Px(), 0.0f );
464  n->Column(pre+"py", (Float_t) c.Py(), 0.0f );
465  n->Column(pre+"pz", (Float_t) c.Pz(), 0.0f );
466  n->Column(pre+"e", (Float_t) c.E(), 0.0f );
467  n->Column(pre+"p", (Float_t) c.P(), 0.0f );
468  n->Column(pre+"tht", (Float_t) c.Theta(), 0.0f );
469  n->Column(pre+"phi", (Float_t) c.Phi(), 0.0f );
470  n->Column(pre+"pt", (Float_t) c.Pt(), 0.0f );
471  n->Column(pre+"m", (Float_t) c.M(), 0.0f );
472  }
473  else
474  {
475  n->Column(pre+"px", (Float_t) -999., 0.0f );
476  n->Column(pre+"py", (Float_t) -999., 0.0f );
477  n->Column(pre+"pz", (Float_t) -999., 0.0f );
478  n->Column(pre+"e", (Float_t) -999., 0.0f );
479  n->Column(pre+"p", (Float_t) -999., 0.0f );
480  n->Column(pre+"tht", (Float_t) -999., 0.0f );
481  n->Column(pre+"phi", (Float_t) -999., 0.0f );
482  n->Column(pre+"pt", (Float_t) -999., 0.0f );
483  n->Column(pre+"m", (Float_t) -999., 0.0f );
484  }
485 }
TFile * f
Definition: bump_analys.C:12
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
void PndRhoTupleQA::qaP4Cms ( TString  pre,
TLorentzVector  c,
RhoTuple n,
bool  skip = false 
)

Definition at line 488 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), f, and fIniP4.

Referenced by qaComp().

489 {
490  if (n==0) return;
491 
492  if (!skip)
493  {
494  c.Boost(-fIniP4.BoostVector());
495 
496  n->Column(pre+"pxcm", (Float_t) c.Px(), 0.0f );
497  n->Column(pre+"pycm", (Float_t) c.Py(), 0.0f );
498  n->Column(pre+"pzcm", (Float_t) c.Pz(), 0.0f );
499  n->Column(pre+"ecm", (Float_t) c.E(), 0.0f );
500  n->Column(pre+"pcm", (Float_t) c.P(), 0.0f );
501  n->Column(pre+"thtcm", (Float_t) c.Theta(), 0.0f );
502  n->Column(pre+"phicm", (Float_t) c.Phi(), 0.0f );
503  }
504  else
505  {
506  n->Column(pre+"pxcm", (Float_t) -999., 0.0f );
507  n->Column(pre+"pycm", (Float_t) -999., 0.0f );
508  n->Column(pre+"pzcm", (Float_t) -999., 0.0f );
509  n->Column(pre+"ecm", (Float_t) -999., 0.0f );
510  n->Column(pre+"pcm", (Float_t) -999., 0.0f );
511  n->Column(pre+"thtcm", (Float_t) -999., 0.0f );
512  n->Column(pre+"phicm", (Float_t) -999., 0.0f );
513  }
514 }
TLorentzVector fIniP4
Definition: PndRhoTupleQA.h:90
TFile * f
Definition: bump_analys.C:12
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
void PndRhoTupleQA::qaP4Cov ( TString  pre,
RhoCandidate c,
RhoTuple n,
bool  skip = false 
)

Definition at line 518 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), f, and RhoCandidate::P4Cov().

Referenced by qaComp().

519 {
520  if (n==0) return;
521 
522  RhoError cov = c->P4Cov();
523 
524  if (!skip)
525  {
526  n->Column(pre+"covpxpx", (Float_t) cov(0,0), 0.0f);
527  n->Column(pre+"covpxpy", (Float_t) cov(0,1), 0.0f);
528  n->Column(pre+"covpxpz", (Float_t) cov(0,2), 0.0f);
529  n->Column(pre+"covpxe", (Float_t) cov(0,3), 0.0f);
530  n->Column(pre+"covpypy", (Float_t) cov(1,1), 0.0f);
531  n->Column(pre+"covpypz", (Float_t) cov(1,2), 0.0f);
532  n->Column(pre+"covpye", (Float_t) cov(1,3), 0.0f);
533  n->Column(pre+"covpzpz", (Float_t) cov(2,2), 0.0f);
534  n->Column(pre+"covpze", (Float_t) cov(2,3), 0.0f);
535  n->Column(pre+"covee", (Float_t) cov(3,3), 0.0f);
536  }
537  else
538  {
539  n->Column(pre+"covpxpx", (Float_t) -999., 0.0f);
540  n->Column(pre+"covpxpy", (Float_t) -999., 0.0f);
541  n->Column(pre+"covpxpz", (Float_t) -999., 0.0f);
542  n->Column(pre+"covpxe", (Float_t) -999., 0.0f);
543  n->Column(pre+"covpypy", (Float_t) -999., 0.0f);
544  n->Column(pre+"covpypz", (Float_t) -999., 0.0f);
545  n->Column(pre+"covpyee", (Float_t) -999., 0.0f);
546  n->Column(pre+"covpzpz", (Float_t) -999., 0.0f);
547  n->Column(pre+"covpze", (Float_t) -999., 0.0f);
548  n->Column(pre+"covee", (Float_t) -999., 0.0f);
549  }
550 }
TFile * f
Definition: bump_analys.C:12
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
RhoError P4Cov() const
void PndRhoTupleQA::qaPi0 ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 377 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), d0, RhoCandidate::Daughter(), f, fAnalysis, RhoCandidate::GetMcTruth(), PndAnalysis::McTruthMatch(), RhoCandidate::P3(), qaCand(), and qaEmc().

Referenced by PndTripleAnaTask::DsDs2317Analysis(), PndSoftTriggerTask::FillGlobalLists(), and PndTripleAnaTask::ThreePiAnalysis().

378 {
379  if (n==0) return;
380 
381  qaCand(pre, c, n);
382 
383  RhoCandidate *d0 = c->Daughter(0);
384  RhoCandidate *d1 = c->Daughter(1);
385  double ang = d0->P3().Angle(d1->P3());
386 
388  RhoCandidate *truth = c->GetMcTruth();
389 
390  qaCand(pre, c, n);
391  n->Column(pre+"oang",(Float_t) ang, 0.0f);
392 
393  qaCand(pre+"d0", d0, n);
394  qaEmc(pre+"d0", d0, n);
395 
396  qaCand(pre+"d1", d1, n);
397  qaEmc(pre+"d1", d1, n);
398 
399  if (truth!=0)
400  {
401  qaCand("t"+pre, truth, n);
402  n->Column(pre+"mct", 1.0f, 0.0f);
403  }
404  else
405  {
406  qaCand("t"+pre, NULL , n, true);
407  n->Column(pre+"mct", 0.0f, 0.0f);
408  }
409 }
void qaCand(TString pre, RhoCandidate *cc, RhoTuple *n, bool skip=false)
RhoCandidate * Daughter(Int_t n)
Double_t d0
Definition: checkhelixhit.C:59
TFile * f
Definition: bump_analys.C:12
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
RhoCandidate * GetMcTruth() const
Definition: RhoCandidate.h:437
void qaEmc(TString pre, RhoCandidate *c, RhoTuple *n)
PndAnalysis * fAnalysis
Definition: PndRhoTupleQA.h:88
Bool_t McTruthMatch(RhoCandidate *cand, Int_t level=2, bool verbose=false)
TVector3 P3() const
Definition: RhoCandidate.h:199
void PndRhoTupleQA::qaPid ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 689 of file PndRhoTupleQA.cxx.

References RhoCandidate::Charge(), RhoTuple::Column(), f, fabs(), RhoCandidate::GetPidInfo(), i, and pinf.

Referenced by PndParticleQATask::Exec(), qaComp(), and qaKs0().

690 {
691  if (n==0) return;
692 
693  // pinf[0]...pinf[4]: cache P values, pinf[5] = maximum
694  double pinf[6] = {-1000.,-1000.,-1000.,-1000.,-1000.,-1000.};
695  // index of particle type (e=0 ... p=4) with maximum P
696  int bestidx = -1;
697 
698  if (fabs(c->Charge())>0.1)
699  {
700  for (int i=0;i<5;++i)
701  {
702  pinf[i] = c->GetPidInfo(i);
703 
704  if (pinf[i]>pinf[5])
705  {
706  pinf[5] = pinf[i];
707  bestidx = i;
708  }
709  }
710  }
711 
712  n->Column(pre+"pide", (Float_t) pinf[0], 0.0f );
713  n->Column(pre+"pidmu", (Float_t) pinf[1], 0.0f );
714  n->Column(pre+"pidpi", (Float_t) pinf[2], 0.0f );
715  n->Column(pre+"pidk", (Float_t) pinf[3], 0.0f );
716  n->Column(pre+"pidp", (Float_t) pinf[4], 0.0f );
717 
718  n->Column(pre+"pidmax", (Float_t) pinf[5], 0.0f );
719  n->Column(pre+"pidbest",(Float_t) bestidx, 0.0f );
720 
721 }
Int_t i
Definition: run_full.C:25
TCut pinf
Definition: plot_dirc.C:25
TFile * f
Definition: bump_analys.C:12
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
Double_t Charge() const
Definition: RhoCandidate.h:184
double GetPidInfo(int hypo)
void PndRhoTupleQA::qaPoca ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 225 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), f, fAnalysis, PndAnalysis::FillList(), fVtxPoca, RhoCandList::GetLength(), RhoVtxPoca::GetPocaVtx(), RhoCandidate::M(), RhoCandidate::P(), and RhoCandList::RemoveFamily().

Referenced by qaComp(), and qaKs0().

226 {
227  if (n==0) return;
228 
229  // *** simple vtx finder
230  TVector3 vtx, altvtx, primvtx;
231  double qavtx = fVtxPoca->GetPocaVtx(vtx, c);
232 
233  // *** determine poca of rest of tracks
234  RhoCandList l;
235  fAnalysis->FillList(l, "Charged");
236  if (fVtxPoca->GetPocaVtx(primvtx, l)>998.) primvtx.SetXYZ(0.,0.,0.);
237 
238  l.RemoveFamily(c);
239 
240  if (l.GetLength()>1) fVtxPoca->GetPocaVtx(altvtx, l);
241  else altvtx = primvtx;
242 
243  double dist=999.;
244  if (altvtx.Mag()>0.) dist = (vtx-altvtx).Mag();
245 
246  // *** store QA info
247  n->Column(pre+"pocvx", (Float_t) vtx.X(), 0.0f);
248  n->Column(pre+"pocvy", (Float_t) vtx.Y(), 0.0f);
249  n->Column(pre+"pocvz", (Float_t) vtx.Z(), 0.0f);
250  n->Column(pre+"altvx", (Float_t) altvtx.X(),0.0f);
251  n->Column(pre+"altvy", (Float_t) altvtx.Y(),0.0f);
252  n->Column(pre+"altvz", (Float_t) altvtx.Z(),0.0f);
253  n->Column(pre+"pocmag", (Float_t) vtx.Mag(), 0.0f);
254  n->Column(pre+"pocqa", (Float_t) qavtx, 0.0f);
255  n->Column(pre+"pocdist",(Float_t) dist, 0.0f);
256  n->Column(pre+"pocctau",(Float_t) (dist*c->M()/c->P()), 0.0f); // decay length
257 }
Int_t GetLength() const
Definition: RhoCandList.h:46
Bool_t FillList(RhoCandList &l, TString listkey="All", TString pidTcaNames="", int trackHypothesis=-1)
Double_t GetPocaVtx(TVector3 &vertex, RhoCandidate *composite)
Definition: RhoVtxPoca.cxx:27
TFile * f
Definition: bump_analys.C:12
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Double_t M() const
Double_t P() const
Int_t RemoveFamily(RhoCandidate *)
PndAnalysis * fAnalysis
Definition: PndRhoTupleQA.h:88
RhoVtxPoca * fVtxPoca
Definition: PndRhoTupleQA.h:87
void PndRhoTupleQA::qaPos ( TString  pre,
TVector3  p,
RhoTuple n,
bool  skip = false 
)

Definition at line 580 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), and f.

Referenced by qaCand().

581 {
582  if (n==0) return;
583 
584  if (!skip)
585  {
586  n->Column(pre+"x", (Float_t) p.X(), 0.0f );
587  n->Column(pre+"y", (Float_t) p.Y(), 0.0f );
588  n->Column(pre+"z", (Float_t) p.Z(), 0.0f );
589  n->Column(pre+"l", (Float_t) p.Mag(), 0.0f );
590  }
591  else
592  {
593  n->Column(pre+"x", (Float_t) -999., 0.0f );
594  n->Column(pre+"y", (Float_t) -999., 0.0f );
595  n->Column(pre+"z", (Float_t) -999., 0.0f );
596  n->Column(pre+"l", (Float_t) -999., 0.0f );
597  }
598 }
Double_t p
Definition: anasim.C:58
TFile * f
Definition: bump_analys.C:12
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
void PndRhoTupleQA::qaPRG ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 261 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), f, RhoKalmanVtxFitter::FitVertexFast(), and RhoKalmanVtxFitter::SetSilent().

262 {
263  if (n==0) return;
264 
265  RhoKalmanVtxFitter vtxPRG(c);
266  vtxPRG.SetSilent();
267 
268  // *** PRG vtx finder
269  TVector3 vtx(0,0,0);
270  TMatrixD vmatrix(3,3);
271  double qavtx = vtxPRG.FitVertexFast(vtx, vmatrix, true, 2);//iteration 2=default
272 
273  // *** store QA info
274  n->Column(pre+"prgvx", (Float_t) vtx.X(), 0.0f);
275  n->Column(pre+"prgvy", (Float_t) vtx.Y(), 0.0f);
276  n->Column(pre+"prgvz", (Float_t) vtx.Z(), 0.0f);
277  n->Column(pre+"prgqa", (Float_t) qavtx, 0.0f);
278 }
TFile * f
Definition: bump_analys.C:12
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52
void PndRhoTupleQA::qaPull ( TString  pre,
RhoCandidate c,
RhoTuple n,
bool  skip = false 
)

Definition at line 601 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), f, RhoCandidate::GetMcTruth(), mct, RhoCandidate::P4(), RhoCandidate::P4Cov(), RhoCandidate::Pos(), RhoCandidate::PosCov(), and sqrt().

Referenced by PndParticleQATask::Exec(), and qaComp().

602 {
603  if (!skip)
604  {
605  RhoCandidate *mct = c->GetMcTruth();
606  if(mct) {
607  TLorentzVector difp4 = c->P4() - mct->P4();
608  TVector3 difpos = c->Pos() - mct->Pos();
609  RhoError covp4 = c->P4Cov();
610  RhoError covpos = c->PosCov();
611  n->Column(pre+"pullpx", (Float_t) (difp4.Px()/sqrt(covp4(0,0))), 0.0f );
612  n->Column(pre+"pullpy", (Float_t) (difp4.Py()/sqrt(covp4(1,1))), 0.0f );
613  n->Column(pre+"pullpz", (Float_t) (difp4.Pz()/sqrt(covp4(2,2))), 0.0f );
614  n->Column(pre+"pulle", (Float_t) (difp4.E()/sqrt(covp4(3,3))), 0.0f );
615  n->Column(pre+"pullx", (Float_t) (difpos.X()/sqrt(covpos(0,0))), 0.0f );
616  n->Column(pre+"pully", (Float_t) (difpos.Y()/sqrt(covpos(1,1))), 0.0f );
617  n->Column(pre+"pullz", (Float_t) (difpos.Z()/sqrt(covpos(2,2))), 0.0f );
618  n->Column(pre+"pullpxpy", (Float_t) (sqrt(difp4.Px()*difp4.Py()/covp4(0,1))), 0.0f );
619  n->Column(pre+"pullpxpz", (Float_t) (sqrt(difp4.Px()*difp4.Pz()/covp4(0,2))), 0.0f );
620  n->Column(pre+"pullpypz", (Float_t) (sqrt(difp4.Py()*difp4.Pz()/covp4(1,2))), 0.0f );
621  n->Column(pre+"pullpxe", (Float_t) (sqrt(difp4.Px()*difp4.E()/covp4(0,3))), 0.0f );
622  n->Column(pre+"pullpye", (Float_t) (sqrt(difp4.Py()*difp4.E()/covp4(1,3))), 0.0f );
623  n->Column(pre+"pullpze", (Float_t) (sqrt(difp4.Pz()*difp4.E()/covp4(2,3))), 0.0f );
624  n->Column(pre+"pullxy", (Float_t) (sqrt(difpos.X()*difpos.Y()/covpos(0,1))), 0.0f );
625  n->Column(pre+"pullxz", (Float_t) (sqrt(difpos.Y()*difpos.Z()/covpos(0,2))), 0.0f );
626  n->Column(pre+"pullyz", (Float_t) (sqrt(difpos.Y()*difpos.Z()/covpos(1,2))), 0.0f );
627  } else {skip=true;}
628  }
629 
630  if (skip)
631  {
632  n->Column(pre+"pullpx", (Float_t) -999., 0.0f );
633  n->Column(pre+"pullpy", (Float_t) -999., 0.0f );
634  n->Column(pre+"pullpz", (Float_t) -999., 0.0f );
635  n->Column(pre+"pulle", (Float_t) -999., 0.0f );
636  n->Column(pre+"pullx", (Float_t) -999., 0.0f );
637  n->Column(pre+"pully", (Float_t) -999., 0.0f );
638  n->Column(pre+"pullz", (Float_t) -999., 0.0f );
639  n->Column(pre+"pullpxpy", (Float_t) -999., 0.0f );
640  n->Column(pre+"pullpxpz", (Float_t) -999., 0.0f );
641  n->Column(pre+"pullpypz", (Float_t) -999., 0.0f );
642  n->Column(pre+"pullpxe", (Float_t) -999., 0.0f );
643  n->Column(pre+"pullpye", (Float_t) -999., 0.0f );
644  n->Column(pre+"pullpze", (Float_t) -999., 0.0f );
645  n->Column(pre+"pullxy", (Float_t) -999., 0.0f );
646  n->Column(pre+"pullxz", (Float_t) -999., 0.0f );
647  n->Column(pre+"pullyz", (Float_t) -999., 0.0f );
648  }
649 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
TVector3 Pos() const
Definition: RhoCandidate.h:186
RhoError PosCov() const
TFile * f
Definition: bump_analys.C:12
TLorentzVector P4() const
Definition: RhoCandidate.h:195
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
RhoCandidate * GetMcTruth() const
Definition: RhoCandidate.h:437
RhoError P4Cov() const
PndMCTrack * mct
Definition: hist-t7.C:147
void PndRhoTupleQA::qaRecoFull ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 1043 of file PndRhoTupleQA.cxx.

References qaDrc(), qaDsc(), qaEmc(), qaGem(), qaMuo(), qaMvd(), qaRich(), qaStt(), qaTof(), and qaTrk().

Referenced by qaRecoFullTree().

1044 {
1045  if (n==0) return;
1046 
1047  qaEmc( pre, c, n );
1048  qaMvd( pre, c, n );
1049  qaStt( pre, c, n );
1050  qaGem( pre, c, n );
1051  qaDrc( pre, c, n );
1052  qaDsc( pre, c, n );
1053  qaRich( pre, c, n );
1054  qaTof( pre, c, n );
1055  qaMuo( pre, c, n );
1056  qaTrk( pre, c, n);
1057 }
void qaTrk(TString pre, RhoCandidate *c, RhoTuple *n)
void qaStt(TString pre, RhoCandidate *c, RhoTuple *n)
void qaGem(TString pre, RhoCandidate *c, RhoTuple *n)
void qaRich(TString pre, RhoCandidate *c, RhoTuple *n)
void qaDsc(TString pre, RhoCandidate *c, RhoTuple *n)
void qaMvd(TString pre, RhoCandidate *c, RhoTuple *n)
void qaTof(TString pre, RhoCandidate *c, RhoTuple *n)
void qaEmc(TString pre, RhoCandidate *c, RhoTuple *n)
void qaDrc(TString pre, RhoCandidate *c, RhoTuple *n)
void qaMuo(TString pre, RhoCandidate *c, RhoTuple *n)
void PndRhoTupleQA::qaRecoFullTree ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 1060 of file PndRhoTupleQA.cxx.

References RhoCandidate::Daughter(), i, name, RhoCandidate::NDaughters(), qaRecoFull(), and TString.

1061 {
1062  if (n==0) return;
1063  if (c==0) return;
1064  int nd = c->NDaughters();
1065  if (nd>0) {
1066  for (int i=0; i<nd; ++i)
1067  {
1068  RhoCandidate *dau = c->Daughter(i);
1069  TString name=TString::Format("%sd%d",pre.Data(),i);
1070  qaRecoFullTree(name,dau,n);
1071  }
1072  } else {
1073  qaRecoFull(pre,c,n);
1074  }
1075 }
Int_t i
Definition: run_full.C:25
RhoCandidate * Daughter(Int_t n)
void qaRecoFullTree(TString pre, RhoCandidate *c, RhoTuple *n)
TString name
void qaRecoFull(TString pre, RhoCandidate *c, RhoTuple *n)
Int_t NDaughters() const
void PndRhoTupleQA::qaRecoShort ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 986 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), PndPidCandidate::GetDiscNumberOfPhotons(), PndPidCandidate::GetDiscThetaC(), PndPidCandidate::GetDrcNumberOfPhotons(), PndPidCandidate::GetDrcThetaC(), PndPidCandidate::GetEmcCalEnergy(), PndPidCandidate::GetEmcNumberOfBumps(), PndPidCandidate::GetEmcNumberOfCrystals(), PndPidCandidate::GetGemHits(), PndPidCandidate::GetMuoIron(), PndPidCandidate::GetMuoNumberOfLayers(), PndPidCandidate::GetMvdDEDX(), PndPidCandidate::GetMvdHits(), RhoCandidate::GetRecoCandidate(), PndPidCandidate::GetRichNumberOfPhotons(), PndPidCandidate::GetRichThetaC(), PndPidCandidate::GetSttHits(), PndPidCandidate::GetSttMeanDEDX(), PndPidCandidate::GetTofBeta(), and PndPidCandidate::GetTofM2().

Referenced by qaRecoShortTree().

987 {
988  if (n==0) return;
989 
991 
992  if (mic)
993  {
994  n->Column(pre+"emcecal", (Float_t) mic->GetEmcCalEnergy(), 0.0f );
995  n->Column(pre+"emcnx", (Int_t) mic->GetEmcNumberOfCrystals(), 0 );
996  n->Column(pre+"emcnb", (Int_t) mic->GetEmcNumberOfBumps(), 0 );
997 
998  n->Column(pre+"gemnhits", (Int_t) mic->GetGemHits(), 0 );
999 
1000  n->Column(pre+"mvddedx", (Float_t) mic->GetMvdDEDX(), 0.0f );
1001  n->Column(pre+"mvdhits", (Int_t) mic->GetMvdHits(), 0 );
1002 
1003  n->Column(pre+"sttdedx", (Float_t) mic->GetSttMeanDEDX(), 0.0f );
1004  n->Column(pre+"stthits", (Int_t) mic->GetSttHits(), 0 );
1005 
1006  n->Column(pre+"drcthtc", (Float_t) mic->GetDrcThetaC(), 0.0f );
1007  n->Column(pre+"drcnphot", (Int_t) mic->GetDrcNumberOfPhotons(), 0 );
1008 
1009  n->Column(pre+"dscthtc", (Float_t) mic->GetDiscThetaC(), 0.0f );
1010  n->Column(pre+"dscnphot", (Int_t) mic->GetDiscNumberOfPhotons(),0 );
1011 
1012  n->Column(pre+"richthtc", (Float_t) mic->GetRichThetaC(), 0.0f );
1013  n->Column(pre+"richnphot", (Int_t) mic->GetRichNumberOfPhotons(),0 );
1014 
1015  n->Column(pre+"muonlay", (Int_t) mic->GetMuoNumberOfLayers(), 0 );;
1016  n->Column(pre+"muoiron", (Float_t) mic->GetMuoIron() , 0.0f ); ;
1017 
1018  n->Column(pre+"tofm2", (Float_t) mic->GetTofM2(), 0.0f );
1019  n->Column(pre+"tofbeta", (Float_t) mic->GetTofBeta(), 0.0f );
1020  }
1021 }
Float_t GetSttMeanDEDX() const
Float_t GetEmcCalEnergy() const
Int_t GetEmcNumberOfCrystals() const
PndPidCandidate * GetRecoCandidate() const
Definition: RhoCandidate.h:376
Float_t GetMuoIron() const
Int_t GetDiscNumberOfPhotons() const
Float_t GetRichThetaC() const
Int_t GetRichNumberOfPhotons() const
Float_t GetDrcThetaC() const
Float_t GetDiscThetaC() const
Int_t GetMuoNumberOfLayers() const
Int_t GetDrcNumberOfPhotons() const
Float_t GetMvdDEDX() const
Int_t GetEmcNumberOfBumps() const
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Int_t GetSttHits() const
Int_t GetMvdHits() const
Int_t GetGemHits() const
Float_t GetTofM2() const
Float_t GetTofBeta() const
void PndRhoTupleQA::qaRecoShortTree ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 1024 of file PndRhoTupleQA.cxx.

References RhoCandidate::Daughter(), i, name, RhoCandidate::NDaughters(), qaRecoShort(), and TString.

1025 {
1026  if (n==0) return;
1027  if (c==0) return;
1028  int nd = c->NDaughters();
1029  if (nd>0) {
1030  for (int i=0; i<nd; ++i)
1031  {
1032  RhoCandidate *dau = c->Daughter(i);
1033  TString name=TString::Format("%sd%d",pre.Data(),i);
1034  qaRecoShortTree(name,dau,n);
1035  }
1036  } else {
1037  qaRecoShort(pre,c,n);
1038  }
1039 }
Int_t i
Definition: run_full.C:25
void qaRecoShortTree(TString pre, RhoCandidate *c, RhoTuple *n)
RhoCandidate * Daughter(Int_t n)
TString name
void qaRecoShort(TString pre, RhoCandidate *c, RhoTuple *n)
Int_t NDaughters() const
void PndRhoTupleQA::qaRich ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 929 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), RhoCandidate::GetRecoCandidate(), PndPidCandidate::GetRichIndex(), PndPidCandidate::GetRichNumberOfPhotons(), PndPidCandidate::GetRichQuality(), PndPidCandidate::GetRichThetaC(), and PndPidCandidate::GetRichThetaCErr().

Referenced by PndParticleQATask::Exec(), and qaRecoFull().

930 {
931  if (n==0) return;
932 
934 
935  if (mic)
936  {
937  n->Column(pre+"richthtc", (Float_t) mic->GetRichThetaC(), 0.0f );
938  n->Column(pre+"richdthtc", (Float_t) mic->GetRichThetaCErr(), 0.0f );
939  n->Column(pre+"richqa", (Float_t) mic->GetRichQuality(), 0.0f );
940  n->Column(pre+"richnphot", (Int_t) mic->GetRichNumberOfPhotons(),0 );
941  n->Column(pre+"richidx", (Int_t) mic->GetRichIndex(), 0 );
942  }
943 }
Float_t GetRichThetaCErr() const
Int_t GetRichIndex() const
PndPidCandidate * GetRecoCandidate() const
Definition: RhoCandidate.h:376
Float_t GetRichThetaC() const
Int_t GetRichNumberOfPhotons() const
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Float_t GetRichQuality() const
void PndRhoTupleQA::qaStt ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 878 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), RhoCandidate::GetRecoCandidate(), PndPidCandidate::GetSttHits(), and PndPidCandidate::GetSttMeanDEDX().

Referenced by PndParticleQATask::Exec(), and qaRecoFull().

879 {
880  if (n==0) return;
881 
883 
884  if (mic)
885  {
886  n->Column(pre+"sttdedx", (Float_t) mic->GetSttMeanDEDX(), 0.0f );
887  n->Column(pre+"stthits", (Int_t) mic->GetSttHits(), 0 );
888  }
889 }
Float_t GetSttMeanDEDX() const
PndPidCandidate * GetRecoCandidate() const
Definition: RhoCandidate.h:376
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Int_t GetSttHits() const
void PndRhoTupleQA::qaTof ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 968 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), RhoCandidate::GetRecoCandidate(), PndPidCandidate::GetTofBeta(), PndPidCandidate::GetTofIndex(), PndPidCandidate::GetTofM2(), PndPidCandidate::GetTofQuality(), PndPidCandidate::GetTofStopTime(), and PndPidCandidate::GetTofTrackLength().

Referenced by PndParticleQATask::Exec(), and qaRecoFull().

969 {
970  if (n==0) return;
971 
973 
974  if (mic)
975  {
976  n->Column(pre+"toftime", (Float_t) mic->GetTofStopTime(), 0.0f );
977  n->Column(pre+"tofm2", (Float_t) mic->GetTofM2(), 0.0f );
978  n->Column(pre+"toflen", (Float_t) mic->GetTofTrackLength(), 0.0f );
979  n->Column(pre+"tofqa", (Float_t) mic->GetTofQuality(), 0.0f );
980  n->Column(pre+"tofidx", (Int_t) mic->GetTofIndex(), 0 );
981  n->Column(pre+"tofbeta", (Float_t) mic->GetTofBeta(), 0.0f );
982  }
983 }
Float_t GetTofQuality() const
Float_t GetTofStopTime() const
PndPidCandidate * GetRecoCandidate() const
Definition: RhoCandidate.h:376
Float_t GetTofTrackLength() const
Int_t GetTofIndex() const
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Float_t GetTofM2() const
Float_t GetTofBeta() const
void PndRhoTupleQA::qaTrk ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 652 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), f, PndPidCandidate::GetChiSquared(), PndPidCandidate::GetDegreesOfFreedom(), PndPidCandidate::GetFitStatus(), PndPidCandidate::GetMomentum(), PndPidCandidate::GetPosition(), RhoCandidate::GetRecoCandidate(), PndPidCandidate::GetTrackBranch(), and PndPidCandidate::GetTrackIndex().

Referenced by PndParticleQATask::Exec(), and qaRecoFull().

653 {
654  if (n==0) return;
655 
657 
658  if (mic)
659  {
660  n->Column(pre+"trkpx", (Float_t) mic->GetMomentum().X(), 0.0f );
661  n->Column(pre+"trkpy", (Float_t) mic->GetMomentum().Y(), 0.0f );
662  n->Column(pre+"trkpz", (Float_t) mic->GetMomentum().Z(), 0.0f );
663  n->Column(pre+"trkvx", (Float_t) mic->GetPosition().X(), 0.0f );
664  n->Column(pre+"trkvy", (Float_t) mic->GetPosition().Y(), 0.0f );
665  n->Column(pre+"trkvz", (Float_t) mic->GetPosition().Z(), 0.0f );
666  n->Column(pre+"trkdof", (Int_t) mic->GetDegreesOfFreedom(), 0 );
667  n->Column(pre+"trkstat", (Int_t) mic->GetFitStatus(), 0 );
668  n->Column(pre+"trkchi2", (Float_t) mic->GetChiSquared(), 0.0f );
669  n->Column(pre+"trkidx", (Int_t) mic->GetTrackIndex(), 0 );
670  n->Column(pre+"trkbranch", (Int_t) mic->GetTrackBranch() , 0 );
671  } else {
672  n->Column(pre+"trkpx", (Float_t) -999., 0.0f );
673  n->Column(pre+"trkpy", (Float_t) -999., 0.0f );
674  n->Column(pre+"trkpz", (Float_t) -999., 0.0f );
675  n->Column(pre+"trkvx", (Float_t) -999., 0.0f );
676  n->Column(pre+"trkvy", (Float_t) -999., 0.0f );
677  n->Column(pre+"trkvz", (Float_t) -999., 0.0f );
678  n->Column(pre+"trkdof", (Int_t) -999., 0 );
679  n->Column(pre+"trkstat", (Int_t) -999., 0 );
680  n->Column(pre+"trkchi2", (Float_t) -999., 0.0f );
681  n->Column(pre+"trkidx", (Int_t) -999., 0 );
682  n->Column(pre+"trkbranch", (Int_t) -999., 0 );
683  }
684 
685 }
Int_t GetTrackIndex() const
Int_t GetDegreesOfFreedom() const
Int_t GetTrackBranch() const
PndPidCandidate * GetRecoCandidate() const
Definition: RhoCandidate.h:376
Float_t GetChiSquared() const
TFile * f
Definition: bump_analys.C:12
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
TVector3 GetPosition() const
TVector3 GetMomentum() const
Int_t GetFitStatus() const
void PndRhoTupleQA::qaVtx ( TString  pre,
RhoCandidate c,
RhoTuple n 
)

Definition at line 771 of file PndRhoTupleQA.cxx.

References RhoTuple::Column(), d, RhoCandidate::Daughter(), RhoCandidate::DecayVtx(), f, fAnalysis, PndAnalysis::FillList(), fVtxPoca, RhoVtxPoca::GetPocaVtx(), RhoCandidate::M(), RhoCandidate::P(), RhoCandidate::Pos(), and v.

Referenced by qaComp(), and qaKs0().

772 {
773  if (n==0) return;
774 
775  RhoCandidate *d = c->Daughter(0);
776  TVector3 v = c->DecayVtx();
777  if (d)
778  {
779  if (v.X()==0 && v.Y()==0 && v.Z()==0)
780  v = d->Pos();
781  // TLorentzVector d_cms = d->P4();
782  // d_cms.Boost(-(c->P4().BoostVector()));
783 
784  Float_t ctau = v.Mag()*c->M()/c->P();
785  /* Float_t dec = d_cms.Vect().Angle(c->P3());
786  Float_t cdec = cos(dec);*/
787 
788  // if primary Vertex available, compute ctau relative to that one
789  Float_t ctaud = -999.;
790  TVector3 primvtx;
791 
792  // *** determine poca of all charged tracks as primary vertex
793  RhoCandList l;
794  fAnalysis->FillList(l, "Charged");
795  if (fVtxPoca->GetPocaVtx(primvtx, l)>998.) primvtx.SetXYZ(0.,0.,0.);
796 
797  if (primvtx.Mag()>0) ctaud = (v-primvtx).Mag()*c->M()/c->P();
798 
799  n->Column(pre+"vx", (Float_t) v.X(), 0.0f );
800  n->Column(pre+"vy", (Float_t) v.Y(), 0.0f );
801  n->Column(pre+"vz", (Float_t) v.Z(), 0.0f );
802  n->Column(pre+"len", (Float_t) v.Mag(), 0.0f );
803  n->Column(pre+"ctau", (Float_t) ctau, 0.0f );
804  n->Column(pre+"ctaud", (Float_t) ctaud, 0.0f );
805  /* n->Column(pre+"decang", (Float_t) dec, 0.0f );
806  n->Column(pre+"cdecang",(Float_t) cdec, 0.0f );*/
807  }
808  else
809  {
810  n->Column(pre+"vx", (Float_t) -999.0, 0.0f );
811  n->Column(pre+"vy", (Float_t) -999.0, 0.0f );
812  n->Column(pre+"vz", (Float_t) -999.0, 0.0f );
813  n->Column(pre+"len", (Float_t) -999.0, 0.0f );
814  n->Column(pre+"ctau", (Float_t) -999.0, 0.0f );
815  n->Column(pre+"ctaud", (Float_t) -999.0, 0.0f );
816  /* n->Column(pre+"decang", (Float_t) -999.0, 0.0f );
817  n->Column(pre+"cdecang",(Float_t) -999.0, 0.0f );*/
818  }
819 }
TObjArray * d
TVector3 Pos() const
Definition: RhoCandidate.h:186
Bool_t FillList(RhoCandList &l, TString listkey="All", TString pidTcaNames="", int trackHypothesis=-1)
RhoCandidate * Daughter(Int_t n)
__m128 v
Definition: P4_F32vec4.h:4
Double_t GetPocaVtx(TVector3 &vertex, RhoCandidate *composite)
Definition: RhoVtxPoca.cxx:27
TFile * f
Definition: bump_analys.C:12
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
Definition: RhoTuple.cxx:56
Double_t M() const
Double_t P() const
PndAnalysis * fAnalysis
Definition: PndRhoTupleQA.h:88
RhoVtxPoca * fVtxPoca
Definition: PndRhoTupleQA.h:87
RhoVector3Err DecayVtx()
Definition: RhoCandidate.h:288
void PndRhoTupleQA::SetIniP4 ( TLorentzVector  _ini)
inline

Definition at line 81 of file PndRhoTupleQA.h.

References fIniP4.

81 {fIniP4 = _ini;}
TLorentzVector fIniP4
Definition: PndRhoTupleQA.h:90

Member Data Documentation

PndAnalysis* PndRhoTupleQA::fAnalysis
private

Definition at line 88 of file PndRhoTupleQA.h.

Referenced by PndRhoTupleQA(), qaComp(), qaKs0(), qaMcList(), qaPi0(), qaPoca(), and qaVtx().

RhoCandidate* PndRhoTupleQA::fDummyCand
private

Definition at line 86 of file PndRhoTupleQA.h.

Referenced by PndRhoTupleQA(), qaMc(), and ~PndRhoTupleQA().

TLorentzVector PndRhoTupleQA::fIniP4
private

Definition at line 90 of file PndRhoTupleQA.h.

Referenced by GetIniP4(), PndRhoTupleQA(), qaP4Cms(), and SetIniP4().

RhoVtxPoca* PndRhoTupleQA::fVtxPoca
private

Definition at line 87 of file PndRhoTupleQA.h.

Referenced by PndRhoTupleQA(), qaPoca(), qaVtx(), and ~PndRhoTupleQA().


The documentation for this class was generated from the following files: