28 #include "FairRootManager.h"
29 #include "TClonesArray.h"
32 #include "FairRunAna.h"
33 #include "FairRuntimeDb.h"
34 #include "FairField.h"
43 #include "FairGeanePro.h"
44 #include "FairTrackParP.h"
50 : FairTask(
"Ideal Pattern Reco"), fPersistence(kFALSE),fEventNr(0)
63 InitStatus stat=kERROR;
72 FairRootManager* ioman= FairRootManager::Instance();
76 Error(
"PndHypIdealPRTask::Init",
"RootManager not instantiated!");
83 TClonesArray* ar=(TClonesArray*) ioman->GetObject(iter->second);
85 Error(
"PndHypDPRTask::Init",
"point-array %s not found!",iter->second.Data());
95 fMcArray=(TClonesArray*) ioman->GetObject(
"MCTrack");
97 Error(
"PndHypDPRTask::Init",
"mctrack-array not found!");
101 fPointArray=(TClonesArray*) ioman->GetObject(
"HypPoint");
103 Error(
"PndHypDPRTask::Init",
"hyp hit-array not found!");
107 fSdsArray=(TClonesArray*) ioman->GetObject(
"MVDPoint");
109 Error(
"PndHypDPRTask::Init",
"mvd hit-array not found!");
120 fPH=
new TH1D(
"pH",
"p",1000,0.02,0.3);
123 std::cout <<
"-I- PndHypIdealPRTask: Initialisation successfull" << std::endl;
133 std::cout<<
"PndHypIdealPRTask::Exec"<<std::endl;
135 if(
fTrackArray==0) Fatal(
"PndHypIdealPR::Exec)",
"No TrackArray");
140 std::cout<<
"<<<<< Event "<<
fEventNr++<<
" <<<"<<std::endl;
143 std::map<unsigned int,TClonesArray*>::iterator iter=
fHitBranchMap.begin();
152 for(Int_t ip=0; ip<np; ++ip){
159 else if(iter->first==3){
163 if(point==0)
continue;
165 unsigned int id=point->GetTrackID();
167 if(
id>10000)
continue;
189 std::map<Int_t ,GFTrackCand*>::iterator candIter=
fTrackCandMap.begin();
197 unsigned int detId, hitId;
198 cand->
getHit(0, detId, hitId);
203 if(detId==2) pointF =(FairMCPoint*)
fPointArray->At(myHit->GetRefIndex());
204 std::cout <<
"Detector no. " << detId <<
": "<< *pointF;
205 pointF->Momentum(frmom);
206 fPH->Fill(frmom.Mag());
217 std::cout<<
fTrackArray->GetEntriesFast()<<
" tracks created "<<std::endl;
245 std::cout<<
" particle "<<pdg<<std::endl;
252 else { q=TDatabasePDG::Instance()->GetParticle(pdg)->Charge()/3.;
279 if(ion>1000000000&&(ion<1010000000))
284 cout<<
" ion charge "<<Z<<endl;
289 if((ion>1010000000||ion>1020000000))
297 cout<<L<<
" hypernuclei charge "<<Z<<endl;
306 for (std::map<Int_t,GFTrackCand*>::const_iterator ci=
fTrackCandMap.begin();
315 TFile*
file = FairRootManager::Instance()->GetOutFile();
317 file->mkdir(
"HypPrefit");
318 file->cd(
"HypPrefit");
Int_t GetChargeIon(Int_t ion)
TClonesArray * fPointArray
std::map< unsigned int, TString > fHitBranchNameMap
unsigned int getNHits() const
TVector3 GetMomentum() const
virtual InitStatus ReInit()
std::map< unsigned int, TClonesArray * > fHitBranchMap
virtual InitStatus Init()
void setMcTrackId(int i)
set the MCT track id, for MC simulations
void setTrackSeed(const TVector3 &pos, const TVector3 &direction, const double qop)
set the seed values for track: pos, direction, q/p
void getHit(unsigned int i, unsigned int &detId, unsigned int &hitId) const
Get detector ID and cluster index (hitId) for hit number i.
void AddHitToTrack(Int_t trackID, Int_t detnum, Int_t iHit)
Track candidate – a list of cluster indices.
int hit(Int_t nEvents=0, TString inFile="sim.root", TString parFile="par.root", TString inDigi="digi.root", TString outFile="hit.root", Int_t timeBased=0)
TClonesArray * fTrackArray
void setPdgCode(int pdgCode)
set a particle hypothesis in form of a PDG code
std::map< Int_t, GFTrackCand * > fTrackCandMap
TVector3 GetStartVertex() const
virtual void Exec(Option_t *opt)