PandaRoot
PndCurlingTrackFinderTask.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
14 // PndCurlingTrackFinderTask
15 // Finds Track
17 
28 #pragma once
29 
30 #include "FairTask.h"
31 #include <vector>
32 
33 #include "PndCurlingTrackFinder.h"
34 #include "PndSttStrawMap.h"
35 #include "PndGeoSttPar.h"
36 #include "PndSttGeometryMap.h"
37 
38 #include "PndPreselectSttHits.h"
39 #include "PndSttCA.h"
40 
41 struct TrackSolution;
42 
43 class PndCurlingTrackFinderTask : public FairTask {
44  public:
47 
50 
52  virtual InitStatus Init();
53 
54  virtual void AddBranchName(TString name) { fBranchMap[name] = nullptr; }
55  virtual void AddBranchNameUnassigned(TString name)
56  {
57  fBranchMapUnassigned[name] = nullptr;
58  }
59  virtual void AddFoundTrackName(TString name) { fBranchNameFoundTrack = name; }
60  virtual void AddFoundTrackCandName(TString name) { fBranchNameFoundTrackCand = name; }
61  void SetParContainers();
62 
64  virtual void Exec(Option_t *opt);
65 
66  virtual void Finish();
67 
68  protected:
69  void FillPndTrack(std::vector<TripletSolution> &solutions);
70  void FillPndTrackDebug(std::vector<TripletSolution> &solutions, TClonesArray *tracks, TClonesArray *trackCands);
71  PndTrack GetPndTrack(double B, std::vector<FairHit *> &hits, TVector3 &circle, PndTrackCand &cand);
72 
73  private:
74  FairRootManager *ioman = nullptr;
75 
76  PndGeoSttPar *fSttParameters = nullptr; // needed for SttStrawMap
77  TClonesArray *fTubeArray = nullptr; // needed for SttStrawMap
78 
79  // PndSttStrawMap fStrawMap; // for getting more information about the tubes
80  PndSttGeometryMap *fGeometryMap = nullptr;
81 
82  PndCurlingTrackFinder *fFinder = nullptr;
83 
84  std::vector<TString> fBranchNames;
85  std::map<TString, TClonesArray *> fBranchMap;
86  std::vector<TString> fBranchNamesUnassigned;
87  std::map<TString, TClonesArray *> fBranchMapUnassigned;
88  TString fBranchNameFoundTrack;
89  TString fBranchNameFoundTrackCand;
90  TClonesArray *fBranchFoundTrack;
91  TClonesArray *fBranchFoundTrackCand;
92  TClonesArray *fTrackCandArray = nullptr;
93  TClonesArray *fTrackArray = nullptr;
94  TClonesArray *fTripletTracksCands = nullptr;
95  TClonesArray *fTripletTracks = nullptr;
96  TClonesArray *fContinuousTripletTracksCands = nullptr;
97  TClonesArray *fContinuousTripletTracks = nullptr;
98  TClonesArray *fTripletTracksCandsAfterAdding = nullptr;
99  TClonesArray *fTripletTracksAfterAdding = nullptr;
100  TClonesArray *fFinalTrackCandArray = nullptr;
101  TClonesArray *fFinalTrackArray = nullptr;
102  PndSttCA *fCATrackFinder = nullptr;
103 
104  bool fWithTubeReduction;
105  bool fWithCombiReduction;
106  int fVerbose;
107 
108  ClassDef(PndCurlingTrackFinderTask, 1);
109 };
virtual InitStatus Init()
Initializes and loads the data for the PndCurlingTrackFinderTask.
virtual void AddFoundTrackName(TString name)
virtual void AddBranchNameUnassigned(TString name)
Search for tracks only in given branches. If no BranchName is given all tracking detectors are taken...
virtual void Exec(Option_t *opt)
void FillPndTrackDebug(std::vector< TripletSolution > &solutions, TClonesArray *tracks, TClonesArray *trackCands)
virtual void AddFoundTrackCandName(TString name)
void FillPndTrack(std::vector< TripletSolution > &solutions)
virtual ~PndCurlingTrackFinderTask()
virtual void AddBranchName(TString name)
Search for tracks only in given branches. If no BranchName is given all tracking detectors are taken...
PndTrack GetPndTrack(double B, std::vector< FairHit *> &hits, TVector3 &circle, PndTrackCand &cand)