8 #include "TClonesArray.h"
9 #include "TParticlePDG.h"
12 #include "FairRootManager.h"
14 #include "FairRuntimeDb.h"
15 #include "FairRunAna.h"
26 FairTask(
"MVD Riemann Track Finder"),
36 fTrackCandArray(NULL),
37 fRiemannTrackArray(NULL),
39 fCorrectedSttHitArray(NULL),
45 fTimeGapFunctor(NULL),
58 FairRuntimeDb*
rtdb = FairRunAna::Instance()->GetRuntimeDb();
64 InitStatus stat=kSUCCESS;
71 FairRootManager* ioman = FairRootManager::Instance();
75 std::cout <<
"-E- PndMvdSttGemRiemannTrackFinderTask::Init: "
76 <<
"RootManager not instantiated!" << std::endl;
88 std::cout <<
"-W- PndMvdSttGemRiemannTrackFinderTask::Init: " <<
"No Branch Names given with AddHitBranch(TString branchName)! Standard BranchNames taken!" << std::endl;
121 std::cout <<
"-I- PndMvdSttGemRiemannTrackFinderTask: Initialisation successfull" << std::endl;
131 std::cout <<
"-W- AddHitBranch has to be called before the Init() of the task!" << std::endl;
149 Fatal(
"Exec",
"No trackCandArray");
161 FairRootManager *ioman = FairRootManager::Instance();
164 std::cout << std::endl;
165 std::cout <<
"------------- event " <<
fEventNr++ <<
"----------------" << std::endl;
170 if (
fVerbose > 1) std::cout <<
"TrackFinder.AddHits: " << ioman->GetBranchId(
fHitBranch[i]) << std::endl;
186 if (
fVerbose > 0) std::cout <<
" -I- PndMvdSttGemRiemannTrackFinderTask::Exec : Found Tracks: " << trackFinder.
NTracks() <<
" in event no. " <<
fEventNr << std::endl;
187 if (
fVerbose > 0) std::cout <<
" -I- PndMvdSttGemRiemannTrackFinderTask::Exec : ----------------" << std::endl;
190 for (
int i = 0;
i < trackFinder.
NTracks();
i++){
206 if (myCand->GetTimeStamp() == 0){
207 myTrack->SetTimeStamp(0.0001 * (
i+1));
208 myCand->SetTimeStamp(0.0001 * (
i+1));
211 myTrack->SetTimeStamp(myCand->GetTimeStamp());
212 myTrack->SetTimeStampError(myCand->GetTimeStampError());
214 myTrack->SetLink(FairLink(
"MVDRiemannTrackCand",
i));
219 std::cout <<
i <<
": ";
223 for (
size_t j = 0; j < myCand->
GetNHits(); j++){
224 if (myCand->GetLink(j).GetType() == FairRootManager::Instance()->GetBranchId(
"STTHit")){
225 PndSttHit* mySttHit = (
PndSttHit*)FairRootManager::Instance()->GetCloneOfLinkData(myCand->GetLink(j));
228 FairHit correctedFairHit;
229 correctedFairHit.SetXYZ(correctedSttHit.
x().X(), correctedSttHit.
x().Y(), correctedSttHit.
z());
251 std::cout <<
"Track " <<
i << std::endl;
252 std::cout <<
"Links: ";
253 ((FairMultiLinkedData*) myCand)->Print();
254 std::cout << std::endl;
269 TClonesArray* tempArray = (TClonesArray*) FairRootManager::Instance()->GetObject(branchName);
271 std::cout <<
"-W- PndMvdSttGemRiemannTrackFinderTask::Init: " <<
"No hitArray for BranchName " << branchName.Data() << std::endl;
279 if (FairRunAna::Instance()->IsTimeStamp()){
284 std::cout <<
"PixelHits: " <<
fHitArray[0]->GetEntriesFast() << std::endl;
286 FairTimeStamp* data = (FairTimeStamp*)
fHitArray[0]->
At(1);
287 eventTime = data->GetTimeStamp();
288 std::cout <<
"EventTime: " << eventTime << std::endl;
290 std::cout <<
"StripHits: " <<
fHitArray[1]->GetEntriesFast() << std::endl;
virtual InitStatus ReInit()
void SetVerbose(int val)
Adds one new hit to the array of hits.
PndRiemannHit correctSttHit(PndSttHit *mySttHit)
PndMvdSttGemRiemannTrackFinderTask()
BinaryFunctor * fStopFunctor
cout<< "POINTs for new FwEndCap == "<< tsim-> GetEntriesFast()
void SetTrackCandRef(PndTrackCand *candPointer)
void AddHitBranch(TString branchName)
virtual void Exec(Option_t *opt)
TClonesArray * fCorrectedSttHitArray
void AddHits(TClonesArray *hits, Int_t branchId)
BinaryFunctor * fTimeGapFunctor
virtual void SetParContainers()
PndGeoSttPar * fSttParameters
cout<< "blue = Monte Carlo "<< endl;cout<< "red = Helix Hit "<< endl;cout<< "green = Center Of Tubes "<< endl;for(Int_t k=0;k< track->GetEntriesFast();k++){PndSttTrack *stttrack=(PndSttTrack *) track-> At(k)
std::vector< TClonesArray * > fHitArray
TClonesArray * fTrackCandArray
std::vector< PndTrackCand > GetTrackCand()
Returns the hits belonging to track i.
TClonesArray * fTrackArray
TClonesArray * FillTubeArray()
virtual ~PndMvdSttGemRiemannTrackFinderTask()
void SetMaxSZDist(double val)
static PndGeoHandling * Instance()
virtual InitStatus Init()
void SetMinPointDist(double val)
PndLheTrackFinder * trackFinder
PndRiemannTrack GetTrack(int i)
Returns the number of found tracks.
void SetMaxPlaneDistance(double val)
void SetSttTubeArray(TClonesArray *SttTubeArray)
const TVector3 & x() const
TClonesArray * fTubeArray
void SetMinNumberOfHits(int val)
void FindTracks()
Main function to start the riemann track finding.
void InitHitArray(TString branchName)
void SetCutDistH(TH2F *hist)
void SetTrackCand(const PndTrackCand &cand)
virtual void FinishEvent()
void SetMaxSZChi2(double val)
ClassImp(PndMvdSttGemRiemannTrackFinderTask)
std::vector< TString > fHitBranch
PndTrack GetPndTrack(int i, double B)
Returns the track with the index i.
void SetCutChi2H(TH2F *hist)