ROOT logo
#ifndef ALIMUONTRIGGERCIRCUIT_H
#define ALIMUONTRIGGERCIRCUIT_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

/* $Id$ */
// Revision of includes 07/05/2004
//
/// \ingroup base
/// \class AliMUONTriggerCircuit
/// \brief MUON Trigger circuit
///
//  Author Philippe Crochet (LPCCFd)

#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); 

  //--- 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;
  
private:

  void LoadYPos(AliMpLocalBoard* const localBoard);
  void LoadXPos(AliMpLocalBoard* const localBoard);

  Int_t FirstStrip(AliMpLocalBoard* localBoard);

  void FillXstrips(const Int_t icol, 
                   const Int_t iFirstStrip, const Int_t iLastStrip,
                   Int_t liStripCircuit, const Bool_t is11);
  
  void FillYstrips(const Int_t iFirstStrip,
                   const Int_t iLastStrip, Int_t liStripCircuit,
                   const Bool_t doubling);

  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
 AliMUONTriggerCircuit.h:1
 AliMUONTriggerCircuit.h:2
 AliMUONTriggerCircuit.h:3
 AliMUONTriggerCircuit.h:4
 AliMUONTriggerCircuit.h:5
 AliMUONTriggerCircuit.h:6
 AliMUONTriggerCircuit.h:7
 AliMUONTriggerCircuit.h:8
 AliMUONTriggerCircuit.h:9
 AliMUONTriggerCircuit.h:10
 AliMUONTriggerCircuit.h:11
 AliMUONTriggerCircuit.h:12
 AliMUONTriggerCircuit.h:13
 AliMUONTriggerCircuit.h:14
 AliMUONTriggerCircuit.h:15
 AliMUONTriggerCircuit.h:16
 AliMUONTriggerCircuit.h:17
 AliMUONTriggerCircuit.h:18
 AliMUONTriggerCircuit.h:19
 AliMUONTriggerCircuit.h:20
 AliMUONTriggerCircuit.h:21
 AliMUONTriggerCircuit.h:22
 AliMUONTriggerCircuit.h:23
 AliMUONTriggerCircuit.h:24
 AliMUONTriggerCircuit.h:25
 AliMUONTriggerCircuit.h:26
 AliMUONTriggerCircuit.h:27
 AliMUONTriggerCircuit.h:28
 AliMUONTriggerCircuit.h:29
 AliMUONTriggerCircuit.h:30
 AliMUONTriggerCircuit.h:31
 AliMUONTriggerCircuit.h:32
 AliMUONTriggerCircuit.h:33
 AliMUONTriggerCircuit.h:34
 AliMUONTriggerCircuit.h:35
 AliMUONTriggerCircuit.h:36
 AliMUONTriggerCircuit.h:37
 AliMUONTriggerCircuit.h:38
 AliMUONTriggerCircuit.h:39
 AliMUONTriggerCircuit.h:40
 AliMUONTriggerCircuit.h:41
 AliMUONTriggerCircuit.h:42
 AliMUONTriggerCircuit.h:43
 AliMUONTriggerCircuit.h:44
 AliMUONTriggerCircuit.h:45
 AliMUONTriggerCircuit.h:46
 AliMUONTriggerCircuit.h:47
 AliMUONTriggerCircuit.h:48
 AliMUONTriggerCircuit.h:49
 AliMUONTriggerCircuit.h:50
 AliMUONTriggerCircuit.h:51
 AliMUONTriggerCircuit.h:52
 AliMUONTriggerCircuit.h:53
 AliMUONTriggerCircuit.h:54
 AliMUONTriggerCircuit.h:55
 AliMUONTriggerCircuit.h:56
 AliMUONTriggerCircuit.h:57
 AliMUONTriggerCircuit.h:58
 AliMUONTriggerCircuit.h:59
 AliMUONTriggerCircuit.h:60
 AliMUONTriggerCircuit.h:61
 AliMUONTriggerCircuit.h:62
 AliMUONTriggerCircuit.h:63
 AliMUONTriggerCircuit.h:64
 AliMUONTriggerCircuit.h:65
 AliMUONTriggerCircuit.h:66
 AliMUONTriggerCircuit.h:67
 AliMUONTriggerCircuit.h:68
 AliMUONTriggerCircuit.h:69
 AliMUONTriggerCircuit.h:70
 AliMUONTriggerCircuit.h:71
 AliMUONTriggerCircuit.h:72
 AliMUONTriggerCircuit.h:73
 AliMUONTriggerCircuit.h:74
 AliMUONTriggerCircuit.h:75
 AliMUONTriggerCircuit.h:76
 AliMUONTriggerCircuit.h:77
 AliMUONTriggerCircuit.h:78
 AliMUONTriggerCircuit.h:79
 AliMUONTriggerCircuit.h:80
 AliMUONTriggerCircuit.h:81
 AliMUONTriggerCircuit.h:82
 AliMUONTriggerCircuit.h:83
 AliMUONTriggerCircuit.h:84
 AliMUONTriggerCircuit.h:85
 AliMUONTriggerCircuit.h:86
 AliMUONTriggerCircuit.h:87
 AliMUONTriggerCircuit.h:88
 AliMUONTriggerCircuit.h:89
 AliMUONTriggerCircuit.h:90