29 #include "FairRootManager.h"
30 #include "TClonesArray.h"
36 #include "../../pnddata/SdsData/PndSdsMCPoint.h"
37 #include "../../pnddata/SdsData/PndSdsHit.h"
38 #include "../../GenfitTools/recohits/PndSdsRecoHit.h"
42 #include "FairMCPoint.h"
44 #include "LSLTrackRep.h"
52 #include "TGeoTrack.h"
53 #include "TGeoManager.h"
59 : FairTask(
"Kalman Filter"), fPersistence(kFALSE),fSmooth(kFALSE),fUseMVD(false),fEvt(0)
76 FairRootManager* ioman= FairRootManager::Instance();
80 Error(
"PndHypDKalmanTask::Init",
"RootManager not instantiated!");
100 std::map<unsigned int,TString>::iterator iter=
fHitBranchMap.begin();
103 TClonesArray* har=(TClonesArray*) ioman->GetObject(
"HypHit");
109 Error(
"PndHypKalmanTask::Init",
"Hit array not found");
118 TClonesArray* sar=(TClonesArray*) ioman->GetObject(
"MVDHit");
121 Error(
"PndHypKalmanTask::Init",
"Hit array not found");
144 fPH=
new TH1D(
"pH",
"p",500,0.02,0.7);
145 fChi2H=
new TH1D(
"chi2H",
"chi2",100,0,20);
146 fXresH=
new TH1D(
"xres",
"xres",100,-5,5);
147 fYresH=
new TH1D(
"yres",
"yres",100,-5,5);
148 fXresFitH=
new TH1D(
"xresfit",
"xres after fit",100,-5,5);
149 fYresFitH=
new TH1D(
"yresfit",
"yres after fit",100,-5,5);
150 fPEnd=
new TH1D(
"pPre",
"Endpoint",500,0.02,0.7);
151 fPull=
new TH1D(
"pPull",
"Pull",500,-0.3,0.3);
152 std::cout <<
"-I- gGeoManager = "<<
gGeoManager << std::endl;
161 std::cout<<
"PndHypDKalmanTask::Exec Event "<<
fEvt++<<std::endl;
175 for(Int_t itr=0;itr<ntracks;++itr){
182 std::cout<<trk->
getNumHits()<<
" hits in track "
187 std::cout << e.
what() << std::endl;
211 std::cout<<
"*** FITTER EXCEPTION ***"<<std::endl;
212 std::cout<<e.
what()<<std::endl;
216 std::cout<<
"SUCESSFULL FIT!"<<std::endl;
228 GFDetPlane pl(TVector3(0,0,-55.0),TVector3(1,0,0),TVector3(0,1,0));
235 std::cout<<
" momentum "<<
" "<<trk->
getMom().Mag()<<std::endl;
278 TFile*
file = FairRootManager::Instance()->GetOutFile();
280 file->mkdir(
"PndHypDKalman");
281 file->cd(
"PndHypDKalman");
320 file->Close();
delete file;
unsigned int getNumHits() const
GFRecoHitFactory * fTheRecoHitFactory
Detector plane genfit geometry class.
virtual void Exec(Option_t *opt)
Track object for genfit. genfit algorithms work on these objects.
std::vector< GFAbsRecoHit * > createMany(const GFTrackCand &cand)
Creat a collection of RecoHits.
void addProducer(int detID, GFAbsRecoHitProducer *hitProd)
Register a producer module to the factory.
double getChiSqu() const
Get chi2.
Generic Kalman Filter implementation.
TVector3 getPos() const
Get present position.
virtual const char * what() const
standard error message handling for exceptions. use like "std::cerr << e.what();" ...
void addHitVector(std::vector< GFAbsRecoHit * > hits)
Add collection of hits.
Template class for a hit producer module.
TVector3 getMom() const
Get momentum at the present position.
TGeoManager * gGeoManager
double getRedChiSqu() const
Get chi2/NDF.
std::map< unsigned int, TString > fHitBranchMap
virtual TVector3 getMom(const GFDetPlane &pl)=0
unsigned int getNumReps() const
Get number of track represenatations.
Factory object to create RecoHits from digitized and clustered data.
double getQoverPseed() const
get the seed value for track: qoverp
Track candidate – a list of cluster indices.
void processTrack(GFTrack *trk)
Performs fit on a GFTrack.
static PndGeoHandling * Instance()
GFAbsTrackRep * getTrackRep(int id) const
Accessor for track representations.
void WriteHistograms(const TString &filename)
GFAbsTrackRep * getCardinalRep() const
Get cardinal track representation.
virtual void Print() const
const GFTrackCand & getCand() const
Exception class for error handling in GENFIT (provides storage for diagnostic information) ...
virtual InitStatus Init()
TClonesArray * fTrackArray
void setNumIterations(Int_t i)
Set number of iterations for Kalman Filter.