FairRoot/PandaRoot
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
PndPidMvdAssociatorTask Class Reference

#include <PndPidMvdAssociatorTask.h>

Inheritance diagram for PndPidMvdAssociatorTask:

Public Member Functions

virtual void Exec (Option_t *option)
 
virtual InitStatus Init ()
 
void Register ()
 
void Reset ()
 
 PndPidMvdAssociatorTask (const char *name, const char *title="Pnd Task")
 
 PndPidMvdAssociatorTask ()
 
virtual ~PndPidMvdAssociatorTask ()
 
void SetVerbose (Bool_t verb)
 
virtual void SetParContainers ()
 
virtual void Finish ()
 
void SetOutputBranch (TString branch)
 

Public Attributes

PndPidMvdParmvdPara
 

Protected Member Functions

void DoPidMatch (PndPidCandidate *pidcand, PndPidProbability *prob)
 
Double_t GetPdf (Double_t dedx, Double_t Mpv, Double_t Sigma)
 

Protected Attributes

TClonesArray * fPidChargedCand
 
TClonesArray * fPidChargedProb
 PndPidCandidate TCA for charged particles. More...
 
TString fTrackBranchNamePidHypo
 PndPidProbability TCA for charged particles. More...
 

Detailed Description

Definition at line 10 of file PndPidMvdAssociatorTask.h.

Constructor & Destructor Documentation

PndPidMvdAssociatorTask::PndPidMvdAssociatorTask ( const char *  name,
const char *  title = "Pnd Task" 
)

Definition at line 26 of file PndPidMvdAssociatorTask.cxx.

References fPidChargedProb, fTrackBranchNamePidHypo, and SetTitle().

26  :FairTask(name)
27 {
28  //---
29  fPidChargedProb = new TClonesArray("PndPidProbability");
31  SetTitle(title);
32  }
TClonesArray * fPidChargedProb
PndPidCandidate TCA for charged particles.
h_MC_angle SetTitle("MC truth: opening angle of #pi^{0}")
TString name
TString fTrackBranchNamePidHypo
PndPidProbability TCA for charged particles.
PndPidMvdAssociatorTask::PndPidMvdAssociatorTask ( )

Definition at line 19 of file PndPidMvdAssociatorTask.cxx.

References fPidChargedProb, and fTrackBranchNamePidHypo.

19  {
20  //---
21  fPidChargedProb = new TClonesArray("PndPidProbability");
23 }
TClonesArray * fPidChargedProb
PndPidCandidate TCA for charged particles.
TString fTrackBranchNamePidHypo
PndPidProbability TCA for charged particles.
PndPidMvdAssociatorTask::~PndPidMvdAssociatorTask ( )
virtual

Definition at line 12 of file PndPidMvdAssociatorTask.cxx.

12  {
13  //
14  FairRootManager *fManager =FairRootManager::Instance();
15  fManager->Write();
16 }

Member Function Documentation

void PndPidMvdAssociatorTask::DoPidMatch ( PndPidCandidate pidcand,
PndPidProbability prob 
)
protected

Definition at line 76 of file PndPidMvdAssociatorTask.cxx.

References Double_t, PndPidMvdPar::GetElectronMpv(), PndPidMvdPar::GetElectronSigma(), PndPidMvdPar::GetKaonMpv(), PndPidMvdPar::GetKaonSigma(), PndPidCandidate::GetMomentum(), PndPidMvdPar::GetMuonMpv(), PndPidMvdPar::GetMuonSigma(), PndPidCandidate::GetMvdDEDX(), GetPdf(), PndPidMvdPar::GetPionMpv(), PndPidMvdPar::GetPionSigma(), PndPidMvdPar::GetProtonHighMpv(), PndPidMvdPar::GetProtonHighSigma(), PndPidMvdPar::GetProtonLowMpv(), PndPidMvdPar::GetProtonLowSigma(), mvdPara, PndPidProbability::SetElectronPdf(), PndPidProbability::SetKaonPdf(), PndPidProbability::SetMuonPdf(), PndPidProbability::SetPionPdf(), and PndPidProbability::SetProtonPdf().

Referenced by Exec().

77 {
78  Double_t CanMpv, CanSigma;
79 
80  //Electron
81  CanMpv=mvdPara->GetElectronMpv(pidcand->GetMomentum().Mag());
82  CanSigma=mvdPara->GetElectronSigma(pidcand->GetMomentum().Mag());
83  prob->SetElectronPdf(GetPdf(pidcand->GetMvdDEDX(), CanMpv, CanSigma));
84  //cout << "ele:\t" << pidcand->GetMomentum().Mag() << "\t" << pidcand->GetMvdDEDX() << "\t" << CanMpv << "\t" << CanSigma << "\t" << prob->GetElectronPdf() << endl;
85 
86  //Proton moment below 0.6
87  if (pidcand->GetMomentum().Mag() < 0.6) {
88  CanMpv=mvdPara->GetProtonLowMpv(pidcand->GetMomentum().Mag());
89  CanSigma=mvdPara->GetProtonLowSigma(pidcand->GetMomentum().Mag());
90  prob->SetProtonPdf(GetPdf(pidcand->GetMvdDEDX(), CanMpv, CanSigma));
91  //cout << "proton:\t" << pidcand->GetMomentum().Mag() << "\t" << pidcand->GetMvdDEDX() << "\t" << CanMpv << "\t" << CanSigma << "\t" << prob->GetProtonPdf() << endl;
92  }
93  else {
94  //Proton momenta above 0.6
95  CanMpv=mvdPara->GetProtonHighMpv(pidcand->GetMomentum().Mag());
96  CanSigma=mvdPara->GetProtonHighSigma(pidcand->GetMomentum().Mag());
97  prob->SetProtonPdf(GetPdf(pidcand->GetMvdDEDX(), CanMpv, CanSigma));
98  //cout << "proton:\t" << pidcand->GetMomentum().Mag() << "\t" << pidcand->GetMvdDEDX() << "\t" << CanMpv << "\t" << CanSigma << "\t" << prob->GetProtonPdf() << endl;
99  }
100  //Pion
101  CanMpv=mvdPara->GetPionMpv(pidcand->GetMomentum().Mag());
102  CanSigma=mvdPara->GetPionSigma(pidcand->GetMomentum().Mag());
103  prob->SetPionPdf(GetPdf(pidcand->GetMvdDEDX(), CanMpv, CanSigma));
104  //cout << "pion:\t" << pidcand->GetMomentum().Mag() << "\t" << pidcand->GetMvdDEDX() << "\t" << CanMpv << "\t" << CanSigma << "\t" << prob->GetPionPdf() << endl;
105 
106  //Muon
107  CanMpv=mvdPara->GetMuonMpv(pidcand->GetMomentum().Mag());
108  CanSigma=mvdPara->GetMuonSigma(pidcand->GetMomentum().Mag());
109  prob->SetMuonPdf(GetPdf(pidcand->GetMvdDEDX(), CanMpv, CanSigma));
110  //cout << "muon:\t" << pidcand->GetMomentum().Mag() << "\t" << pidcand->GetMvdDEDX() << "\t" << CanMpv << "\t" << CanSigma << "\t" << prob->GetMuonPdf() << endl;
111 
112  //Kaon
113  CanMpv=mvdPara->GetKaonMpv(pidcand->GetMomentum().Mag());
114  CanSigma=mvdPara->GetKaonSigma(pidcand->GetMomentum().Mag());
115  prob->SetKaonPdf(GetPdf(pidcand->GetMvdDEDX(), CanMpv, CanSigma));
116  //cout << "kaon:\t" << pidcand->GetMomentum().Mag() << "\t" << pidcand->GetMvdDEDX() << "\t" << CanMpv << "\t" << CanSigma << "\t" << prob->GetKaonPdf() << endl;
117 
118  //prob->NormalizeTo(1.);
119 }
Double_t GetKaonSigma(Double_t momentum)
Double_t GetProtonHighSigma(Double_t momentum)
Double_t GetPionSigma(Double_t momentum)
Double_t GetProtonLowMpv(Double_t momentum)
Double_t GetProtonLowSigma(Double_t momentum)
void SetPionPdf(Double_t val)
Double_t GetElectronMpv(Double_t momentum)
Double_t GetPdf(Double_t dedx, Double_t Mpv, Double_t Sigma)
Double_t GetElectronSigma(Double_t momentum)
Double_t GetPionMpv(Double_t momentum)
Double_t GetMuonSigma(Double_t momentum)
void SetKaonPdf(Double_t val)
void SetElectronPdf(Double_t val)
void SetMuonPdf(Double_t val)
Double_t GetMuonMpv(Double_t momentum)
Double_t
Float_t GetMvdDEDX() const
Double_t GetProtonHighMpv(Double_t momentum)
void SetProtonPdf(Double_t val)
Double_t GetKaonMpv(Double_t momentum)
TVector3 GetMomentum() const
void PndPidMvdAssociatorTask::Exec ( Option_t *  option)
virtual

Definition at line 61 of file PndPidMvdAssociatorTask.cxx.

References DoPidMatch(), fPidChargedCand, fPidChargedProb, fVerbose, PndPidCandidate::GetMvdDEDX(), and i.

61  {
62  if (fPidChargedProb->GetEntriesFast() != 0) fPidChargedProb->Clear();
63  if(fVerbose>1) std::cout << "-I- Start PndPidMvdAssociatorTask. "<<std::endl;
64 
65  // Get the Candidates
66  for(Int_t i=0; i<fPidChargedCand->GetEntriesFast(); i++)
67  {
69  PndPidProbability* prob = new((*fPidChargedProb)[i]) PndPidProbability(1.,1.,1.,1.,1.,i);// initializes with equal probability
70  if (pidcand->GetMvdDEDX()==0) continue;
71  DoPidMatch(pidcand,prob);
72  }
73 
74 }
int fVerbose
Definition: poormantracks.C:24
TClonesArray * fPidChargedProb
PndPidCandidate TCA for charged particles.
Int_t i
Definition: run_full.C:25
Float_t GetMvdDEDX() const
void DoPidMatch(PndPidCandidate *pidcand, PndPidProbability *prob)
void PndPidMvdAssociatorTask::Finish ( )
virtual

Definition at line 142 of file PndPidMvdAssociatorTask.cxx.

142  {
143 }
Double_t PndPidMvdAssociatorTask::GetPdf ( Double_t  dedx,
Double_t  Mpv,
Double_t  Sigma 
)
protected

Definition at line 121 of file PndPidMvdAssociatorTask.cxx.

References Double_t, and val.

Referenced by DoPidMatch().

122 {
123  TF1 *landauPdf = new TF1("landauPdf","landaun",0,1);
124  landauPdf->SetParameter(0,1);
125  landauPdf->SetParameter(1,Mpv);
126  landauPdf->SetParameter(2,Sigma);
127  Double_t val = landauPdf->Eval(dedx);
128  delete landauPdf;
129  return val;
130 }
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
Double_t
InitStatus PndPidMvdAssociatorTask::Init ( )
virtual

Definition at line 35 of file PndPidMvdAssociatorTask.cxx.

References fPidChargedCand, fTrackBranchNamePidHypo, mvdPara, and Register().

35  {
36 
37  std::cout << "InitStatus PndPidMvdAssociatorTask::Init()" << std::endl;
38 
39  FairRootManager *fManager =FairRootManager::Instance();
40 
41  fPidChargedCand = (TClonesArray *)fManager->GetObject("PidChargedCand"+fTrackBranchNamePidHypo);
42  if ( ! fPidChargedCand) {
43  std::cout << "-I- PndPidMvdAssociatorTask::Init: No PndPidCandidate array PidChargedCand there!" << std::endl;
44  return kERROR;
45  }
46 
47  Register();
48 
49  mvdPara = new PndPidMvdPar();
50 
51  std::cout << "-I- PndPidMvdAssociatorTask::Init: Success!" << std::endl;
52 
53  return kSUCCESS;
54 }
TString fTrackBranchNamePidHypo
PndPidProbability TCA for charged particles.
void PndPidMvdAssociatorTask::Register ( )

Definition at line 135 of file PndPidMvdAssociatorTask.cxx.

References fPidChargedProb, and fTrackBranchNamePidHypo.

Referenced by Init().

135  {
136  //---
137  FairRootManager::Instance()->
138  Register("PidAlgoMvd"+fTrackBranchNamePidHypo,"Pid", fPidChargedProb, kTRUE);
139 }
TClonesArray * fPidChargedProb
PndPidCandidate TCA for charged particles.
TString fTrackBranchNamePidHypo
PndPidProbability TCA for charged particles.
void PndPidMvdAssociatorTask::Reset ( )

Definition at line 146 of file PndPidMvdAssociatorTask.cxx.

146  {
147  //---
148 }
void PndPidMvdAssociatorTask::SetOutputBranch ( TString  branch)
inline

Definition at line 42 of file PndPidMvdAssociatorTask.h.

References fTrackBranchNamePidHypo.

Referenced by PndMasterMultiPidTask::PndMasterMultiPidTask().

42 { fTrackBranchNamePidHypo = branch; };
TString fTrackBranchNamePidHypo
PndPidProbability TCA for charged particles.
void PndPidMvdAssociatorTask::SetParContainers ( )
virtual

Get parameter containers

Definition at line 57 of file PndPidMvdAssociatorTask.cxx.

57  {
58  //--
59 }
void PndPidMvdAssociatorTask::SetVerbose ( Bool_t  verb)
inline

Definition at line 36 of file PndPidMvdAssociatorTask.h.

References fVerbose.

36 { fVerbose = verb ;};
int fVerbose
Definition: poormantracks.C:24

Member Data Documentation

TClonesArray* PndPidMvdAssociatorTask::fPidChargedCand
protected

Definition at line 14 of file PndPidMvdAssociatorTask.h.

Referenced by Exec(), and Init().

TClonesArray* PndPidMvdAssociatorTask::fPidChargedProb
protected

PndPidCandidate TCA for charged particles.

Definition at line 15 of file PndPidMvdAssociatorTask.h.

Referenced by Exec(), PndPidMvdAssociatorTask(), and Register().

TString PndPidMvdAssociatorTask::fTrackBranchNamePidHypo
protected

PndPidProbability TCA for charged particles.

Definition at line 17 of file PndPidMvdAssociatorTask.h.

Referenced by Init(), PndPidMvdAssociatorTask(), Register(), and SetOutputBranch().

PndPidMvdPar* PndPidMvdAssociatorTask::mvdPara

Definition at line 42 of file PndPidMvdAssociatorTask.h.

Referenced by DoPidMatch(), and Init().


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