Update HFE v2 analyses
[u/mrichter/AliRoot.git] / MUON / AliMUONTriggerCircuit.h
1 #ifndef ALIMUONTRIGGERCIRCUIT_H
2 #define ALIMUONTRIGGERCIRCUIT_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7 // Revision of includes 07/05/2004
8 //
9 /// \ingroup base
10 /// \class AliMUONTriggerCircuit
11 /// \brief MUON Trigger circuit
12 ///
13 //  Author Philippe Crochet (LPCCFd)
14
15 #include <TObject.h>
16 #include <TArrayF.h>
17
18 class AliMpLocalBoard;
19 class AliMUONGeometryTransformer;
20 class AliMpPad;
21 class AliMpVSegmentation;
22
23 class AliMUONTriggerCircuit : public TObject 
24 {
25 public: 
26   AliMUONTriggerCircuit(const AliMUONGeometryTransformer* transformer);  
27   virtual ~AliMUONTriggerCircuit();
28      // copy constructor
29   AliMUONTriggerCircuit(const AliMUONTriggerCircuit& AliMUONTriggerCircuit); 
30   // assignment operator
31   AliMUONTriggerCircuit& operator=(const AliMUONTriggerCircuit& AliMUONTriggerCircuit); 
32
33   //--- methods which return member data related info
34   Float_t GetX11Pos(Int_t localBoardId, Int_t istrip) const;
35   Float_t GetY11Pos(Int_t localBoardId, Int_t istrip) const;
36   Float_t GetY21Pos(Int_t localBoardId, Int_t istrip) const;
37   Float_t GetZ11Pos(Int_t localBoardId, Int_t istrip) const;
38   Float_t GetZ21Pos(Int_t localBoardId, Int_t istrip) const;
39   Float_t GetX11Width(Int_t localBoardId, Int_t istrip) const;
40   Float_t GetY11Width(Int_t localBoardId, Int_t istrip) const;
41   Float_t GetY21Width(Int_t localBoardId, Int_t istrip) const;
42
43   //  void Print(Option_t* opt="") const;
44   //  void dump(const char* what, const Float_t* array, Int_t size);
45   //  void dump(const char* what, const Int_t* array, Int_t size);
46   
47   /// Set pointer to transformations
48   void  SetTransformer(const AliMUONGeometryTransformer* transformer) {fkTransformer = transformer;}
49   /// Get pointer to transformations
50   const AliMUONGeometryTransformer* GetTransformer() const {return fkTransformer;}
51   Float_t PtCal(Int_t localBoardId, Int_t istripX, Int_t idev, Int_t istripY) const;
52   
53 private:
54
55   void LoadYPos(AliMpLocalBoard* const localBoard);
56   void LoadXPos(AliMpLocalBoard* const localBoard);
57
58   Int_t FirstStrip(AliMpLocalBoard* localBoard);
59
60   void FillXstrips(const Int_t icol, 
61                    const Int_t iFirstStrip, const Int_t iLastStrip,
62                    Int_t liStripCircuit, const Bool_t is11);
63   
64   void FillYstrips(const Int_t iFirstStrip,
65                    const Int_t iLastStrip, Int_t liStripCircuit,
66                    const Bool_t doubling);
67
68   void XYGlobal(const AliMpPad& pad,
69                 Double_t* xyGlobal);    
70   
71
72 private:    
73   TArrayF fXpos11[235];         ///< X position of Y strips in MC11
74   TArrayF fYpos11[235];         ///< Y position of X strips in MC11
75   TArrayF fYpos21[235];         ///< Y position of X strips in MC21
76   TArrayF fZpos11[235];         ///< Z position of X strips in MC11
77   TArrayF fZpos21[235];         ///< Z position of X strips in MC21
78   TArrayF fXwidth11[235];         ///< width of Y strips in MC11
79   TArrayF fYwidth11[235];         ///< width of X strips in MC11
80   TArrayF fYwidth21[235];         ///< width of X strips in MC21
81
82   const AliMUONGeometryTransformer* fkTransformer; //!< pointer to transformation
83   const AliMpVSegmentation* fkCurrentSeg;          //!< current segmentation
84
85   Int_t fCurrentDetElem;                          //!< current detection elt id
86   Int_t fCurrentLocalBoard;                       //!< current local board id
87
88   ClassDef(AliMUONTriggerCircuit,2) // Trigger Circuit class
89 };
90 #endif