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

#include <PndHypPidIdealTask.h>

Inheritance diagram for PndHypPidIdealTask:

Public Member Functions

 PndHypPidIdealTask (const TString algoName="ideal")
 
virtual void SetParContainers ()
 
virtual InitStatus Init ()
 
virtual void Exec (Option_t *opt)
 

Private Member Functions

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

Private Attributes

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

Detailed Description

Definition at line 36 of file PndHypPidIdealTask.h.

Constructor & Destructor Documentation

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

Default constructor

Definition at line 38 of file PndHypPidIdealTask.cxx.

References fAlgoName, and fBranchName.

38  : FairTask("Digitization task for PANDA PndHyp") {
39  fBranchName = "HypPoint";
40  fAlgoName = algoName;
41 }

Member Function Documentation

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

Virtual method Exec

Definition at line 86 of file PndHypPidIdealTask.cxx.

References PndHypAdvancedPidAlgo::CalcLikelihood(), dE, dx, fAlgoName, fPointArray, fTrackOutputArray, i, PndHypPoint::PositionIn(), PndHypPoint::PositionOut(), and track.

87 {
88  if ( ! fTrackOutputArray ) Fatal("Exec", "No fTrackOutputArray");
89  fTrackOutputArray->Clear();
90 
91  // the dE/dx information of PndmvdPidCand is obtained by PndHypMCPoints
92  std::map<int, PndHypPidCand*> pidcand;
93  TVector3 Out,In;
94 
95  for(int i=0;i<fPointArray->GetEntriesFast();i++) {
96  PndHypPoint* mvdpoint=(PndHypPoint*) fPointArray->At(i);
97  mvdpoint->PositionOut(Out);
98  mvdpoint->PositionIn(In);
99 
100  int track = mvdpoint->GetTrackID();
101  if(!pidcand[track])
102  pidcand[track]=new PndHypPidCand();
103  double dx = ( Out - In ).Mag();
104  double dE = mvdpoint->GetEnergyLoss();
105  TVector3 momentum;
106  mvdpoint->Momentum(momentum);
107 
108  std::cout<<dE<<" "<<dx<<" "<<momentum.Mag()<<std::endl;
109 
110  if(dx>0)pidcand[track]->AddHypHit(dE, dx, momentum.Mag());
111  }
112 
113  // invoke likelohood calculation, TClonesArray output
114  for(std::map<int, PndHypPidCand*>::iterator it=pidcand.begin();it!=pidcand.end();it++) {
115  int track = it->first;
116  if (fAlgoName=="advanced")
118  std::cout<<" track to be piditized "<<std::endl;
119 
120  int size = fTrackOutputArray->GetEntriesFast();
121  new ((*fTrackOutputArray)[size]) PndHypPidCand(*(pidcand[track]));
122  }
123 }
Int_t i
Definition: run_full.C:25
Double_t dE
Definition: anasim.C:58
void PositionIn(TVector3 &pos)
Definition: PndHypPoint.h:125
static void CalcLikelihood(PndHypPidCand *cand)
PndMCTrack * track
Definition: anaLmdCluster.C:89
double dx
TClonesArray * fPointArray
void PositionOut(TVector3 &pos)
Definition: PndHypPoint.h:128
TClonesArray * fTrackOutputArray
InitStatus PndHypPidIdealTask::Init ( )
virtual

Definition at line 44 of file PndHypPidIdealTask.cxx.

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

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

Virtual method Init

Definition at line 75 of file PndHypPidIdealTask.cxx.

76 {
77  // Get Base Container
78  //FairRunAna* ana = FairRunAna::Instance(); //[R.K. 01/2017] unused variable?
79  //FairRuntimeDb* rtdb=ana->GetRuntimeDb(); //[R.K. 01/2017] unused variable
80 
81 }

Member Data Documentation

TString PndHypPidIdealTask::fAlgoName
private

Definition at line 55 of file PndHypPidIdealTask.h.

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

TString PndHypPidIdealTask::fBranchName
private

Definition at line 54 of file PndHypPidIdealTask.h.

Referenced by Init(), and PndHypPidIdealTask().

TClonesArray* PndHypPidIdealTask::fMcArray
private

Definition at line 59 of file PndHypPidIdealTask.h.

Referenced by Init().

TClonesArray* PndHypPidIdealTask::fPointArray
private

Input array of Points

Definition at line 58 of file PndHypPidIdealTask.h.

Referenced by Exec(), and Init().

TClonesArray* PndHypPidIdealTask::fTrackOutputArray
private

Output array of Hits

Definition at line 61 of file PndHypPidIdealTask.h.

Referenced by Exec(), and Init().


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