ROOT logo
#ifndef AliMFTPlane_H
#define AliMFTPlane_H 

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

//====================================================================================================================================================
//
//      Class for the description of the structure for the planes of the ALICE Muon Forward Tracker
//
//      Contact author: antonio.uras@cern.ch
//
//====================================================================================================================================================

#include "TNamed.h"
#include "THnSparse.h"
#include "TClonesArray.h"
#include "TAxis.h"
#include "TPave.h"
#include "TCanvas.h"
#include "TH2D.h"
#include "TEllipse.h"
#include "TMath.h"
#include "AliLog.h"

//====================================================================================================================================================

class AliMFTPlane : public TNamed {

public:

  AliMFTPlane();
  AliMFTPlane(const Char_t *name, const Char_t *title);
  AliMFTPlane(const AliMFTPlane& pt);
  AliMFTPlane& operator=(const AliMFTPlane &source);
  
  virtual ~AliMFTPlane();  // destructor
  virtual void Clear(const Option_t* /*opt*/);
  
  Bool_t Init(Int_t    planeNumber,
	      Double_t zCenter, 
	      Double_t rMin, 
	      Double_t rMax, 
	      Double_t pixelSizeX, 
	      Double_t pixelSizeY, 
	      Double_t thicknessActive, 
	      Double_t thicknessSupport, 
	      Double_t thicknessReadout,
	      Bool_t   hasPixelRectangularPatternAlongY);
  
  Bool_t CreateStructure();

  Int_t GetNActiveElements()  const { return fActiveElements->GetEntries();  }
  Int_t GetNReadoutElements() const { return fReadoutElements->GetEntries(); }
  Int_t GetNSupportElements() const { return fSupportElements->GetEntries(); }

  TClonesArray* GetActiveElements()  { return fActiveElements;  }
  TClonesArray* GetReadoutElements() { return fReadoutElements; }
  TClonesArray* GetSupportElements() { return fSupportElements; }

  THnSparseC* GetActiveElement(Int_t id);
  THnSparseC* GetReadoutElement(Int_t id);
  THnSparseC* GetSupportElement(Int_t id);

  Bool_t IsFront(THnSparseC *element) const { return (element->GetAxis(2)->GetXmin() < fZCenter); }

  void DrawPlane(Option_t *opt="");

  Double_t GetRMinSupport() const { return fRMinSupport; }
  Double_t GetRMaxSupport() const { return fRMaxSupport; }
  Double_t GetThicknessSupport() { return GetSupportElement(0)->GetAxis(2)->GetXmax() - GetSupportElement(0)->GetAxis(2)->GetXmin(); }
  
  Double_t GetZCenter()            const { return fZCenter; }
  Double_t GetZCenterActiveFront() const { return fZCenterActiveFront; }
  Double_t GetZCenterActiveBack()  const { return fZCenterActiveBack; }

  void SetEquivalentSilicon(Double_t equivalentSilicon)                       { fEquivalentSilicon            = equivalentSilicon; }
  void SetEquivalentSiliconBeforeFront(Double_t equivalentSiliconBeforeFront) { fEquivalentSiliconBeforeFront = equivalentSiliconBeforeFront; }
  void SetEquivalentSiliconBeforeBack(Double_t equivalentSiliconBeforeBack)   { fEquivalentSiliconBeforeBack  = equivalentSiliconBeforeBack; }
  Double_t GetEquivalentSilicon()            const { return fEquivalentSilicon; }
  Double_t GetEquivalentSiliconBeforeFront() const { return fEquivalentSiliconBeforeFront; }
  Double_t GetEquivalentSiliconBeforeBack()  const { return fEquivalentSiliconBeforeBack; }

  Int_t GetNumberOfChips(Option_t *opt);
  Bool_t HasPixelRectangularPatternAlongY() { return fHasPixelRectangularPatternAlongY; }
  
private:

  // measures in cm

  static const Double_t fActiveSuperposition;  // superposition between the active elements tasselling the MFT planes, for having a 
                                               // full acceptance coverage even in case of 10 degrees inclined tracks
  static const Double_t fHeightActive;         // height of the active elements
  static const Double_t fHeightReadout;        // height of the readout elements attached to the active ones

  static const Double_t fSupportExtMargin;     // minimum border size between the end of the support plane and the sensors: fHeightReadout + 0.3

  Int_t fPlaneNumber;

  Double_t fZCenter, fRMinSupport, fRMax, fRMaxSupport, fPixelSizeX, fPixelSizeY, fThicknessActive, fThicknessSupport, fThicknessReadout;
  Double_t fZCenterActiveFront, fZCenterActiveBack, fEquivalentSilicon, fEquivalentSiliconBeforeFront, fEquivalentSiliconBeforeBack;

  TClonesArray *fActiveElements, *fReadoutElements, *fSupportElements;

  Bool_t fHasPixelRectangularPatternAlongY, fPlaneIsOdd;

  ClassDef(AliMFTPlane, 1)

};

//====================================================================================================================================================
	
#endif

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