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

#include <PndMvdPidIdealTask.h>

Inheritance diagram for PndMvdPidIdealTask:

Public Member Functions

 PndMvdPidIdealTask (const TString algoName="ideal")
 
 PndMvdPidIdealTask (PndMvdPidIdealTask &)=delete
 
PndMvdPidIdealTaskoperator= (PndMvdPidIdealTask &)=delete
 
virtual void SetParContainers ()
 
virtual InitStatus Init ()
 
virtual void Exec (Option_t *opt)
 

Private Member Functions

void Register ()
 
void Reset ()
 
void ProduceHits ()
 
 ClassDef (PndMvdPidIdealTask, 1)
 

Private Attributes

TString fBranchName
 
TString fAlgoName
 
TClonesArray * fPointArray
 
TClonesArray * fMcArray
 
TClonesArray * fTrackOutputArray
 

Detailed Description

Definition at line 35 of file PndMvdPidIdealTask.h.

Constructor & Destructor Documentation

PndMvdPidIdealTask::PndMvdPidIdealTask ( const TString  algoName = "ideal")

Default constructor

Definition at line 37 of file PndMvdPidIdealTask.cxx.

37  : FairTask("Digitization task for PANDA PndMvd"),
38  fBranchName("MVDPoint"),
39  fAlgoName(algoName),
40  fPointArray(NULL),
41  fMcArray(NULL),
42  fTrackOutputArray(NULL)
43 {
44 }
TClonesArray * fMcArray
TClonesArray * fTrackOutputArray
TClonesArray * fPointArray
PndMvdPidIdealTask::PndMvdPidIdealTask ( PndMvdPidIdealTask )
delete

Member Function Documentation

PndMvdPidIdealTask::ClassDef ( PndMvdPidIdealTask  ,
 
)
private
void PndMvdPidIdealTask::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 89 of file PndMvdPidIdealTask.cxx.

References PndMvdIdealPidAlgo::CalcLikelihood(), PndMvdSimplePidAlgo::CalcLikelihood(), PndMvdAdvancedPidAlgo::CalcLikelihood(), dE, dx, fAlgoName, fPointArray, fTrackOutputArray, PndSdsMCPoint::GetPosition(), PndSdsMCPoint::GetPositionOut(), i, and track.

90 {
91  if ( ! fTrackOutputArray ) Fatal("Exec", "No fTrackOutputArray");
92  fTrackOutputArray->Delete();
93 
94  // the dE/dx information of PndmvdPidCand is obtained by PndMvdMCPoints
95  std::map<int, PndMvdPidCand*> pidcand;
96 
97  for(int i=0;i<fPointArray->GetEntriesFast();i++) {
98  PndSdsMCPoint* mvdpoint=(PndSdsMCPoint*) fPointArray->At(i);
99  int track = mvdpoint->GetTrackID();
100  if(!pidcand[track])
101  pidcand[track]=new PndMvdPidCand();
102  double dx = ( mvdpoint->GetPositionOut() - mvdpoint->GetPosition() ).Mag();
103  double dE = mvdpoint->GetEnergyLoss();
104  TVector3 momentum;
105  mvdpoint->Momentum(momentum);
106  if(dx>0)
107  pidcand[track]->AddMvdHit(dE, dx, momentum.Mag());
108  }
109 
110  // invoke likelohood calculation, TClonesArray output
111  for(std::map<int, PndMvdPidCand*>::iterator it=pidcand.begin();it!=pidcand.end();it++) {
112  int track = it->first;
113  if (fAlgoName=="ideal")
114  PndMvdIdealPidAlgo::CalcLikelihood(pidcand[track]);
115  else if (fAlgoName=="simple")
116  PndMvdSimplePidAlgo::CalcLikelihood(pidcand[track]);
117  else if (fAlgoName=="advanced")
119 
120  int size = fTrackOutputArray->GetEntriesFast();
121  new ((*fTrackOutputArray)[size]) PndMvdPidCand(*(pidcand[track]));
122  }
123 }
static void CalcLikelihood(PndMvdPidCand *cand)
Int_t i
Definition: run_full.C:25
PndRiemannTrack track
Definition: RiemannTest.C:33
TVector3 GetPositionOut() const
Definition: PndSdsMCPoint.h:91
Double_t dE
Definition: anasim.C:58
static void CalcLikelihood(PndMvdPidCand *cand)
static void CalcLikelihood(PndMvdPidCand *cand)
TClonesArray * fTrackOutputArray
TClonesArray * fPointArray
double dx
TVector3 GetPosition() const
Definition: PndSdsMCPoint.h:90
InitStatus PndMvdPidIdealTask::Init ( )
virtual

Definition at line 47 of file PndMvdPidIdealTask.cxx.

References fAlgoName, fBranchName, fMcArray, fPointArray, and fTrackOutputArray.

48 {
49  // Get RootManager
50  FairRootManager* ioman = FairRootManager::Instance();
51  if ( ! ioman ) {
52  std::cout << "-E- PndMvdPidIdealTask::Init: "<< "RootManager not instantiated!" << std::endl;
53  return kFATAL; }
54 
55  // Get input array
56  fPointArray = (TClonesArray*) ioman->GetObject(fBranchName);
57  if ( ! fPointArray ) {
58  std::cout << "-W- PndMvdPidIdealTask::Init: "<< "No "<<fBranchName<<" array!" << std::endl;
59  return kERROR; }
60 
61  // Get MCTruth collection
62  fMcArray=(TClonesArray*) ioman->GetObject("MCTrack");
63  if(fMcArray==0) {
64  std::cout << "-W- PndMvdPidIdealTask::Init: "<< "No McTruth array!" << std::endl;
65  return kERROR; }
66 
67  // Create and register output array
68  fTrackOutputArray = new TClonesArray("PndMvdPidCand");
69  ioman->Register("PndMvdPidCand", "PndMvd ideal tracklets", fTrackOutputArray, kTRUE);
70 
71  if (fAlgoName!="ideal"&&fAlgoName!="simple"&&fAlgoName!="advanced") {
72  std::cout << "-W- PndMvdPidIdealTask::Init: "<< "No pid algorithm named '"<< fAlgoName <<"'! Names are 'ideal', 'simple', 'advanced'" << std::endl;
73  return kERROR;
74  }
75  return kSUCCESS;
76 }
TClonesArray * fMcArray
TClonesArray * fTrackOutputArray
TClonesArray * fPointArray
PndMvdPidIdealTask& PndMvdPidIdealTask::operator= ( PndMvdPidIdealTask )
delete
void PndMvdPidIdealTask::ProduceHits ( )
private
void PndMvdPidIdealTask::Register ( )
private
void PndMvdPidIdealTask::Reset ( )
private
void PndMvdPidIdealTask::SetParContainers ( )
virtual

Virtual method Init

Definition at line 78 of file PndMvdPidIdealTask.cxx.

79 {
80  // Get Base Container
81 // FairRun* ana = FairRun::Instance();
82 // FairRuntimeDb* rtdb=ana->GetRuntimeDb();
83 
84 }

Member Data Documentation

TString PndMvdPidIdealTask::fAlgoName
private

Definition at line 56 of file PndMvdPidIdealTask.h.

Referenced by Exec(), and Init().

TString PndMvdPidIdealTask::fBranchName
private

Definition at line 55 of file PndMvdPidIdealTask.h.

Referenced by Init().

TClonesArray* PndMvdPidIdealTask::fMcArray
private

Definition at line 60 of file PndMvdPidIdealTask.h.

Referenced by Init().

TClonesArray* PndMvdPidIdealTask::fPointArray
private

Input array of Points

Definition at line 59 of file PndMvdPidIdealTask.h.

Referenced by Exec(), and Init().

TClonesArray* PndMvdPidIdealTask::fTrackOutputArray
private

Output array of Hits

Definition at line 62 of file PndMvdPidIdealTask.h.

Referenced by Exec(), and Init().


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