]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTriggerCircuit.h
Fixing minor bug recognizing diffractive events in simulation
[u/mrichter/AliRoot.git] / MUON / AliMUONTriggerCircuit.h
index 9cc29a225473c53e9e7a032e0bfca63b4099f093..5b226025c2ba99fc4e74c1e8bf0b1e2fa4876063 100644 (file)
@@ -1,81 +1,90 @@
 #ifndef ALIMUONTRIGGERCIRCUIT_H
 #define ALIMUONTRIGGERCIRCUIT_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+* See cxx source for full Copyright notice                               */
 
-#include "TObjArray.h"
-#include <iostream.h>
-#include "AliMUONSegmentationTrigger.h"
+/* $Id$ */
+// Revision of includes 07/05/2004
+//
+/// \ingroup base
+/// \class AliMUONTriggerCircuit
+/// \brief MUON Trigger circuit
+///
+//  Author Philippe Crochet (LPCCFd)
 
-class AliMUONSegmentationTrigger;
-//----------------------------------------------
-class AliMUONTriggerCircuit : 
-public TObject {
- public: 
-  AliMUONTriggerCircuit();  
-  virtual ~AliMUONTriggerCircuit(){;} 
-  // copy constructor
+#include <TObject.h>
+#include <TArrayF.h>
+
+class AliMpLocalBoard;
+class AliMUONGeometryTransformer;
+class AliMpPad;
+class AliMpVSegmentation;
+
+class AliMUONTriggerCircuit : public TObject 
+{
+public: 
+  AliMUONTriggerCircuit(const AliMUONGeometryTransformer* transformer);  
+  virtual ~AliMUONTriggerCircuit();
+     // copy constructor
   AliMUONTriggerCircuit(const AliMUONTriggerCircuit& AliMUONTriggerCircuit); 
   // assignment operator
   AliMUONTriggerCircuit& operator=(const AliMUONTriggerCircuit& AliMUONTriggerCircuit); 
 
-  // initializations
-  void Init(Int_t iCircuit);    
+  //--- methods which return member data related info
+  Float_t GetX11Pos(Int_t localBoardId, Int_t istrip) const;
+  Float_t GetY11Pos(Int_t localBoardId, Int_t istrip) const;
+  Float_t GetY21Pos(Int_t localBoardId, Int_t istrip) const;
+  Float_t GetZ11Pos(Int_t localBoardId, Int_t istrip) const;
+  Float_t GetZ21Pos(Int_t localBoardId, Int_t istrip) const;
+  Float_t GetX11Width(Int_t localBoardId, Int_t istrip) const;
+  Float_t GetY11Width(Int_t localBoardId, Int_t istrip) const;
+  Float_t GetY21Width(Int_t localBoardId, Int_t istrip) const;
+
+  //  void Print(Option_t* opt="") const;
+  //  void dump(const char* what, const Float_t* array, Int_t size);
+  //  void dump(const char* what, const Int_t* array, Int_t size);
+  
+  /// Set pointer to transformations
+  void  SetTransformer(const AliMUONGeometryTransformer* transformer) {fkTransformer = transformer;}
+  /// Get pointer to transformations
+  const AliMUONGeometryTransformer* GetTransformer() const {return fkTransformer;}
+  Float_t PtCal(Int_t localBoardId, Int_t istripX, Int_t idev, Int_t istripY) const;
   
-  // get calculated pt
-  Float_t PtCal(Int_t istripX, Int_t idev, Int_t istripY);
+private:
 
-  //--- methods which return member data related info
-  Int_t   GetIdCircuit();
-  Int_t   GetIdModule();
-  Int_t   GetNstripX();
-  Int_t   GetNstripY();
-  Int_t   GetPosCircuit();
-  Int_t   GetIdCircuitD();
-  Int_t   GetICircuitD();
-  Int_t   GetIdCircuitU();
-  Int_t   GetICircuitU();
-  Int_t   GetX2m();
-  Int_t   GetX2ud();
-  void    GetOrMud(Int_t orMud[2]);
-  Int_t   GetXcode(Int_t chamber, Int_t istrip);
-  Int_t   GetYcode(Int_t chamber, Int_t istrip);
-  Float_t GetY11Pos(Int_t istrip);
-  Float_t GetY21Pos(Int_t istrip);
-  Float_t GetX11Pos(Int_t istrip);
-  //  Get reference to segmentation model
-  virtual AliSegmentation*  SegmentationModel(Int_t isec) {
-      return (AliSegmentation *) (*fSegmentation)[isec-1];
-  }
+  void LoadYPos(AliMpLocalBoard* const localBoard);
+  void LoadXPos(AliMpLocalBoard* const localBoard);
 
- protected:
-  TObjArray            *fSegmentation;    // pointer to segmentation
+  Int_t FirstStrip(AliMpLocalBoard* localBoard);
 
- private:
-  Int_t CircuitNumber(Int_t idCircuit);
-  Int_t ModuleNumber(Int_t idModule); 
-  Int_t Module(Int_t idCircuit);
-  Int_t Position(Int_t idCircuit);
-  void LoadX2();
-  void LoadXCode();
-  void LoadYCode();
-  void LoadYPos();
-  void LoadXPos();
+  void FillXstrips(const Int_t icol, 
+                   const Int_t iFirstStrip, const Int_t iLastStrip,
+                   Int_t liStripCircuit, const Bool_t is11);
   
-  ClassDef(AliMUONTriggerCircuit,1) // Trigger Circuit class
-    
- private:    
-  Int_t fIdCircuit;            // circuit Id number
-  Int_t fX2m;                  // internal info needed by TriggerDecision
-  Int_t fX2ud;                 // internal info needed by TriggerDecision
-  Int_t fOrMud[2];             // internal info needed by TriggerDecision
-  Int_t fXcode[4][32];         // code of X strips
-  Int_t fYcode[4][32];         // code of Y strips 
-  Float_t fXpos11[16];         // X position of Y strips in MC11
-  Float_t fYpos11[31];         // Y position of X strips in MC11
-  Float_t fYpos21[63];         // Y position of X strips in MC21
+  void FillYstrips(const Int_t iFirstStrip,
+                   const Int_t iLastStrip, Int_t liStripCircuit,
+                   const Bool_t doubling);
 
-};
-#endif
+  void XYGlobal(const AliMpPad& pad,
+                Double_t* xyGlobal);    
+  
 
+private:    
+  TArrayF fXpos11[235];         ///< X position of Y strips in MC11
+  TArrayF fYpos11[235];         ///< Y position of X strips in MC11
+  TArrayF fYpos21[235];         ///< Y position of X strips in MC21
+  TArrayF fZpos11[235];         ///< Z position of X strips in MC11
+  TArrayF fZpos21[235];         ///< Z position of X strips in MC21
+  TArrayF fXwidth11[235];         ///< width of Y strips in MC11
+  TArrayF fYwidth11[235];         ///< width of X strips in MC11
+  TArrayF fYwidth21[235];         ///< width of X strips in MC21
 
+  const AliMUONGeometryTransformer* fkTransformer; //!< pointer to transformation
+  const AliMpVSegmentation* fkCurrentSeg;          //!< current segmentation
 
+  Int_t fCurrentDetElem;                          //!< current detection elt id
+  Int_t fCurrentLocalBoard;                       //!< current local board id
+
+  ClassDef(AliMUONTriggerCircuit,2) // Trigger Circuit class
+};
+#endif