FairRoot/PandaRoot
PndLmdTrackFinderCATask.h
Go to the documentation of this file.
1 // -------------------------------------------------------------------------
2 // ----- PndLmdTrackFinderCATask -----
3 // ----- Created 18/05/11 by A. Karavdina -----
4 // -------------------------------------------------------------------------
5 
6 #ifndef PNDLMDTRACKFINDERCATASK_H
7 #define PNDLMDTRACKFINDERCATASK_H
8 #include "FairTask.h"
9 #include "PndMCTrack.h"
10 #include "PndSdsClusterStrip.h"
11 #include "PndSdsGeoPar.h"
12 #include "PndSdsHit.h"
13 #include "PndSdsMCPoint.h"
14 #include "TrackData/PndTrackCand.h"
15 
16 #include <string>
17 #include <vector>
18 #include "PndSdsCell.h"
19 #include "TH2.h"
20 #include "TNtuple.h"
21 
22 class TClonesArray;
23 
24 class PndLmdTrackFinderCATask : public FairTask {
25  public:
29  PndLmdTrackFinderCATask(const bool missPl, const double setdmax,
30  Int_t innSensPP = 8, Int_t innP = 4,
31  TString hitBranch = "LMDHitsStrip");
33  virtual ~PndLmdTrackFinderCATask();
34 
36  virtual void SetParContainers();
37  virtual InitStatus Init();
38  virtual InitStatus ReInit();
39 
41  virtual void Exec(Option_t* opt);
42 
43  void SetVerbose(Int_t verbose) { fVerbose = verbose; };
44  void SetInaccuracy(Double_t accu) { dXY = accu; };
45  void SetSensStripFlag(bool fS) { flagStipSens = fS; };
46  void SetSensPixelFlag(bool fS) { flagPixelSens = fS; };
47  void SetTrkCandCutsFlag(bool fS) { flagTrkCandCuts = fS; };
48  void FinishTask();
49 
50  private:
52  double rule_max;
53  int nSensPP; // number of sensors on one plane
54  int nP; // number of planes
55  bool SortHitsByDet(std::vector<std::vector<std::pair<Int_t, bool> > >& hitsd,
56  Int_t nStripHits);
57  bool SortHitsByDetSimple(std::vector<std::vector<Int_t> >& hitsd,
58  Int_t nStripHits);
59  bool SortHitsByDetSimple2(std::vector<std::vector<Int_t> >& hitsd,
60  Int_t nStripHits); // Uses PmdLmdDim class
61  bool SortHitsByZ(std::vector<std::vector<std::pair<Int_t, bool> > >& hitsd,
62  Int_t nStripHits);
65  bool Neighbor(int& icell0, int& icell1);
66  bool Neighbor(PndSdsCell* cell0, PndSdsCell* cell1);
67  void Evolution(int& pv0, int& pv1, int& pv0_n, int& pv1_n, bool isch);
68  TClonesArray* ForwardEvolution(TClonesArray* fCellArray, int niter = 100);
69  TClonesArray* CookAllCells(std::vector<std::vector<Int_t> > hitsd);
70  TClonesArray* CookCells(std::vector<std::vector<Int_t> > hitsd, int& pl0,
71  int& pl1, TClonesArray* tCellArray);
73 
74  bool missPlAlgo;
79  TClonesArray* fStripHitArray;
80 
82  TClonesArray* fTrackCandArray;
83  TClonesArray* fCellArray;
84 
85  void Register();
86  void Reset();
87  void ProduceHits();
88 
90 };
91 
92 #endif /* PndLmdTrackFinderCATASK_H */
int fVerbose
Definition: poormantracks.C:24
bool SortHitsByDet(std::vector< std::vector< std::pair< Int_t, bool > > > &hitsd, Int_t nStripHits)
void Evolution(int &pv0, int &pv1, int &pv0_n, int &pv1_n, bool isch)
Double_t GetTrackDip(PndMCTrack *myTrack)
#define verbose
bool SortHitsByDetSimple(std::vector< std::vector< Int_t > > &hitsd, Int_t nStripHits)
TClonesArray * CookAllCells(std::vector< std::vector< Int_t > > hitsd)
bool SortHitsByZ(std::vector< std::vector< std::pair< Int_t, bool > > > &hitsd, Int_t nStripHits)
bool Neighbor(int &icell0, int &icell1)
void SetInaccuracy(Double_t accu)
TClonesArray * ForwardEvolution(TClonesArray *fCellArray, int niter=100)
Double_t
virtual void Exec(Option_t *opt)
int niter
Definition: poormantracks.C:20
Double_t GetTrackCurvature(PndMCTrack *myTrack)
void SetVerbose(Int_t verbose)
bool SortHitsByDetSimple2(std::vector< std::vector< Int_t > > &hitsd, Int_t nStripHits)
TClonesArray * CookCells(std::vector< std::vector< Int_t > > hitsd, int &pl0, int &pl1, TClonesArray *tCellArray)
ClassDef(PndLmdTrackFinderCATask, 4)