PandaRoot
PndApolloniusTripletTrackFinderTask.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 // PndApolloniusTripletTrackFinderTask
15 // Finds Track
17 
28 #pragma once
29 
30 #include "FairTask.h"
31 #include <vector>
32 
34 #include "PndSttStrawMap.h"
35 #include "PndGeoSttPar.h"
36 
37 #include "PndPreselectSttHits.h"
38 #include "PndSttCA.h"
39 using namespace PndApollonius;
40 
41 struct TrackSolution;
42 
43 class PndApolloniusTripletTrackFinderTask : public FairTask {
44  public:
47 
50 
52  virtual InitStatus Init();
53 
54  virtual void AddBranchName(TString name) { fBranchMap[name] = nullptr; }
55 
56  void SetParContainers();
57 
59  virtual void Exec(Option_t *opt);
60 
61  virtual void Finish();
62  virtual void SetWithTubeReduction(bool reduction) { fWithTubeReduction = reduction; };
63  virtual void SetWithCombiReduction(bool reduction) { fWithCombiReduction = reduction; };
64  virtual void SetSTTName(TString name) { fSTT = name; };
65  virtual void AddFoundTrackName(TString name) { fBranchNameFoundTrack = name; }
66  void SetPreselector(PndPreselectSttHits *val) { fPreselector = val; }
67 
68  protected:
69  void FillPndTrack(std::vector<TripletSolution> &solutions);
70  void FillPndTrackDebug(std::vector<TripletSolution> &solutions, TClonesArray *tracks, TClonesArray *trackCands);
71  bool CheckZInfo(PndTrackCand &cand);
72 
73  private:
74  FairRootManager *ioman = nullptr;
75 
76  PndGeoSttPar *fSttParameters = nullptr;
77  TClonesArray *fTubeArray = nullptr;
78 
79  PndApolloniusTripletTrackFinder *fFinder = nullptr;
80 
81  PndSttStrawMap *fStrawMap;
82  std::vector<TString> fBranchNames;
83  std::map<TString, TClonesArray *> fBranchMap;
84 
85  TClonesArray *fTrackCandArray = nullptr;
86  TClonesArray *fTrackArray = nullptr;
87 
88  PndPreselectSttHits *fPreselector = nullptr;
89  PndSttCA *fCATrackFinder = nullptr;
90 
91  double fBz = 2.;
92 
93  bool fWithTubeReduction;
94  bool fWithCombiReduction;
95  TString fSTT;
96  TString fBranchNameFoundTrack;
97 
98  TClonesArray *fPreselectedTracksCands = nullptr;
99  TClonesArray *fPreselectedTracks = nullptr;
100  TClonesArray *fTripletsFirstCands = nullptr;
101  TClonesArray *fTripletsFirst = nullptr;
102  TClonesArray *fTripletsMidCands = nullptr;
103  TClonesArray *fTripletsMid = nullptr;
104  TClonesArray *fTripletsLastCands = nullptr;
105  TClonesArray *fTripletsLast = nullptr;
106  TClonesArray *fTripletsCombiCands = nullptr;
107  TClonesArray *fTripletsCombi = nullptr;
108  TClonesArray *fTripletTracksCands = nullptr;
109  TClonesArray *fTripletTracks = nullptr;
110  TClonesArray *fContinuousTripletTracksCands = nullptr;
111  TClonesArray *fContinuousTripletTracks = nullptr;
112  TClonesArray *fCombinedTripletTracksCands = nullptr;
113  TClonesArray *fCombinedTripletTracks = nullptr;
114  TClonesArray *fTripletTracksCandsAfterAdding = nullptr;
115  TClonesArray *fTripletTracksAfterAdding = nullptr;
116  TClonesArray *fBranchFoundTrack = nullptr;
117  TClonesArray *fSttBranchOriginal = nullptr;
118 
120 };
virtual void AddBranchName(TString name)
Search for tracks only in given branches. If no BranchName is given all tracking detectors are taken...