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

// $Id$
// $MpId: AliMpTrigger.h,v 1.5 2006/05/24 13:58:27 ivana Exp $

/// \ingroup mptrigger
/// \class AliMpTrigger
/// \brief A trigger slat
///
//  Author: Laurent Aphecetche

#ifndef ALI_MP_TRIGGER_H
#define ALI_MP_TRIGGER_H

#ifndef ROOT_TObject
#  include "TObject.h"
#endif

#ifndef ROOT_TString
#  include "TString.h"
#endif

#ifndef ROOT_TObjArray
#  include "TObjArray.h"
#endif

#ifndef ALI_MP_PLANE_TYPE
#  include "AliMpPlaneType.h"
#endif

class AliMpPCB;
class AliMpSlat;
class AliMpVSegmentation;
class TArrayI;

class AliMpTrigger : public TObject
{
public:
  AliMpTrigger();
  AliMpTrigger(const char* slatType, AliMp::PlaneType bendingOrNonBending);
  virtual ~AliMpTrigger();
  
  Bool_t AdoptLayer(AliMpSlat* slat);
    
  void GetAllLocalBoardNumbers(TArrayI& lbn) const;
  
  const char* GetID() const;
  
  const char* GetName() const;

  Double_t DX() const;
  Double_t DY() const;
  
  /// Return x position
  Double_t  GetPositionX() const { return DX(); }
  /// Return y position
  Double_t  GetPositionY() const { return DY(); }
  
  AliMpSlat* GetLayer(int layer) const;
  AliMpVSegmentation* GetLayerSegmentation(int layer) const;
  
  Int_t GetNofPadsX() const;
  
  Int_t GetMaxNofPadsY() const;
  
  /// Returns the number of layers.
  Int_t GetSize() const;
  
  void Print(Option_t* option="") const;

  AliMp::PlaneType PlaneType() const;
  
  /// Return the x dimension (half-sizes) of that slat (cm)
  Double_t  GetDimensionX() const { return DX(); }
  /// Return the y dimension (half-sizes) of that slat (cm)
  Double_t  GetDimensionY() const { return DY(); }
  
private:
    
  Bool_t IsLayerValid(int layer) const;
  
  TString fId; ///< name of that slat
  AliMp::PlaneType fPlaneType; ///< bending or non-bending
  TObjArray fSlats; ///< virtual slat composing this trigger slat
  TObjArray fSlatSegmentations; ///< segmentations for virtual slats
  Int_t fMaxNofPadsY; ///< max number of pads in y direction
  Double_t fDX; ///< half-size in x (cm)
  Double_t fDY; ///< half-size in y (cm)
  
  ClassDef(AliMpTrigger,4) // Slat for trigger
};

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