HYDRA_development_version
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
hmdcidealtracking.h
Go to the documentation of this file.
1 #ifndef HMDCIDEALTRACKING_H
2 #define HMDCIDEALTRACKING_H
3 
4 #include "hreconstructor.h"
5 #include "hlocation.h"
6 #include "hmdclistgroupcells.h"
7 
8 class HIterator;
9 class HMdcHitSim;
10 class HMdcSegSim;
11 class HCategory;
12 class HMdcTrkCand;
13 class HMdcSizesCells;
14 class HGeantKine;
15 class HGeantMdc;
16 
18  private:
19  // Input categories:
20  HCategory* pGeantKineCat; // pointer to the category catGeantKine
21  HCategory* pGeantMdcCat; // pointer to the category catMdcGeantRaw
22  HCategory* pMdcCal1Cat; // pointer to the category catMdcCal1
23  HIterator* iterGeantKine; // iterator for catGeantKine
24  HLocation locCal1; // location of HMdcCal1Sim object
25 
26  // Output categories:
27  HCategory* pMdcSegCat; // pointer to the category catMdcSeg
28  HCategory* pMdcHitCat; // pointer to the category catMdcHit
29  HCategory* pMdcTrkCandCat; // pointer to the category catMdcTrkCand
30  HLocation locSeg; // location for new "segment" object
31  HLocation locHit; // location for new "hit" object
32  HLocation locTrkCand; // location for new HMdcTrkCand object
33 
35  Bool_t isMdcActive[6][4]; // [sec][mod] =kTRUE if MDC is active
36 
37  // Cuts:
38  Int_t nFiredLayersSeg1cut; // minimal number of fired layers in inner segment
39  Int_t nFiredLayersSeg2cut; // minimal number of fired layers in outer segment
40 
41  // Current track:
42  Int_t trackNumber; // track number
43  Int_t trackSector; // sector number of track
44  HGeantMdc* geantHitMod[4]; // geant hits in 4 modules of sector
45  HGeantMdc* geantHitLay[4][6]; // geant hits in 24 layers of sector
46  UChar_t nGeantMdcLay[4]; // num. of HGeantMdc or HMdcCal1 hits in each module
47  Double_t x1[4],y1[4],z1[4]; // x1,y1,z1 - x2,y2,z2 track piece param.
48  Double_t x2[4],y2[4],z2[4]; // in sector coor.sys. for each module
49  HMdcList24GroupCells* lCells; // list of fired cells from this track
50  Bool_t fillParallel; // switch : kTRUE will fill HMdcHitSim,HMdcSegSim and HMdcTrkCand to ideal categories
51 
52  Double_t sigX[4]; // sigma for gaussian resolution for MDC in x [mm]
53  Double_t sigY[4]; // sigma for gaussian resolution for MDC in y [mm]
54 
55  public:
56  HMdcIdealTracking(void);
57  HMdcIdealTracking(const Text_t *name,const Text_t *title);
58  ~HMdcIdealTracking(void);
59  void fillParallelCategories(){fillParallel=kTRUE;}
60  void setResolutionX(Double_t x0,Double_t x1,Double_t x2,Double_t x3) {sigX[0] = x0; sigX[1] = x1; sigX[2] = x2; sigX[3] = x3;}
61  void setResolutionY(Double_t y0,Double_t y1,Double_t y2,Double_t y3) {sigY[0] = y0; sigY[1] = y1; sigY[2] = y2; sigY[3] = y3;}
62  Bool_t init(void);
63  Bool_t reinit(void);
64  Bool_t finalize(void);
65  Int_t execute(void);
66  void setNFiredLayersCuts(Int_t c1,Int_t c2) {nFiredLayersSeg1cut=c1; nFiredLayersSeg2cut=c2;}
67  void printStatus(void);
68 
69  private:
70  void clear(void);
71  Bool_t testTrack(HGeantKine* pGeantKine);
72  Int_t fillHitsSeg(Int_t segment);
73  HMdcSegSim* getSegSlot(Int_t segment, Int_t& index);
74  Int_t fillHit(Int_t module);
75  HMdcHitSim* getHitSlot(Int_t module, Int_t& index);
76  HMdcTrkCand* fillTrkCandISeg(Int_t segIndex);
77  HMdcTrkCand* fillTrkCandOSeg(HMdcTrkCand* fTCand,Int_t segIndex);
78  void collectWires(Int_t s,Int_t m, Int_t l, HGeantMdc* pGeantMdc);
79  void setWires(HMdcSegSim* pMdcSeg, Int_t seg);
80  void setWires(HMdcHitSim* pMdcHit, Int_t mod);
81 
82  ClassDef(HMdcIdealTracking,0) // Filling HMdcSeg, HMdcHit and HMdcTrkCand by GEANT hits
83 };
84 
85 #endif
HMdcTrkCand * fillTrkCandISeg(Int_t segIndex)
Int_t fillHitsSeg(Int_t segment)
HCategory * pGeantMdcCat
HMdcSegSim * getSegSlot(Int_t segment, Int_t &index)
HIterator * iterGeantKine
HCategory * pGeantKineCat
void setResolutionX(Double_t x0, Double_t x1, Double_t x2, Double_t x3)
HCategory * pMdcTrkCandCat
HGeantMdc * geantHitMod[4]
void setWires(HMdcSegSim *pMdcSeg, Int_t seg)
Bool_t isMdcActive[6][4]
HGeantMdc * geantHitLay[4][6]
HCategory * pMdcCal1Cat
void collectWires(Int_t s, Int_t m, Int_t l, HGeantMdc *pGeantMdc)
void setResolutionY(Double_t y0, Double_t y1, Double_t y2, Double_t y3)
HMdcTrkCand * fillTrkCandOSeg(HMdcTrkCand *fTCand, Int_t segIndex)
Int_t fillHit(Int_t module)
Bool_t testTrack(HGeantKine *pGeantKine)
HMdcList24GroupCells * lCells
HCategory * pMdcSegCat
HCategory * pMdcHitCat
TCanvas c1("HAFT","HADES Acceptance Filter for Theorists", 100, 100, 700, 700)
HMdcSizesCells * pMSizesCells
HMdcHitSim * getHitSlot(Int_t module, Int_t &index)
void setNFiredLayersCuts(Int_t c1, Int_t c2)