]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MFT/AliMFTPlane.cxx
MFT module
[u/mrichter/AliRoot.git] / MFT / AliMFTPlane.cxx
diff --git a/MFT/AliMFTPlane.cxx b/MFT/AliMFTPlane.cxx
deleted file mode 100644 (file)
index 9a5dbd9..0000000
+++ /dev/null
@@ -1,773 +0,0 @@
-/**************************************************************************
-* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
-*                                                                        *
-* Author: The ALICE Off-line Project.                                    *
-* Contributors are mentioned in the code where appropriate.              *
-*                                                                        *
-* Permission to use, copy, modify and distribute this software and its   *
-* documentation strictly for non-commercial purposes is hereby granted   *
-* without fee, provided that the above copyright notice appears in all   *
-* copies and that both the copyright notice and this permission notice   *
-* appear in the supporting documentation. The authors make no claims     *
-* about the suitability of this software for any purpose. It is          *
-* provided "as is" without express or implied warranty.                  *
-**************************************************************************/
-
-//====================================================================================================================================================
-//
-//      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"
-#include "AliMFTConstants.h"
-#include "AliMFTPlane.h"
-
-const Double_t AliMFTPlane::fActiveSuperposition = AliMFTConstants::fActiveSuperposition;
-const Double_t AliMFTPlane::fHeightActive        = AliMFTConstants::fHeightActive;
-const Double_t AliMFTPlane::fHeightReadout       = AliMFTConstants::fHeightReadout;
-const Double_t AliMFTPlane::fSupportExtMargin    = AliMFTConstants::fSupportExtMargin;
-
-ClassImp(AliMFTPlane)
-
-//====================================================================================================================================================
-
-AliMFTPlane::AliMFTPlane():
-  TNamed(),
-  fPlaneNumber(-1),
-  fZCenter(0), 
-  fRMinSupport(0), 
-  fRMax(0),
-  fRMaxSupport(0),
-  fPixelSizeX(0), 
-  fPixelSizeY(0), 
-  fThicknessActive(0), 
-  fThicknessSupport(0), 
-  fThicknessReadout(0),
-  fZCenterActiveFront(0),
-  fZCenterActiveBack(0),
-  fEquivalentSilicon(0),
-  fEquivalentSiliconBeforeFront(0),
-  fEquivalentSiliconBeforeBack(0),
-  fActiveElements(0),
-  fReadoutElements(0),
-  fSupportElements(0),
-  fHasPixelRectangularPatternAlongY(kFALSE),
-  fPlaneIsOdd(kFALSE)
-{
-
-  // default constructor
-
-}
-
-//====================================================================================================================================================
-
-AliMFTPlane::AliMFTPlane(const Char_t *name, const Char_t *title):
-  TNamed(name, title),
-  fPlaneNumber(-1),
-  fZCenter(0), 
-  fRMinSupport(0), 
-  fRMax(0),
-  fRMaxSupport(0),
-  fPixelSizeX(0), 
-  fPixelSizeY(0), 
-  fThicknessActive(0), 
-  fThicknessSupport(0), 
-  fThicknessReadout(0),
-  fZCenterActiveFront(0),
-  fZCenterActiveBack(0),
-  fEquivalentSilicon(0),
-  fEquivalentSiliconBeforeFront(0),
-  fEquivalentSiliconBeforeBack(0),
-  fActiveElements(0),
-  fReadoutElements(0),
-  fSupportElements(0),
-  fHasPixelRectangularPatternAlongY(kFALSE),
-  fPlaneIsOdd(kFALSE)
-{
-
-  // constructor
-  fActiveElements  = new TClonesArray("THnSparseC");
-  fReadoutElements = new TClonesArray("THnSparseC");
-  fSupportElements = new TClonesArray("THnSparseC");
-  fActiveElements->SetOwner(kTRUE);
-  fReadoutElements->SetOwner(kTRUE);
-  fSupportElements->SetOwner(kTRUE);
-  
-}
-
-//====================================================================================================================================================
-
-AliMFTPlane::AliMFTPlane(const AliMFTPlane& plane):
-  TNamed(plane),
-  fPlaneNumber(plane.fPlaneNumber),
-  fZCenter(plane.fZCenter), 
-  fRMinSupport(plane.fRMinSupport), 
-  fRMax(plane.fRMax),
-  fRMaxSupport(plane.fRMaxSupport),
-  fPixelSizeX(plane.fPixelSizeX), 
-  fPixelSizeY(plane.fPixelSizeY), 
-  fThicknessActive(plane.fThicknessActive), 
-  fThicknessSupport(plane.fThicknessSupport), 
-  fThicknessReadout(plane.fThicknessReadout),
-  fZCenterActiveFront(plane.fZCenterActiveFront),
-  fZCenterActiveBack(plane.fZCenterActiveBack),
-  fEquivalentSilicon(plane.fEquivalentSilicon),
-  fEquivalentSiliconBeforeFront(plane.fEquivalentSiliconBeforeFront),
-  fEquivalentSiliconBeforeBack(plane.fEquivalentSiliconBeforeBack),
-  fActiveElements(0),
-  fReadoutElements(0),
-  fSupportElements(0),
-  fHasPixelRectangularPatternAlongY(plane.fHasPixelRectangularPatternAlongY),
-  fPlaneIsOdd(plane.fPlaneIsOdd)
-{
-
-  // copy constructor
-  fActiveElements  = new TClonesArray(*(plane.fActiveElements));
-  fActiveElements  -> SetOwner(kTRUE);
-  fReadoutElements = new TClonesArray(*(plane.fReadoutElements));
-  fReadoutElements -> SetOwner(kTRUE);
-  fSupportElements = new TClonesArray(*(plane.fSupportElements));
-  fSupportElements -> SetOwner(kTRUE);
-
-       
-}
-
-//====================================================================================================================================================
-
-AliMFTPlane::~AliMFTPlane() {
-
-  AliInfo("Delete AliMFTPlane");
-  if(fActiveElements) fActiveElements->Delete();
-  delete fActiveElements; 
-  if(fReadoutElements) fReadoutElements->Delete();
-  delete fReadoutElements; 
-  if(fSupportElements) fSupportElements->Delete();
-  delete fSupportElements; 
-
-}
-
-//====================================================================================================================================================
-
-void AliMFTPlane::Clear(const Option_t* /*opt*/) {
-
-  AliInfo("Clear AliMFTPlane");
-  if(fActiveElements) fActiveElements->Delete();
-  delete fActiveElements; fActiveElements=NULL;
-  if(fReadoutElements) fReadoutElements->Delete();
-  delete fReadoutElements;  fReadoutElements=NULL; 
-  if(fSupportElements) fSupportElements->Delete();
-  delete fSupportElements;   fSupportElements=NULL;
-
-}
-
-//====================================================================================================================================================
-
-AliMFTPlane& AliMFTPlane::operator=(const AliMFTPlane& plane) {
-
-  // Assignment operator
-  
-  // check assignement to self
-  if (this != &plane) {
-    
-    // base class assignement
-    TNamed::operator=(plane);
-    
-    // clear memory
-    Clear("");
-    
-    fPlaneNumber                      = plane.fPlaneNumber;
-    fZCenter                          = plane.fZCenter; 
-    fRMinSupport                      = plane.fRMinSupport; 
-    fRMax                             = plane.fRMax;
-    fRMaxSupport                      = plane.fRMaxSupport;
-    fPixelSizeX                       = plane.fPixelSizeX;
-    fPixelSizeY                       = plane.fPixelSizeY; 
-    fThicknessActive                  = plane.fThicknessActive; 
-    fThicknessSupport                 = plane.fThicknessSupport; 
-    fThicknessReadout                 = plane.fThicknessReadout;
-    fZCenterActiveFront               = plane.fZCenterActiveFront;
-    fZCenterActiveBack                = plane.fZCenterActiveBack;
-    fEquivalentSilicon                = plane.fEquivalentSilicon;
-    fEquivalentSiliconBeforeFront     = plane.fEquivalentSiliconBeforeFront;
-    fEquivalentSiliconBeforeBack      = plane.fEquivalentSiliconBeforeBack;
-    fActiveElements = new TClonesArray(*(plane.fActiveElements));
-    fActiveElements -> SetOwner(kTRUE);
-    fReadoutElements = new TClonesArray(*(plane.fReadoutElements));
-    fReadoutElements -> SetOwner(kTRUE);
-    fSupportElements = new TClonesArray(*(plane.fSupportElements));
-    fSupportElements -> SetOwner(kTRUE);
-    fHasPixelRectangularPatternAlongY = plane.fHasPixelRectangularPatternAlongY;
-    fPlaneIsOdd                       = plane.fPlaneIsOdd;
-
-  }
-  
-  return *this;
-  
-}
-
-//====================================================================================================================================================
-
-Bool_t AliMFTPlane::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) {
-
-  AliDebug(1, Form("Initializing Plane Structure for Plane %s", GetName()));
-
-  fPlaneNumber      = planeNumber;
-  fZCenter          = zCenter;
-  fRMinSupport      = rMin;
-  fRMax             = rMax;
-  fPixelSizeX       = pixelSizeX;
-  fPixelSizeY       = pixelSizeY;
-  fThicknessActive  = thicknessActive;
-  fThicknessSupport = thicknessSupport;
-  fThicknessReadout = thicknessReadout;
-
-  fHasPixelRectangularPatternAlongY = hasPixelRectangularPatternAlongY;
-
-  fZCenterActiveFront = fZCenter - 0.5*fThicknessSupport - 0.5*fThicknessActive;
-  fZCenterActiveBack  = fZCenter + 0.5*fThicknessSupport + 0.5*fThicknessActive;
-
-  if (fRMax < fRMinSupport+fHeightActive) fRMax = fRMinSupport + fHeightActive;
-
-  Int_t nLaddersWithinPipe = Int_t(fRMinSupport/(fHeightActive-fActiveSuperposition));
-  if (fRMinSupport-nLaddersWithinPipe*(fHeightActive-fActiveSuperposition) > 0.5*(fHeightActive-2*fActiveSuperposition)) fPlaneIsOdd = kTRUE;
-  else fPlaneIsOdd = kFALSE;
-
-  fRMax = fRMinSupport + (fHeightActive-fActiveSuperposition) * 
-    (Int_t((fRMax-fRMinSupport-fHeightActive)/(fHeightActive-fActiveSuperposition))+1) + fHeightActive;
-
-  fRMaxSupport = TMath::Sqrt(fHeightActive*(2.*rMax-fHeightActive) + fRMax*fRMax) + fSupportExtMargin;
-   
-  return kTRUE;
-}
-
-//====================================================================================================================================================
-
-Bool_t AliMFTPlane::CreateStructure() {
-
-  Int_t nBins[3]={0};
-  Double_t minPosition[3]={0}, maxPosition[3]={0};
-  
-  // ------------------- det elements: active + readout ----------------------------------
-
-  Double_t lowEdgeActive = -1.*fRMax;
-  Double_t supEdgeActive = lowEdgeActive + fHeightActive;
-  Double_t zMinFront = fZCenter - 0.5*fThicknessSupport - fThicknessActive;
-  Double_t zMinBack  = fZCenter + 0.5*fThicknessSupport;
-  Double_t zMin = 0.;
-  Bool_t isFront = kTRUE;
-  
-  while (supEdgeActive < 0.5*(fHeightActive+fHeightReadout)) {
-    
-    Double_t extLimitAtLowEdgeActive = TMath::Sqrt((fRMax-TMath::Abs(lowEdgeActive)) * TMath::Abs(2*fRMax - (fRMax-TMath::Abs(lowEdgeActive))));
-    Double_t extLimitAtSupEdgeActive = TMath::Sqrt((fRMax-TMath::Abs(supEdgeActive)) * TMath::Abs(2*fRMax - (fRMax-TMath::Abs(supEdgeActive))));
-
-    // creating new det element: active + readout
-    
-    Double_t extLimitDetElem = TMath::Max(extLimitAtLowEdgeActive, extLimitAtSupEdgeActive);
-    
-    if (supEdgeActive<-1.*fRMinSupport+0.01 || lowEdgeActive>1.*fRMinSupport-0.01) {     // single element covering the row
-      
-      nBins[0] = TMath::Nint(2.*extLimitDetElem/fPixelSizeX);
-      nBins[1] = TMath::Nint(fHeightActive/fPixelSizeY);
-      nBins[2] = 1;
-
-      // element below the pipe
-      
-      if (isFront) zMin = zMinFront;
-      else         zMin = zMinBack;
-
-      minPosition[0] = -1.*extLimitDetElem;
-      minPosition[1] = lowEdgeActive;
-      minPosition[2] = zMin;
-      
-      maxPosition[0] = +1.*extLimitDetElem;
-      maxPosition[1] = supEdgeActive;
-      maxPosition[2] = zMin+fThicknessActive; 
-      
-      new ((*fActiveElements)[fActiveElements->GetEntries()]) THnSparseC(Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()), 
-                                                                        Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()), 
-                                                                        3, nBins, minPosition, maxPosition);
-
-      minPosition[1] = lowEdgeActive-fHeightReadout;
-      maxPosition[1] = lowEdgeActive;
-      
-      new ((*fReadoutElements)[fReadoutElements->GetEntries()]) THnSparseC(Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()), 
-                                                                          Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()), 
-                                                                          3, nBins, minPosition, maxPosition);
-
-      // specular element above the pipe
-
-      if (fPlaneIsOdd) {
-       if (isFront) zMin = zMinBack;
-       else         zMin = zMinFront;
-      }
-
-      minPosition[0] = -1.*extLimitDetElem;
-      minPosition[1] = -1.*supEdgeActive;
-      minPosition[2] = zMin;
-      
-      maxPosition[0] = +1.*extLimitDetElem;
-      maxPosition[1] = -1.*lowEdgeActive;
-      maxPosition[2] = zMin+fThicknessActive; 
-      
-      new ((*fActiveElements)[fActiveElements->GetEntries()]) THnSparseC(Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()), 
-                                                                        Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()), 
-                                                                        3, nBins, minPosition, maxPosition);
-
-      minPosition[1] = -1.*lowEdgeActive;
-      maxPosition[1] = -1.*(lowEdgeActive-fHeightReadout);
-
-      new ((*fReadoutElements)[fReadoutElements->GetEntries()]) THnSparseC(Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()), 
-                                                                          Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()), 
-                                                                          3, nBins, minPosition, maxPosition);
-
-    }
-    
-    else {     // two elements covering the row
-      
-      Double_t intLimitAtLowEdge = 0., intLimitAtSupEdge = 0.;
-      if (fRMinSupport-TMath::Abs(lowEdgeActive)>0.) intLimitAtLowEdge = TMath::Sqrt((fRMinSupport-TMath::Abs(lowEdgeActive)) * TMath::Abs(2*fRMinSupport - (fRMinSupport-TMath::Abs(lowEdgeActive))));
-      if (fRMinSupport-TMath::Abs(supEdgeActive)>0.) intLimitAtSupEdge = TMath::Sqrt((fRMinSupport-TMath::Abs(supEdgeActive)) * TMath::Abs(2*fRMinSupport - (fRMinSupport-TMath::Abs(supEdgeActive))));
-      Double_t intLimitDetElem = TMath::Max(intLimitAtLowEdge, intLimitAtSupEdge);
-      
-      nBins[0] = TMath::Nint((extLimitDetElem-intLimitDetElem)/fPixelSizeX);
-      nBins[1] = TMath::Nint(fHeightActive/fPixelSizeY);
-      nBins[2] = 1;
-      
-      // left element: y < 0
-      
-      if (isFront) zMin = zMinFront;
-      else         zMin = zMinBack;
-
-      minPosition[0] = -1.*extLimitDetElem;
-      minPosition[1] = lowEdgeActive;
-      minPosition[2] = zMin;
-      
-      maxPosition[0] = -1.*intLimitDetElem;
-      maxPosition[1] = supEdgeActive;
-      maxPosition[2] = zMin+fThicknessActive; 
-      
-      new ((*fActiveElements)[fActiveElements->GetEntries()]) THnSparseC(Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()), 
-                                                                        Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()), 
-                                                                        3, nBins, minPosition, maxPosition);   
-      
-      minPosition[1] = lowEdgeActive-fHeightReadout;
-      maxPosition[1] = lowEdgeActive;
-      
-      new ((*fReadoutElements)[fReadoutElements->GetEntries()]) THnSparseC(Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()), 
-                                                                          Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()), 
-                                                                          3, nBins, minPosition, maxPosition);
-
-      // left element: y > 0
-      
-      if (supEdgeActive < 0.5*fHeightActive) {
-       
-       if (fPlaneIsOdd) {
-         if (isFront) zMin = zMinBack;
-         else         zMin = zMinFront;
-       }
-       
-       minPosition[0] = -1.*extLimitDetElem;
-       minPosition[1] = -1.*supEdgeActive;
-       minPosition[2] = zMin;
-       
-       maxPosition[0] = -1.*intLimitDetElem;
-       maxPosition[1] = -1.*lowEdgeActive;
-       maxPosition[2] = zMin+fThicknessActive; 
-       
-       new ((*fActiveElements)[fActiveElements->GetEntries()]) THnSparseC(Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()), 
-                                                                          Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()), 
-                                                                          3, nBins, minPosition, maxPosition); 
-       
-       minPosition[1] = -1.*lowEdgeActive;
-       maxPosition[1] = -1.*(lowEdgeActive-fHeightReadout);
-       
-       new ((*fReadoutElements)[fReadoutElements->GetEntries()]) THnSparseC(Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()), 
-                                                                            Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()), 
-                                                                            3, nBins, minPosition, maxPosition);
-      
-      }
-
-      // right element: y < 0
-      
-      if (isFront) zMin = zMinFront;
-      else         zMin = zMinBack;
-
-      minPosition[0] = +1.*intLimitDetElem;
-      minPosition[1] = lowEdgeActive;
-      minPosition[2] = zMin;
-      
-      maxPosition[0] = +1.*extLimitDetElem;
-      maxPosition[1] = supEdgeActive;
-      maxPosition[2] = zMin+fThicknessActive; 
-      
-      new ((*fActiveElements)[fActiveElements->GetEntries()]) THnSparseC(Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()), 
-                                                                        Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()), 
-                                                                        3, nBins, minPosition, maxPosition);   
-      
-      minPosition[1] = lowEdgeActive-fHeightReadout;
-      maxPosition[1] = lowEdgeActive;
-
-      new ((*fReadoutElements)[fReadoutElements->GetEntries()]) THnSparseC(Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()), 
-                                                                          Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()), 
-                                                                          3, nBins, minPosition, maxPosition);
-
-      // right element: y > 0
-      
-      if (supEdgeActive < 0.5*fHeightActive) {
-
-       if (fPlaneIsOdd) {
-         if (isFront) zMin = zMinBack;
-         else         zMin = zMinFront;
-       }
-       
-       minPosition[0] = +1.*intLimitDetElem;
-       minPosition[1] = -1.*supEdgeActive;
-       minPosition[2] = zMin;
-       
-       maxPosition[0] = +1.*extLimitDetElem;
-       maxPosition[1] = -1.*lowEdgeActive;
-       maxPosition[2] = zMin+fThicknessActive; 
-       
-       new ((*fActiveElements)[fActiveElements->GetEntries()]) THnSparseC(Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()), 
-                                                                          Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()), 
-                                                                          3, nBins, minPosition, maxPosition); 
-       
-       minPosition[1] = -1.*lowEdgeActive;
-       maxPosition[1] = -1.*(lowEdgeActive-fHeightReadout);
-       
-       new ((*fReadoutElements)[fReadoutElements->GetEntries()]) THnSparseC(Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()), 
-                                                                            Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()), 
-                                                                            3, nBins, minPosition, maxPosition);
-
-      }
-      
-    }
-    
-    lowEdgeActive += fHeightActive - fActiveSuperposition;
-    supEdgeActive = lowEdgeActive + fHeightActive;
-    isFront = !isFront;
-    
-  }
-  
-  // ------------------- support element -------------------------------------------------
-  
-  nBins[0] = 1;
-  nBins[1] = 1;
-  nBins[2] = 1;
-  
-  minPosition[0] = -1.*fRMaxSupport;
-  minPosition[1] = -1.*fRMaxSupport;
-  minPosition[2] = fZCenter - 0.5*fThicknessSupport;
-  
-  maxPosition[0] = +1.*fRMaxSupport;
-  maxPosition[1] = +1.*fRMaxSupport;
-  maxPosition[2] = fZCenter + 0.5*fThicknessSupport;
-  
-  new ((*fSupportElements)[fSupportElements->GetEntries()]) THnSparseC(Form("MFTSupportElemHist_%02d%03d", fPlaneNumber, fSupportElements->GetEntries()), 
-                                                                      Form("MFTSupportElemHist_%02d%03d", fPlaneNumber, fSupportElements->GetEntries()), 
-                                                                      3, nBins, minPosition, maxPosition);
-
-  // --------------------------------------------------------------------------------------
-
-  AliDebug(1, Form("Structure completed for MFT plane %s", GetName()));
-
-  return kTRUE;
-  
-}
-
-//====================================================================================================================================================
-
-THnSparseC* AliMFTPlane::GetActiveElement(Int_t id) {
-
-  if (id<0 || id>=GetNActiveElements()) return NULL;
-  else return (THnSparseC*) fActiveElements->At(id);
-
-}
-
-//====================================================================================================================================================
-
-THnSparseC* AliMFTPlane::GetReadoutElement(Int_t id) {
-
-  if (id<0 || id>=GetNReadoutElements()) return NULL;
-  else return (THnSparseC*) fReadoutElements->At(id);
-
-}
-
-//====================================================================================================================================================
-
-THnSparseC* AliMFTPlane::GetSupportElement(Int_t id) {
-
-  if (id<0 || id>=GetNSupportElements()) return NULL;
-  else return (THnSparseC*) fSupportElements->At(id);
-
-}
-
-//====================================================================================================================================================
-
-void AliMFTPlane::DrawPlane(Option_t *opt) {
-
-  // ------------------- "FRONT" option ------------------
-
-  if (!strcmp(opt, "front")) {
-
-    TCanvas *cnv = new TCanvas("cnv", GetName(), 900, 900);
-    cnv->Draw();
-
-    TH2D *h = new TH2D("tmp", GetName(), 
-                      1, 1.1*GetSupportElement(0)->GetAxis(0)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(0)->GetXmax(), 
-                      1, 1.1*GetSupportElement(0)->GetAxis(1)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(1)->GetXmax());
-    h->SetXTitle("x [cm]");
-    h->SetYTitle("y [cm]");
-    h->Draw();
-
-    AliInfo("Created hist");
-
-    TEllipse *supportExt = new TEllipse(0.0, 0.0, fRMaxSupport, fRMaxSupport);
-    TEllipse *supportInt = new TEllipse(0.0, 0.0, fRMinSupport, fRMinSupport);
-    supportExt->SetFillColor(kCyan-10);
-    supportExt -> Draw("same");
-    supportInt -> Draw("same");
-
-    for (Int_t iEl=0; iEl<GetNActiveElements(); iEl++) {
-      if (!IsFront(GetActiveElement(iEl))) continue;
-      TPave *pave = new TPave(GetActiveElement(iEl)->GetAxis(0)->GetXmin(), 
-                             GetActiveElement(iEl)->GetAxis(1)->GetXmin(), 
-                             GetActiveElement(iEl)->GetAxis(0)->GetXmax(), 
-                             GetActiveElement(iEl)->GetAxis(1)->GetXmax(), 1);
-      pave -> SetFillColor(kGreen);
-      pave -> Draw("same");
-    }
-
-    for (Int_t iEl=0; iEl<GetNReadoutElements(); iEl++) {
-      if (!IsFront(GetReadoutElement(iEl))) continue;
-      TPave *pave = new TPave(GetReadoutElement(iEl)->GetAxis(0)->GetXmin(), 
-                             GetReadoutElement(iEl)->GetAxis(1)->GetXmin(), 
-                             GetReadoutElement(iEl)->GetAxis(0)->GetXmax(), 
-                             GetReadoutElement(iEl)->GetAxis(1)->GetXmax(), 1);
-      pave -> SetFillColor(kRed);
-      pave -> Draw("same");
-    }
-
-  }
-    
-  // ------------------- "BACK" option ------------------
-
-  else if (!strcmp(opt, "back")) {
-
-    TCanvas *cnv = new TCanvas("cnv", GetName(), 900, 900);
-    cnv->Draw();
-    
-    TH2D *h = new TH2D("tmp", GetName(), 
-                      1, 1.1*GetSupportElement(0)->GetAxis(0)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(0)->GetXmax(), 
-                      1, 1.1*GetSupportElement(0)->GetAxis(1)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(1)->GetXmax());
-    h->SetXTitle("x [cm]");
-    h->SetYTitle("y [cm]");
-    h->Draw();
-
-    TEllipse *supportExt = new TEllipse(0.0, 0.0, fRMaxSupport, fRMaxSupport);
-    TEllipse *supportInt = new TEllipse(0.0, 0.0, fRMinSupport, fRMinSupport);
-    supportExt -> SetFillColor(kCyan-10);
-    supportExt -> Draw("same");
-    supportInt -> Draw("same");
-
-    for (Int_t iEl=0; iEl<GetNActiveElements(); iEl++) {
-      if (IsFront(GetActiveElement(iEl))) continue;
-      TPave *pave = new TPave(GetActiveElement(iEl)->GetAxis(0)->GetXmin(), 
-                             GetActiveElement(iEl)->GetAxis(1)->GetXmin(), 
-                             GetActiveElement(iEl)->GetAxis(0)->GetXmax(), 
-                             GetActiveElement(iEl)->GetAxis(1)->GetXmax(), 1);
-      pave -> SetFillColor(kGreen);
-      pave -> Draw("same");
-    }
-
-    for (Int_t iEl=0; iEl<GetNReadoutElements(); iEl++) {
-      if (IsFront(GetReadoutElement(iEl))) continue;
-      TPave *pave = new TPave(GetReadoutElement(iEl)->GetAxis(0)->GetXmin(), 
-                             GetReadoutElement(iEl)->GetAxis(1)->GetXmin(), 
-                             GetReadoutElement(iEl)->GetAxis(0)->GetXmax(), 
-                             GetReadoutElement(iEl)->GetAxis(1)->GetXmax(), 1);
-      pave -> SetFillColor(kRed);
-      pave -> Draw("same");
-    }
-
-  }
-
-  // ------------------- "BOTH" option ------------------
-
-  else if (!strcmp(opt, "both")) {
-
-    TCanvas *cnv = new TCanvas("cnv", GetName(), 900, 900);
-    cnv->Draw();
-
-    TH2D *h = new TH2D("tmp", GetName(), 
-                      1, 1.1*GetSupportElement(0)->GetAxis(0)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(0)->GetXmax(), 
-                      1, 1.1*GetSupportElement(0)->GetAxis(1)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(1)->GetXmax());
-    h->SetXTitle("x [cm]");
-    h->SetYTitle("y [cm]");
-    h->Draw();
-
-    TEllipse *supportExt = new TEllipse(0.0, 0.0, fRMaxSupport, fRMaxSupport);
-    TEllipse *supportInt = new TEllipse(0.0, 0.0, fRMinSupport, fRMinSupport);
-    supportExt -> SetFillColor(kCyan-10);
-    supportExt -> Draw("same");
-    supportInt -> Draw("same");
-
-    for (Int_t iEl=0; iEl<GetNActiveElements(); iEl++) {
-      if (IsFront(GetActiveElement(iEl)) && GetActiveElement(iEl)->GetAxis(0)->GetXmin()<0.) {
-       TPave *pave = new TPave(GetActiveElement(iEl)->GetAxis(0)->GetXmin(), 
-                               GetActiveElement(iEl)->GetAxis(1)->GetXmin(), 
-                               TMath::Min(GetActiveElement(iEl)->GetAxis(0)->GetXmax(), 0.),
-                               GetActiveElement(iEl)->GetAxis(1)->GetXmax(), 1);
-       pave -> SetFillColor(kGreen);
-       pave -> Draw("same");
-      }
-      else if (!IsFront(GetActiveElement(iEl)) && GetActiveElement(iEl)->GetAxis(0)->GetXmax()>0.) {
-       TPave *pave = new TPave(TMath::Max(GetActiveElement(iEl)->GetAxis(0)->GetXmin(), 0.), 
-                               GetActiveElement(iEl)->GetAxis(1)->GetXmin(), 
-                               GetActiveElement(iEl)->GetAxis(0)->GetXmax(), 
-                               GetActiveElement(iEl)->GetAxis(1)->GetXmax(), 1);
-       pave -> SetFillColor(kGreen);
-       pave -> Draw("same");
-      }
-    }
-    
-    for (Int_t iEl=0; iEl<GetNReadoutElements(); iEl++) {
-      if (IsFront(GetReadoutElement(iEl)) && GetReadoutElement(iEl)->GetAxis(0)->GetXmin()<0.) {
-       TPave *pave = new TPave(GetReadoutElement(iEl)->GetAxis(0)->GetXmin(), 
-                               GetReadoutElement(iEl)->GetAxis(1)->GetXmin(), 
-                               TMath::Min(GetReadoutElement(iEl)->GetAxis(0)->GetXmax(), 0.), 
-                               GetReadoutElement(iEl)->GetAxis(1)->GetXmax(), 1);
-       pave -> SetFillColor(kRed);
-       pave -> Draw("same");
-      }
-      else if (!IsFront(GetReadoutElement(iEl)) && GetReadoutElement(iEl)->GetAxis(0)->GetXmax()>0.) {
-       TPave *pave = new TPave(TMath::Max(GetReadoutElement(iEl)->GetAxis(0)->GetXmin(), 0.),  
-                               GetReadoutElement(iEl)->GetAxis(1)->GetXmin(), 
-                               GetReadoutElement(iEl)->GetAxis(0)->GetXmax(), 
-                               GetReadoutElement(iEl)->GetAxis(1)->GetXmax(), 1);
-       pave -> SetFillColor(kRed);
-       pave -> Draw("same");
-      }
-    }
-    
-  }
-
-  // ------------------- "PROFILE" option ------------------
-
-  else if (!strcmp(opt, "profile")) {
-
-    TCanvas *cnv = new TCanvas("cnv", GetName(), 300, 900);
-    cnv->Draw();
-
-    TH2D *h = new TH2D("tmp", GetName(), 
-                      1, fZCenter-1.1*(0.5*fThicknessSupport+fThicknessActive), fZCenter+1.1*(0.5*fThicknessSupport+fThicknessActive),
-                      1, 1.1*GetSupportElement(0)->GetAxis(1)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(1)->GetXmax());
-    h->SetXTitle("z [cm]");
-    h->SetYTitle("y [cm]");
-    h->Draw();
-
-    TPave *supportExt = new TPave(GetSupportElement(0)->GetAxis(2)->GetXmin(), -fRMaxSupport, 
-                                 GetSupportElement(0)->GetAxis(2)->GetXmax(),  fRMaxSupport);
-    TPave *supportInt = new TPave(GetSupportElement(0)->GetAxis(2)->GetXmin(), -fRMinSupport, 
-                                 GetSupportElement(0)->GetAxis(2)->GetXmax(),  fRMinSupport);
-    supportExt -> SetFillColor(kCyan-10);
-    supportInt -> SetFillColor(kCyan-10);
-    supportExt -> SetBorderSize(1);
-    supportInt -> SetBorderSize(1);
-    supportExt -> Draw("same");
-    supportInt -> Draw("same");
-
-    for (Int_t iEl=0; iEl<GetNActiveElements(); iEl++) {
-      TPave * pave = 0;
-      if (IsFront(GetActiveElement(iEl))) {
-       pave = new TPave(GetActiveElement(iEl)->GetAxis(2)->GetXmax() - 
-                        5*(GetActiveElement(iEl)->GetAxis(2)->GetXmax()-GetActiveElement(iEl)->GetAxis(2)->GetXmin()), 
-                        GetActiveElement(iEl)->GetAxis(1)->GetXmin(), 
-                        GetActiveElement(iEl)->GetAxis(2)->GetXmax(), 
-                        GetActiveElement(iEl)->GetAxis(1)->GetXmax(), 1);
-      }
-      else {
-       pave = new TPave(GetActiveElement(iEl)->GetAxis(2)->GetXmin(), 
-                        GetActiveElement(iEl)->GetAxis(1)->GetXmin(), 
-                        GetActiveElement(iEl)->GetAxis(2)->GetXmin() + 
-                        5*(GetActiveElement(iEl)->GetAxis(2)->GetXmax()-GetActiveElement(iEl)->GetAxis(2)->GetXmin()), 
-                        GetActiveElement(iEl)->GetAxis(1)->GetXmax(), 1);
-      }        
-      pave -> SetFillColor(kGreen);
-      pave -> Draw("same");
-    }
-    
-    for (Int_t iEl=0; iEl<GetNReadoutElements(); iEl++) {
-      TPave *pave = 0;
-      if (IsFront(GetReadoutElement(iEl))) {
-       pave = new TPave(GetReadoutElement(iEl)->GetAxis(2)->GetXmax() - 
-                        5*(GetReadoutElement(iEl)->GetAxis(2)->GetXmax()-GetReadoutElement(iEl)->GetAxis(2)->GetXmin()), 
-                        GetReadoutElement(iEl)->GetAxis(1)->GetXmin(), 
-                        GetReadoutElement(iEl)->GetAxis(2)->GetXmax(), 
-                        GetReadoutElement(iEl)->GetAxis(1)->GetXmax(), 1);
-      }
-      else {
-       pave = new TPave(GetReadoutElement(iEl)->GetAxis(2)->GetXmin(), 
-                        GetReadoutElement(iEl)->GetAxis(1)->GetXmin(), 
-                        GetReadoutElement(iEl)->GetAxis(2)->GetXmin() + 
-                        5*(GetReadoutElement(iEl)->GetAxis(2)->GetXmax()-GetReadoutElement(iEl)->GetAxis(2)->GetXmin()), 
-                        GetReadoutElement(iEl)->GetAxis(1)->GetXmax(), 1);
-      }        
-      pave -> SetFillColor(kRed);
-      pave -> Draw("same");
-    }
-    
-  }
-
-}
-
-//====================================================================================================================================================
-
-Int_t AliMFTPlane::GetNumberOfChips(Option_t *opt) {
-
-  Int_t nChips = 0;
-
-  if (!strcmp(opt, "front")) {
-    for (Int_t iEl=0; iEl<GetNActiveElements(); iEl++) {
-      if (!IsFront(GetActiveElement(iEl))) continue;
-      Double_t length = GetActiveElement(iEl)->GetAxis(0)->GetXmax() - GetActiveElement(iEl)->GetAxis(0)->GetXmin();
-      nChips += Int_t (length/AliMFTConstants::fWidthChip) + 1;
-    }
-  }
-
-  else if (!strcmp(opt, "back")) {
-    for (Int_t iEl=0; iEl<GetNActiveElements(); iEl++) {
-      if (IsFront(GetActiveElement(iEl))) continue;
-      Double_t length = GetActiveElement(iEl)->GetAxis(0)->GetXmax() - GetActiveElement(iEl)->GetAxis(0)->GetXmin();
-      nChips += Int_t (length/AliMFTConstants::fWidthChip) + 1;
-    }
-  }
-
-  return nChips;
-
-}
-
-//====================================================================================================================================================