11 #include "TClonesArray.h"
12 #include "TParticlePDG.h"
15 #include "FairRootManager.h"
17 #include "FairRuntimeDb.h"
18 #include "FairRunAna.h"
19 #include "FairEventHeader.h"
20 #include "FairField.h"
37 FairRuntimeDb*
rtdb = FairRunAna::Instance()->GetRuntimeDb();
42 FairRootManager* ioman = FairRootManager::Instance();
45 std::cout <<
"-E- PndSttCellTrackFinderTask::Init: "
46 <<
"RootManager not instantiated!" << std::endl;
50 fEventHeader = (TClonesArray*) ioman->GetObject(
"EventHeader.");
53 <<
"-W- PndSttCellTrackFinderTask::Init: No EventHeader array! Needed for EventNumber"
59 std::cout <<
"-W- PndSttCellTrackFinderTask::Init: "
60 <<
"No Branch Names given with AddHitBranch(TString branchName)! Standard BranchNames taken!"
65 fHitBranch.push_back(
"fInBranchNamePrefix+STTCombinedSkewedHits");
72 std::cout <<
"No InputBranches containing STTHit data are initialised for the PndSttCellTrackFinderTask" << std::endl;
76 FairField* Field = FairRunAna::Instance()->GetField();
81 Field->GetFieldValue(po,BB);
82 cout<<
"Field Strength: "<<BB[2]/10.<<endl;
104 int *tubeNeighborings = (
int*) calloc(numElements,
sizeof(
int));
124 for (
int j = 0; j < neighbors.GetSize(); ++j) {
132 for (
int j = 0; j < neighbors.GetSize(); ++j) {
138 for (
int j = 0; j < neighbors.GetSize(); ++j) {
142 + 1) - 1)] = neighbors[j];
150 free(tubeNeighborings);
178 std::cout <<
"-I- PndSttCellTrackFinderTask: Initialisation successfull"
193 <<
"====================Begin PndSttCellTrackFinderTask::Exec======================="
201 Fatal(
"Exec",
"No trackCandArray");
243 std::map<int, FairHit*> correctedIsochrones =
247 for (std::map<int, FairHit*>::iterator iter =
248 correctedIsochrones.begin(); iter != correctedIsochrones.end();
290 #ifdef PRINT_CALC_TIMES
292 vector<vector<Double_t> > calcTimesTrackletGen =
296 FILE* fp = fopen(
"calcTimesCPU.txt",
"w");
298 "%3s \t %3s \t %3s \t %3s \t %10s \t %10s \t %10s \t %10s \t %10s \t %10s \t %10s \t %10s \t %10s \t %10s \t %10s \n",
299 "#E",
"#H",
"#HWD",
"#UHWD",
"EvaluateState()",
"InitStartTracklets()",
300 "EvaluateMultiState()",
"GenerateTracklets()",
301 "CombineTrackletsMultiStages()",
"AssignAmbiguousHits()",
302 "SplitData()",
"AddMissingHits()",
"CreatePndTrackCands()",
303 "FindTracks()",
"CalcNeighborData");
304 for (
int i = 0;
i < calcTimesTrackletGen.size(); ++
i) {
307 for (
int j = 0; j < calcTimesTrackletGen[
i].size(); j += 2) {
308 fprintf(fp,
"\t %.15f",
309 (calcTimesTrackletGen[
i].at(j + 1) - calcTimesTrackletGen[
i].at(j)) * 1000);
312 fprintf(fp,
"\t %.15f",
313 (calcTimesNeighborhood[
i].at(1) - calcTimesNeighborhood[
i].at(0)) * 1000);
324 TClonesArray* tempArray =
325 (TClonesArray*) FairRootManager::Instance()->GetObject(branchName);
326 if (tempArray == 0) {
327 std::cout <<
"-W- PndSttCellTrackFinderTask::Init: "
328 <<
"No hitArray for BranchName #############################################" << branchName.Data()
331 if ( strcmp(tempArray->GetClass()->GetName(),
"PndSttHit") == 0){
int NumCombinedRiemannTracks()
TClonesArray * fEventHeader
TClonesArray * fFirstTrackArray
TClonesArray * fFirstTrackCandArray
void SetVerbose(Int_t val)
void SetClusterTime(double val)
std::vector< TString > fHitBranch
void SetDevTubeNeighboringsPointer(int *dev_pointer)
int NumUnambiguousNeighbors()
PndSttCellTrackFinder * fTrackFinder
void SetRunTimeBased(Bool_t val)
virtual void FinishTask()
PndRiemannTrack GetCombiRiemannTrack(int i)
Bool_t fCalcWithCorrectedIsochrones
void SetCalcFirstTrackletInf(Bool_t val)
void SetTrackCandRef(PndTrackCand *candPointer)
std::vector< std::vector< int > > fNumHitsPerEvent
#define START_TUBE_ID_SKEWED
#define NUM_UNSKEWED_STRAWS
std::vector< TString > fSTTHitBranch
virtual void Exec(Option_t *opt)
int * fDev_tubeNeighborings
#define MAX_SKEWED_NEIGHBORS
PndGeoSttPar * fSttParameters
std::vector< TClonesArray * > fSTTHitArray
std::vector< std::vector< Double_t > > GetTimeStampsTrackletGen()
PndRiemannTrack GetFirstRiemannTrack(int i)
virtual void SetParContainers()
PndSttCellTrackFinderData * GetTrackFinderDataObject()
void SetUseGPU(Bool_t val)
PndTrack GetCombiTrack(int i)
TClonesArray * fCombiTrackArray
PndSttGeometryMap * GetGeometryMap() const
TClonesArray * FillTubeArray()
void InitHitArray(TString branchName)
int GetNumPrimaryTracklets()
#define END_TUBE_ID_SKEWED
int NumFirstRiemannTracks()
TClonesArray * fCombiTrackCandArray
int NumHitsWithoutDouble()
#define MAX_UNSKEWED_NEIGHBORS
TClonesArray * fFirstRiemannTrackArray
void AddHits(TClonesArray *hits, TString branchName)
TString fInBranchNamePrefix
PndTrackCand GetFirstTrackCand(int i)
TClonesArray * fCombiRiemannTrackArray
TString fOutBranchNamePrefix
void SetCalcWithCorrectedIsochrones(Bool_t val)
void SetTrackCand(const PndTrackCand &cand)
#define NUM_SKEWED_STRAWS
std::vector< std::vector< Double_t > > GetTimeStampsGenerateNeighborhoodData()
int * AllocateStaticData(int *, int)
PndTrackCand GetCombiTrackCand(int i)
std::map< Int_t, FairHit * > GetCorrectedIsochrones()
virtual InitStatus Init()
TClonesArray * fTubeArray
TClonesArray * fCorrectedIsochronesArray
virtual void FinishEvent()
TArrayI GetNeighboringsByMap(int tubeId)
void FreeStaticData(int *)