15#include "TClonesArray.h"
24#include <FairRootManager.h>
27#include <boost/assign/list_of.hpp>
33using boost::assign::list_of;
44 , fMuchPixelHits(NULL)
48 , fMergerType(
"neares_hit")
49 , fFitterType(
"kalman")
51 , fTrackingWithIOWatch()
82 static Int_t eventNo = 0;
83 cout <<
"CbmLitFindGlobalTracksParallel::Exec eventNo: " << eventNo++ << endl;
90 FairRootManager* ioman = FairRootManager::Instance();
91 if (NULL == ioman) LOG(fatal) <<
"CbmLitFindGlobalTracksParallel: FairRootManager is not instantiated";
94 fStsTracks = (TClonesArray*) ioman->GetObject(
"StsTrack");
95 if (NULL ==
fStsTracks) LOG(fatal) <<
"CbmLitFindGlobalTracksParallel: No StsTrack array!";
99 fTrdHits = (TClonesArray*) ioman->GetObject(
"TrdHit");
101 if (NULL ==
fTrdHits) LOG(fatal) <<
"CbmLitFindGlobalTracksParallel: No TRDHit array!";
106 fMuchPixelHits = (TClonesArray*) ioman->GetObject(
"MuchPixelHit");
108 if (NULL ==
fMuchPixelHits) LOG(fatal) <<
"CbmLitFindGlobalTracksParallel: No MuchPixelHit array!";
113 ioman->Register(
"GlobalTrack",
"Global",
fGlobalTracks, IsOutputBranchPersistent(
"GlobalTrack"));
116 fTrdTracks =
new TClonesArray(
"CbmTrdTrack", 100);
117 ioman->Register(
"TrdTrack",
"Trd",
fTrdTracks, IsOutputBranchPersistent(
"TrdTrack"));
121 fMuchTracks =
new TClonesArray(
"CbmMuchTrack", 100);
122 ioman->Register(
"MuchTrack",
"Much",
fMuchTracks, IsOutputBranchPersistent(
"MuchTrack"));
128 static Bool_t firstTime =
true;
137 finder.
SetPDG(list_of(211));
148 finder.
SetPDG(list_of(211));
159 vector<lit::parallel::LitScalTrack*> lseeds;
160 vector<lit::parallel::LitScalPixelHit*> lhits;
161 vector<lit::parallel::LitScalTrack*> ltracks;
170 Int_t nofSeeds =
fStsTracks->GetEntriesFast();
171 for (Int_t iSeed = 0; iSeed < nofSeeds; iSeed++) {
177 lseeds.push_back(lseed);
182 finder.
DoFind(lhits, lseeds, ltracks);
196 for_each(ltracks.begin(), ltracks.end(),
DeleteObject());
207 set<Int_t> stsTracksSet;
208 Int_t globalTrackNo = 0;
210 Int_t nofTrdTracks =
fTrdTracks->GetEntriesFast();
211 for (Int_t iTrack = 0; iTrack < nofTrdTracks; iTrack++) {
220 Int_t nofMuchTracks =
fMuchTracks->GetEntriesFast();
221 for (Int_t iTrack = 0; iTrack < nofMuchTracks; iTrack++) {
231 for (Int_t iTrack = 0; iTrack <
fStsTracks->GetEntriesFast(); iTrack++) {
233 if (stsTracksSet.find(iTrack) == stsTracksSet.end()) {
242 LOG(info) <<
"CbmLitFindGlobalTracksParallel::PrintStopwatchStatistics:\n "
@ kTrd
Transition Radiation Detector.
@ kMuch
Muon detection system.
Class for conversion between CBMROOT data classes and littrack parallel data classes.
ClassImp(CbmLitFindGlobalTracksParallel)
CBM task for parallel global track reconstruction.
Tracking geometry constructor.
Data class for STS tracks.
Base class for scalar pixel hits.
Parallel implementation of the nearest neighbor tracking algorithm.
void SetMuchTrackIndex(int32_t iMuch)
void SetTrdTrackIndex(int32_t iTrd)
void SetStsTrackIndex(int32_t iSts)
static void LitScalTrackArrayToCbmTrdTrackArray(const vector< lit::parallel::LitScalTrack * > <racks, TClonesArray *tracks)
Convert array of LitScalTrack to array of CbmTrack.
static void FairTrackParamToLitTrackParamScal(const FairTrackParam *par, lit::parallel::LitTrackParamScal *lpar)
Convert FairTrackParam to LitTrackParamScal.
static void CbmPixelHitArrayToLitScalPixelHitArray(const TClonesArray *hits, vector< lit::parallel::LitScalPixelHit * > &lhits)
Convert CbmPixelHit array to LitScalPixelHit arra.
static void LitScalTrackArrayToCbmMuchTrackArray(const vector< lit::parallel::LitScalTrack * > <racks, TClonesArray *tracks)
Convert array of LitScalTrack to array of CbmTrack.
void DetermineSetup()
Determines detector presence using TGeoManager.
string ToString() const
Return string representation of class.
bool GetDet(ECbmModuleId detId) const
Return detector presence in setup.
TClonesArray * fGlobalTracks
TStopwatch fTrackingWithIOWatch
void ReadAndCreateDataBranches()
Reads necessary data branches from the input data files and creates branches for CbmGlobalTrack,...
virtual InitStatus Init()
Inherited from FairTask.
TClonesArray * fMuchTracks
virtual void Finish()
Inherited from FairTask.
TClonesArray * fStsTracks
TStopwatch fTrackingWatch
CbmLitFindGlobalTracksParallel()
Constructor.
virtual ~CbmLitFindGlobalTracksParallel()
Destructor.
virtual void Exec(Option_t *opt)
Inherited from FairTask.
void ConstructGlobalTracks()
Create and fill global tracks.
TClonesArray * fTrdTracks
TClonesArray * fMuchPixelHits
void DoTracking()
Do the track reconstruction.
void PrintStopwatchStatistics()
Print stopwatch statistics.
static CbmLitTrackingGeometryConstructor * Instance()
Return pointer to singleton object.
void GetMuchLayoutScal(lit::parallel::LitDetectorLayoutScal &layout)
Return MUCH detector layout for parallel MUCH tracking in scalar format.
void GetTrdLayoutScal(lit::parallel::LitDetectorLayoutScal &layout)
Return TRD detector layout for TRD parallel tracking in scalar format.
const FairTrackParam * GetParamLast() const
int32_t GetPreviousTrackId() const
void SetPreviousTrackId(unsigned short previousTrackId)
Sets previous trackId.
void SetParamFirst(const LitTrackParamScal ¶m)
Sets first track parameter.
void SetSigmaCoef(const vector< fscal > &sigmaCoef)
void SetChiSqStripHitCut(const vector< fscal > &chiSqStripHitCut)
void SetChiSqPixelHitCut(const vector< fscal > &chiSqPixelHitCut)
void SetDetectorLayout(const LitDetectorLayoutScal &layout)
void DoFind(const vector< lit::parallel::LitScalPixelHit * > &hits, const vector< lit::parallel::LitScalTrack * > &trackSeeds, vector< lit::parallel::LitScalTrack * > &tracks)
Main function for track reconstruction.
void SetNofIterations(int nofIterations)
void SetPDG(const vector< int > &pdg)
void SetMaxNofMissingHits(const vector< int > &maxNofMissingHits)