#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