29 #include "FairRootManager.h"
30 #include "TClonesArray.h"
31 #include "FairRunAna.h"
33 #include "TDatabasePDG.h"
35 #include "FairMCPoint.h"
36 #include "../../pnddata/SdsData/PndSdsMCPoint.h"
37 #include "../../pnddata/SdsData/PndSdsHit.h"
38 #include "../../GenfitTools/recohits/PndSdsRecoHit.h"
43 #include "FairField.h"
52 #include "TGeoTrack.h"
53 #include "TGeoManager.h"
54 #include "TLorentzVector.h"
57 #include "TDatabasePDG.h"
58 #include "FairTrackParH.h"
60 #include "LSLTrackRep.h"
62 #include "FairGeanePro.h"
68 : FairTask(
"Kalman Filter"), fPersistence(kFALSE)
85 FairRootManager* ioman= FairRootManager::Instance();
89 Error(
"PndHypKalmanTask::Init",
"RootManager not instantiated!");
98 Error(
"PndHypKalmanTask::Init",
"track-array not found!");
106 std::map<unsigned int,TString>::iterator iter=
fHitBranchMap.begin();
111 TClonesArray* har=(TClonesArray*) ioman->GetObject(
"HypHit");
117 Error(
"PndHypKalmanTask::Init",
"Hit array not found");
125 TClonesArray* sar=(TClonesArray*) ioman->GetObject(
"MVDHit");
128 Error(
"PndHypKalmanTask::Init",
"Hit array not found");
139 fTrArray =
new TClonesArray(
"GFTrack");
145 fPH=
new TH1D(
"pH",
"p",100,0.4,0.6);
146 fChi2H=
new TH1D(
"chi2H",
"chi2",100,0,20);
156 std::cout<<
"PndHypKalmanTask::Exec"<<std::endl;
158 if(
fTrArray==0) Fatal(
"Kalman::Exec)",
"No TrackArray");
167 std::cout<<
"ntracks="<<ntracks<<
" Evil Event! skipping"<<std::endl;
177 for(Int_t itr=0;itr<ntracks;++itr){
179 std::cout<<
"starting track"<<itr<<std::endl;
181 unsigned int detid=12345, index=12345;
184 fField= FairRunAna::Instance()->GetField();
192 std::cout<<trcnd->
getNHits()<<std::endl;
197 TVector3 StartPosErr = TVector3(0,0,0);
201 TVector3 StartMomErr = TVector3(0,0,0);
202 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
203 TParticlePDG *
fParticle= fdbPDG->GetParticle(PDGCode);
204 Double_t fCharge= fParticle->Charge();
206 TVector3 dir=StartMom.Unit();
207 double dxdz=dir.X()/dir.Z();
208 double dydz=dir.Y()/dir.Z();
210 rep=
new LSLTrackRep(StartPos.Z(),StartPos.X(),StartPos.Y(),dxdz,dydz,trcnd->
getQoverPseed(),
211 StartPosErr.X(),StartPosErr.Y(),0.1,0.1,0.1,
b);
229 std::cout<<
" "<<
"caca de vaca "<<std::endl;
242 std::cout << e.
what();
247 std::cout<<
"starting fit"<<std::endl;
251 std::cout<<e.
what()<<std::endl;
255 if(trk->getTrackRep(0)->getStatusFlag()==0){
257 GFDetPlane plane(TVector3(0,0,0.1),TVector3(1,0,0),TVector3(0,1,0));
258 TVector3 p3=trk->getTrackRep(0)->getMom(plane);
260 std::cout<<
" oye"<<p<<std::endl;
273 std::cout<<
"Fitting done"<<std::endl;
282 TFile*
file =
new TFile(filename,
"UPDATE");
286 if(file->cd(
"Kalman")) file->Delete(
"Kalman;*");
287 file->mkdir(
"Kalman");
Base Class for genfit track representations. Defines interface for track parameterizations.
void WriteHistograms(const TString &filename)
Detector plane genfit geometry class.
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.
Generic Kalman Filter implementation.
virtual const char * what() const
standard error message handling for exceptions. use like "std::cerr << e.what();" ...
unsigned int getNHits() const
Template class for a hit producer module.
void setCandidate(const GFTrackCand &cand, bool doreset=false)
set track candidate
TVector3 getPosSeed() const
get the seed value for track: pos
virtual void Exec(Option_t *opt)
TVector3 getDirSeed() const
get the seed value for track: direction
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.
int getPdgCode() const
get the PDG code
virtual InitStatus Init()
Exception class for error handling in GENFIT (provides storage for diagnostic information) ...
TClonesArray * fTrackArray
GFRecoHitFactory * fTheRecoHitFactory
std::map< unsigned int, TString > fHitBranchMap
Singleton which provides access to magnetic field for track representations.