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

#include <PndPidSttAssociatorTask.h>

Inheritance diagram for PndPidSttAssociatorTask:

Public Member Functions

 PndPidSttAssociatorTask ()
 
 PndPidSttAssociatorTask (const char *name, const char *title="Pnd Task")
 
virtual ~PndPidSttAssociatorTask ()
 
virtual InitStatus Init ()
 
virtual void Exec (Option_t *opt)
 
void SetVerbose (Bool_t verb)
 
void SetOutputBranch (TString branch)
 
void SetDefaultMassHypo (Bool_t hypo)
 
Bool_t IsDefaultMassHypo ()
 
 ClassDef (PndPidSttAssociatorTask, 1)
 

Public Attributes

Int_t fDefaultHypo
 

Protected Member Functions

void DoPidMatch (PndPidCandidate *pidcand, PndPidProbability *prob)
 
Double_t GetPdf (Double_t dedx, Double_t mean, Double_t sigma)
 
void ElectronDEDXMeanFunction ()
 
void MuonDEDXMeanFunction ()
 
void PionDEDXMeanFunction ()
 
void KaonDEDXMeanFunction ()
 
void ProtonDEDXMeanFunctionL ()
 
void ProtonDEDXMeanFunctionH ()
 
void ElectronDEDXSigmaFunction ()
 
void MuonDEDXSigmaFunction ()
 
void PionDEDXSigmaFunction ()
 
void KaonDEDXSigmaFunction ()
 
void ProtonDEDXSigmaFunctionL ()
 
void ProtonDEDXSigmaFunctionH ()
 

Protected Attributes

TClonesArray * fPidChargedCand
 
TClonesArray * fPidChargedProb
 charged candidates More...
 
TString fTrackBranchNamePidHypo
 
TF1 * fElectronDEDXMean
 
TF1 * fMuonDEDXMean
 
TF1 * fPionDEDXMean
 
TF1 * fKaonDEDXMean
 
TF1 * fProtonDEDXMeanL
 
TF1 * fProtonDEDXMeanH
 
TF1 * fElectronDEDXSigma
 
TF1 * fMuonDEDXSigma
 
TF1 * fPionDEDXSigma
 
TF1 * fKaonDEDXSigma
 
TF1 * fProtonDEDXSigmaL
 
TF1 * fProtonDEDXSigmaH
 

Detailed Description

Definition at line 26 of file PndPidSttAssociatorTask.h.

Constructor & Destructor Documentation

PndPidSttAssociatorTask::PndPidSttAssociatorTask ( )

Default constructor

Definition at line 31 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, and fPidChargedProb.

31  {
32  fPidChargedProb = new TClonesArray("PndPidProbability");
33  fDefaultHypo = kTRUE;
34 }
TClonesArray * fPidChargedProb
charged candidates
PndPidSttAssociatorTask::PndPidSttAssociatorTask ( const char *  name,
const char *  title = "Pnd Task" 
)

Definition at line 37 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, fPidChargedProb, and SetTitle().

37  :FairTask(name)
38 {
39  fPidChargedProb = new TClonesArray("PndPidProbability");
40  fDefaultHypo = kTRUE;
41  SetTitle(title);
42 }
TClonesArray * fPidChargedProb
charged candidates
h_MC_angle SetTitle("MC truth: opening angle of #pi^{0}")
TString name
PndPidSttAssociatorTask::~PndPidSttAssociatorTask ( )
virtual

Member Function Documentation

PndPidSttAssociatorTask::ClassDef ( PndPidSttAssociatorTask  ,
 
)
void PndPidSttAssociatorTask::DoPidMatch ( PndPidCandidate pidcand,
PndPidProbability prob 
)
protected

Definition at line 113 of file PndPidSttAssociatorTask.cxx.

References Double_t, fElectronDEDXMean, fElectronDEDXSigma, fKaonDEDXMean, fKaonDEDXSigma, fMuonDEDXMean, fMuonDEDXSigma, fPionDEDXMean, fPionDEDXSigma, fProtonDEDXMeanH, fProtonDEDXMeanL, fProtonDEDXSigmaH, fProtonDEDXSigmaL, PndPidCandidate::GetMomentum(), GetPdf(), PndPidCandidate::GetSttMeanDEDX(), PndPidProbability::SetElectronPdf(), PndPidProbability::SetKaonPdf(), PndPidProbability::SetMuonPdf(), PndPidProbability::SetPionPdf(), and PndPidProbability::SetProtonPdf().

Referenced by Exec().

114 {
115  // measured quantities
116  Double_t momentum = pidcand->GetMomentum().Mag();
117  Double_t dedx = pidcand->GetSttMeanDEDX();
118 
119  // parametrized quantities (gaussian)
120  Double_t dedx_mean, dedx_sigma;
121 
122  // e
123  dedx_mean = fElectronDEDXMean->Eval(momentum);
124  dedx_sigma = fElectronDEDXSigma->Eval(momentum);
125  prob->SetElectronPdf(GetPdf(dedx, dedx_mean, dedx_sigma));
126  // cout << "e: " << pidcand->GetMomentum().Mag()
127  // << " " << pidcand->GetSttMeanDEDX()
128  // << " " << dedx_mean
129  // << " " << dedx_sigma
130  // << " " << prob->GetElectronPdf() << endl;
131 
132  // mu
133  dedx_mean = fMuonDEDXMean->Eval(momentum);
134  dedx_sigma = fMuonDEDXSigma->Eval(momentum);
135  prob->SetMuonPdf(GetPdf(dedx, dedx_mean, dedx_sigma));
136  // cout << "mu: " << pidcand->GetMomentum().Mag()
137  // << " " << pidcand->GetSttMeanDEDX()
138  // << " " << dedx_mean
139  // << " " << dedx_sigma
140  // << " " << prob->GetMuonPdf() << endl;
141 
142  // pi
143  dedx_mean = fPionDEDXMean->Eval(momentum);
144  dedx_sigma = fPionDEDXSigma->Eval(momentum);
145  prob->SetPionPdf(GetPdf(dedx, dedx_mean, dedx_sigma));
146  // cout << "pi: " << pidcand->GetMomentum().Mag()
147  // << " " << pidcand->GetSttMeanDEDX()
148  // << " " << dedx_mean
149  // << " " << dedx_sigma
150  // << " " << prob->GetPionPdf() << endl;
151 
152  // k
153  dedx_mean = fKaonDEDXMean->Eval(momentum);
154  dedx_sigma = fKaonDEDXSigma->Eval(momentum);
155  prob->SetKaonPdf(GetPdf(dedx, dedx_mean, dedx_sigma));
156  // cout << "k: " << pidcand->GetMomentum().Mag()
157  // << " " << pidcand->GetSttMeanDEDX()
158  // << " " << dedx_mean
159  // << " " << dedx_sigma
160  // << " " << prob->GetKaonPdf() << endl;
161 
162  // p
163  if(momentum < 1.){
164  dedx_mean = fProtonDEDXMeanL->Eval(momentum);
165  dedx_sigma = fProtonDEDXSigmaL->Eval(momentum);
166  prob->SetProtonPdf(GetPdf(dedx, dedx_mean, dedx_sigma));
167  }
168  if(momentum > 1.){
169  dedx_mean = fProtonDEDXMeanH->Eval(momentum);
170  dedx_sigma = fProtonDEDXSigmaH->Eval(momentum);
171  prob->SetProtonPdf(GetPdf(dedx, dedx_mean, dedx_sigma));
172  }
173  // cout << "p: " << pidcand->GetMomentum().Mag()
174  // << " " << pidcand->GetSttMeanDEDX()
175  // << " " << dedx_mean
176  // << " " << dedx_sigma
177  // << " " << prob->GetProtonPdf() << endl;
178 
179  // cout << endl;
180 
181 
182 }
Double_t GetPdf(Double_t dedx, Double_t mean, Double_t sigma)
void SetPionPdf(Double_t val)
Float_t GetSttMeanDEDX() const
void SetKaonPdf(Double_t val)
void SetElectronPdf(Double_t val)
void SetMuonPdf(Double_t val)
Double_t
void SetProtonPdf(Double_t val)
TVector3 GetMomentum() const
void PndPidSttAssociatorTask::ElectronDEDXMeanFunction ( )
protected

Definition at line 197 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, and fElectronDEDXMean.

Referenced by Init().

197  {
198  fElectronDEDXMean = new TF1("emdedx","[0] * (1./x)**2 + [1] * TMath::Log(x) + [2]", 0.2, 5.);
199 
200  if(fDefaultHypo == kTRUE) fElectronDEDXMean->SetParameters(-2.53435e-02,1.35409e-01,7.34210e+00);
201  else fElectronDEDXMean->SetParameters(-2.53435e-02,1.35409e-01,7.34210e+00);
202 
203 }
void PndPidSttAssociatorTask::ElectronDEDXSigmaFunction ( )
protected

Definition at line 243 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, and fElectronDEDXSigma.

Referenced by Init().

243  {
244  fElectronDEDXSigma = new TF1("esdedx","[0] * (1./x)**2 + [1] * TMath::Log(x) + [2]", 0.2, 5.);
245  if(fDefaultHypo == kTRUE) fElectronDEDXSigma->SetParameters(1.81859e-03,-1.01187e-02,6.76615e-01);
246  else fElectronDEDXSigma->SetParameters(1.81859e-03,-1.01187e-02,6.76615e-01);
247 
248 }
void PndPidSttAssociatorTask::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 87 of file PndPidSttAssociatorTask.cxx.

References DoPidMatch(), fPidChargedCand, fPidChargedProb, PndPidCandidate::GetMomentum(), PndPidCandidate::GetSttMeanDEDX(), i, and PndPidProbability::SetIndex().

87  {
88 
89  // cout << "PND PID STT ASSOCIATOR" << endl;
90 
91  fPidChargedProb->Clear();
92 
93  for(Int_t i = 0; i < fPidChargedCand->GetEntriesFast(); i++)
94  {
96  TClonesArray& pidRef = *fPidChargedProb;
97  PndPidProbability* prob = new(pidRef[i]) PndPidProbability();// initializes with flat probabilities
98  prob->SetIndex(i);
99 
100  // cout << "i " << i << " dedx " << pidCand->GetSttMeanDEDX() << endl;
101  if (pidCand->GetSttMeanDEDX() == 0) continue;
102 
103  // CUT on momentum: if mom > 0.8 GeV/c
104  // no way to decide what particle it is
105  if (pidCand->GetMomentum().Mag() < 0.2 ) continue;
106  if (pidCand->GetMomentum().Mag() > 5.0 ) continue;
107 
108  DoPidMatch(pidCand,prob);
109  }
110 
111 }
TClonesArray * fPidChargedProb
charged candidates
Int_t i
Definition: run_full.C:25
Float_t GetSttMeanDEDX() const
void DoPidMatch(PndPidCandidate *pidcand, PndPidProbability *prob)
TVector3 GetMomentum() const
void SetIndex(Int_t idx)
Double_t PndPidSttAssociatorTask::GetPdf ( Double_t  dedx,
Double_t  mean,
Double_t  sigma 
)
protected

Definition at line 184 of file PndPidSttAssociatorTask.cxx.

References Double_t, and val.

Referenced by DoPidMatch().

185 {
186  // gaussian of dedx_mean distribution @ a certain momentum
187  TF1 *gausPdf = new TF1("gausPdf","gausn", 0, 100); // CHECK the extremities
188  gausPdf->SetParameters(1, mean, sigma);
189  Double_t val = gausPdf->Eval(dedx);
190  delete gausPdf;
191  return val;
192 }
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
Double_t sigma[nsteps]
Definition: dedx_bands.C:65
Double_t
Double_t mean[nsteps]
Definition: dedx_bands.C:65
InitStatus PndPidSttAssociatorTask::Init ( )
virtual

Virtual method Init

Definition at line 45 of file PndPidSttAssociatorTask.cxx.

References ElectronDEDXMeanFunction(), ElectronDEDXSigmaFunction(), fDefaultHypo, fPidChargedCand, fPidChargedProb, fTrackBranchNamePidHypo, fVerbose, KaonDEDXMeanFunction(), KaonDEDXSigmaFunction(), MuonDEDXMeanFunction(), MuonDEDXSigmaFunction(), PionDEDXMeanFunction(), PionDEDXSigmaFunction(), ProtonDEDXMeanFunctionH(), ProtonDEDXMeanFunctionL(), ProtonDEDXSigmaFunctionH(), and ProtonDEDXSigmaFunctionL().

45  {
46 
47  if(fVerbose > 0) std::cout << "PndPidSttAssociatorTask::Init()" << std::endl;
48 
49  // Get RootManager
50  FairRootManager* ioman = FairRootManager::Instance();
51  if ( ! ioman ) {
52  std::cout << "-E- PndPidSttAssociatorTask::Init: "
53  << "RootManager not instantiated!" << std::endl;
54  return kFATAL;
55  }
56 
57  fPidChargedCand = (TClonesArray *) ioman->GetObject("PidChargedCand"+fTrackBranchNamePidHypo);
58  if ( ! fPidChargedCand) {
59  std::cout << "-E- PndPidSttAssociatorTask::Init: No PidChargedCand array!" << std::endl;
60  return kERROR;
61  }
62 
63  // set up functions
76 
77  ioman->Register("PidAlgoStt"+fTrackBranchNamePidHypo,"Pid", fPidChargedProb, kTRUE);
78 
79  if(fDefaultHypo == kTRUE) std::cout << "-I- PndPidSttAssociatorTask: using default mass hypo bands (muon)" << endl;
80  else std::cout << "-I- PndPidSttAssociatorTask: NOT using default mass hypo bands" << endl;
81 
82  std::cout << "-I- PndPidSttAssociatorTask::Init: Intialization successfull" << endl;
83 
84  return kSUCCESS;
85 }
int fVerbose
Definition: poormantracks.C:24
TClonesArray * fPidChargedProb
charged candidates
Bool_t PndPidSttAssociatorTask::IsDefaultMassHypo ( )
inline

Definition at line 94 of file PndPidSttAssociatorTask.h.

References fDefaultHypo.

void PndPidSttAssociatorTask::KaonDEDXMeanFunction ( )
protected

Definition at line 219 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, and fKaonDEDXMean.

Referenced by Init().

219  {
220  fKaonDEDXMean = new TF1("kmdedx","[0] * (1./x)**2 + [1] * TMath::Log(x) + [2]", 0.2, 5.);
221  if(fDefaultHypo == kTRUE) fKaonDEDXMean->SetParameters(1.56819e+00,8.85371e-01,4.13682e+00);
222  else fKaonDEDXMean->SetParameters(1.56819e+00,8.85371e-01,4.13682e+00);
223 
224 }
void PndPidSttAssociatorTask::KaonDEDXSigmaFunction ( )
protected

Definition at line 264 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, and fKaonDEDXSigma.

Referenced by Init().

264  {
265  fKaonDEDXSigma = new TF1("ksdedx","[0] * (1./x)**2 + [1] * TMath::Log(x) + [2]", 0.2, 5.);
266  if(fDefaultHypo == kTRUE) fKaonDEDXSigma->SetParameters(2.30775e-01,8.81697e-02,4.20122e-01);
267  else fKaonDEDXSigma->SetParameters(2.30775e-01,8.81697e-02,4.20122e-01);
268 
269 }
void PndPidSttAssociatorTask::MuonDEDXMeanFunction ( )
protected

Definition at line 205 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, and fMuonDEDXMean.

Referenced by Init().

205  {
206  fMuonDEDXMean = new TF1("mumdedx","[0] * (1./x)**2 + [1] * TMath::Log(x) + [2]", 0.2, 5.);
207  if(fDefaultHypo == kTRUE) fMuonDEDXMean->SetParameters(8.84580e-02,7.70377e-01,5.38858e+00);
208  else fMuonDEDXMean->SetParameters(8.84580e-02,7.70377e-01,5.38858e+00);
209 
210 }
void PndPidSttAssociatorTask::MuonDEDXSigmaFunction ( )
protected

Definition at line 250 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, and fMuonDEDXSigma.

Referenced by Init().

250  {
251  fMuonDEDXSigma = new TF1("musdedx","[0] * (1./x)**2 + [1] * TMath::Log(x) + [2]", 0.2, 5.);
252  if(fDefaultHypo == kTRUE) fMuonDEDXSigma->SetParameters(8.54877e-03,2.96974e-02,5.51581e-01);
253  else fMuonDEDXSigma->SetParameters(8.54877e-03,2.96974e-02,5.51581e-01);
254 
255 }
void PndPidSttAssociatorTask::PionDEDXMeanFunction ( )
protected

Definition at line 212 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, and fPionDEDXMean.

Referenced by Init().

212  {
213  fPionDEDXMean = new TF1("pimdedx","[0] * (1./x)**2 + [1] * TMath::Log(x) + [2]", 0.2, 5);
214  if(fDefaultHypo == kTRUE) fPionDEDXMean->SetParameters(1.28760e-01,7.53150e-01,5.22487e+00);
215  else fPionDEDXMean->SetParameters(1.28760e-01,7.53150e-01,5.22487e+00);
216 
217 }
void PndPidSttAssociatorTask::PionDEDXSigmaFunction ( )
protected

Definition at line 257 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, and fPionDEDXSigma.

Referenced by Init().

257  {
258  fPionDEDXSigma = new TF1("pisdedx","[0] * (1./x)**2 + [1] * TMath::Log(x) + [2]", 0.2, 5.);
259  if(fDefaultHypo == kTRUE) fPionDEDXSigma->SetParameters(1.49778e-02,3.05617e-02,5.43355e-01);
260  else fPionDEDXSigma->SetParameters(1.49778e-02,3.05617e-02,5.43355e-01);
261 
262 }
void PndPidSttAssociatorTask::ProtonDEDXMeanFunctionH ( )
protected

Definition at line 226 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, and fProtonDEDXMeanH.

Referenced by Init().

226  {
227  fProtonDEDXMeanH = new TF1("pmdedx","[0] * (1./x)**2 + [1] * TMath::Log(x) + [2]", 0.2, 5.);
228  if(fDefaultHypo == kTRUE) fProtonDEDXMeanH->SetParameters(4.16818e+00,6.90343e-01,3.97309e+00);
229  else fProtonDEDXMeanH->SetParameters(4.16818e+00,6.90343e-01,3.97309e+00);
230 
231 }
void PndPidSttAssociatorTask::ProtonDEDXMeanFunctionL ( )
protected

Definition at line 233 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, and fProtonDEDXMeanL.

Referenced by Init().

233  {
234  fProtonDEDXMeanL = new TF1("pmdedx","[0] * (1./x)**2 + [1] * TMath::Log(x) + [2]", 0.2, 5.);
235  if(fDefaultHypo == kTRUE) fProtonDEDXMeanL->SetParameters(6.52530,5.82758,1.86702);
236  else fProtonDEDXMeanL->SetParameters(6.52530,5.82758,1.86702);
237 
238 }
void PndPidSttAssociatorTask::ProtonDEDXSigmaFunctionH ( )
protected

Definition at line 277 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, fProtonDEDXSigmaH, and fProtonDEDXSigmaL.

Referenced by Init().

277  {
278  fProtonDEDXSigmaH = new TF1("psdedx","[0] * (1./x)**2 + [1] * TMath::Log(x) + [2]", 0.2, 5.);
279  if(fDefaultHypo == kTRUE) fProtonDEDXSigmaH->SetParameters(5.17593e-01,6.68813e-02,4.59503e-01);
280  else fProtonDEDXSigmaL->SetParameters(5.17593e-01,6.68813e-02,4.59503e-01);
281 
282 }
void PndPidSttAssociatorTask::ProtonDEDXSigmaFunctionL ( )
protected

Definition at line 271 of file PndPidSttAssociatorTask.cxx.

References fDefaultHypo, and fProtonDEDXSigmaL.

Referenced by Init().

271  {
272  fProtonDEDXSigmaL = new TF1("psdedx","[0] * (1./x)**2 + [1] * TMath::Log(x) + [2]", 0.2, 5.);
273  if(fDefaultHypo == kTRUE) fProtonDEDXSigmaL->SetParameters(1.11867e+00,1.78621e+00,-1.01217e-01);
274  else fProtonDEDXSigmaL->SetParameters(1.11867e+00,1.78621e+00,-1.01217e-01);
275 
276 }
void PndPidSttAssociatorTask::SetDefaultMassHypo ( Bool_t  hypo)
inline

Definition at line 93 of file PndPidSttAssociatorTask.h.

References fDefaultHypo.

void PndPidSttAssociatorTask::SetOutputBranch ( TString  branch)
inline
void PndPidSttAssociatorTask::SetVerbose ( Bool_t  verb)
inline

Definition at line 90 of file PndPidSttAssociatorTask.h.

References fVerbose.

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

Member Data Documentation

Int_t PndPidSttAssociatorTask::fDefaultHypo
TF1* PndPidSttAssociatorTask::fElectronDEDXMean
protected
TF1* PndPidSttAssociatorTask::fElectronDEDXSigma
protected

Definition at line 62 of file PndPidSttAssociatorTask.h.

Referenced by DoPidMatch(), and ElectronDEDXSigmaFunction().

TF1* PndPidSttAssociatorTask::fKaonDEDXMean
protected
TF1* PndPidSttAssociatorTask::fKaonDEDXSigma
protected

Definition at line 65 of file PndPidSttAssociatorTask.h.

Referenced by DoPidMatch(), and KaonDEDXSigmaFunction().

TF1* PndPidSttAssociatorTask::fMuonDEDXMean
protected
TF1* PndPidSttAssociatorTask::fMuonDEDXSigma
protected

Definition at line 63 of file PndPidSttAssociatorTask.h.

Referenced by DoPidMatch(), and MuonDEDXSigmaFunction().

TClonesArray* PndPidSttAssociatorTask::fPidChargedCand
protected

Definition at line 30 of file PndPidSttAssociatorTask.h.

Referenced by Exec(), and Init().

TClonesArray* PndPidSttAssociatorTask::fPidChargedProb
protected

charged candidates

Definition at line 31 of file PndPidSttAssociatorTask.h.

Referenced by Exec(), Init(), and PndPidSttAssociatorTask().

TF1* PndPidSttAssociatorTask::fPionDEDXMean
protected
TF1* PndPidSttAssociatorTask::fPionDEDXSigma
protected

Definition at line 64 of file PndPidSttAssociatorTask.h.

Referenced by DoPidMatch(), and PionDEDXSigmaFunction().

TF1* PndPidSttAssociatorTask::fProtonDEDXMeanH
protected
TF1* PndPidSttAssociatorTask::fProtonDEDXMeanL
protected
TF1* PndPidSttAssociatorTask::fProtonDEDXSigmaH
protected

Definition at line 67 of file PndPidSttAssociatorTask.h.

Referenced by DoPidMatch(), and ProtonDEDXSigmaFunctionH().

TF1* PndPidSttAssociatorTask::fProtonDEDXSigmaL
protected
TString PndPidSttAssociatorTask::fTrackBranchNamePidHypo
protected

Definition at line 33 of file PndPidSttAssociatorTask.h.

Referenced by Init().


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