// USE THIS to use helixhits // Panda Headers ---------------------- // This Class' Header ------------------ #include "PndSttKalmanTask2.h" // C/C++ Headers ---------------------- #include #include #include // Collaborating Class Headers -------- #include "FairRootManager.h" #include "TClonesArray.h" #include "Track.h" #include "MeasurementFactory.h" #include "AbsMeasurement.h" #include "TGeoTrack.h" #include "TGeoManager.h" #include "PndSttRecoHit.h" #include "PndSttHelixHit.h" #include "RKTrackRep.h" #include "Exception.h" #include "KalmanFitter.h" #include "FairRootManager.h" #include "FairRunAna.h" #include "FairRuntimeDb.h" #include "PndSttTube.h" #include "PndSttRecoHitProducer.h" #include "PndSttMapCreator.h" using namespace std; // Class Member definitions ----------- PndSttKalmanTask2::PndSttKalmanTask2(){ fVerbose = 0; } PndSttKalmanTask2::~PndSttKalmanTask2(){} InitStatus PndSttKalmanTask2::Init() { counterevt = 0; cout << "PndSttKalmanTask2::Init()" << endl; FairRootManager *ioman = FairRootManager::Instance(); if (!ioman) { cout << "-E- PndSttRecoHirProducer: " << "RootManager not instantised!" << endl; return kFATAL; } // open STTTrack array fTrackArray=(TClonesArray*) ioman->GetObject("Track"); if(fTrackArray==0){ Error("PndSttKalmanTask2::Init","track-array not found!"); return kERROR; } PndSttMapCreator *mapper = new PndSttMapCreator(fSttParameters); TClonesArray *tubeAr = mapper->FillTubeArray(); // Build hit factory ----------------------------- _theRecoHitFactory = new genfit::MeasurementFactory(); TClonesArray* ar=(TClonesArray*) ioman->GetObject("SttHelixHit"); if(ar==0){ Error("PndSttKalmanTask2::Init","SttHeliHit array not found!"); } else{ // use helix hit _theRecoHitFactory->addProducer(FairRootManager::Instance()->GetBranchId("SttHelixHit"),new PndSttRecoHitProducer(ar, tubeAr)); } genfit::Exception::quiet(true); return kSUCCESS; } // CHECK added void PndSttKalmanTask2::SetParContainers() { FairRuntimeDb* rtdb = FairRunAna::Instance()->GetRuntimeDb(); fSttParameters = (PndGeoSttPar*) rtdb->getContainer("PndGeoSttPar"); } void PndSttKalmanTask2::Exec(Option_t* opt) { counterevt++; if(fTrackArray) { Int_t ntracks=fTrackArray->GetEntriesFast(); // cout << "ntracks " << ntracks << endl; for(Int_t itr=0;itrAt(itr); trk->addHitVector(_theRecoHitFactory->createMany(trk->getCand())); if(fVerbose >= 2) std::cout<getNumHits()<<" hits in track " <