]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MFT/AliMFTPlane.cxx
Coverity fixed
[u/mrichter/AliRoot.git] / MFT / AliMFTPlane.cxx
index 78fb56f337048697def9f380d17fa413856dfad5..419744775a9cd4f1030505c2fb386a482ab52a06 100644 (file)
@@ -24,7 +24,6 @@
 #include "TNamed.h"
 #include "THnSparse.h"
 #include "TClonesArray.h"
-#include "AliMFTPlane.h"
 #include "TAxis.h"
 #include "TPave.h"
 #include "TCanvas.h"
 #include "TEllipse.h"
 #include "TMath.h"
 #include "AliLog.h"
+#include "AliMFTConstants.h"
+#include "AliMFTPlane.h"
+
+const Double_t AliMFTPlane::fRadiusMin           = AliMFTConstants::fRadiusMin;
+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)
 
@@ -39,7 +46,7 @@ ClassImp(AliMFTPlane)
 
 AliMFTPlane::AliMFTPlane():
   TNamed(),
-  fPlaneNumber(0),
+  fPlaneNumber(-1),
   fZCenter(0), 
   fRMinSupport(0), 
   fRMax(0),
@@ -56,15 +63,10 @@ AliMFTPlane::AliMFTPlane():
   fEquivalentSiliconBeforeBack(0),
   fActiveElements(0),
   fReadoutElements(0),
-  fSupportElements(0)
+  fSupportElements(0),
+  fHasPixelRectangularPatternAlongY(kFALSE)
 {
 
-  fPlaneNumber = -1;
-
-  fActiveElements  = new TClonesArray("THnSparseC");
-  fReadoutElements = new TClonesArray("THnSparseC");
-  fSupportElements = new TClonesArray("THnSparseC");
-
   // default constructor
 
 }
@@ -73,7 +75,7 @@ AliMFTPlane::AliMFTPlane():
 
 AliMFTPlane::AliMFTPlane(const Char_t *name, const Char_t *title):
   TNamed(name, title),
-  fPlaneNumber(0),
+  fPlaneNumber(-1),
   fZCenter(0), 
   fRMinSupport(0), 
   fRMax(0),
@@ -88,18 +90,13 @@ AliMFTPlane::AliMFTPlane(const Char_t *name, const Char_t *title):
   fEquivalentSilicon(0),
   fEquivalentSiliconBeforeFront(0),
   fEquivalentSiliconBeforeBack(0),
-  fActiveElements(0),
-  fReadoutElements(0),
-  fSupportElements(0)
+  fActiveElements(new TClonesArray("THnSparseC")),
+  fReadoutElements(new TClonesArray("THnSparseC")),
+  fSupportElements(new TClonesArray("THnSparseC")),
+  fHasPixelRectangularPatternAlongY(kFALSE)
 {
 
-  fPlaneNumber = -1;
-
-  fActiveElements  = new TClonesArray("THnSparseC");
-  fReadoutElements = new TClonesArray("THnSparseC");
-  fSupportElements = new TClonesArray("THnSparseC");
-
-  // default constructor
+  // constructor
 
 }
 
@@ -122,12 +119,17 @@ AliMFTPlane::AliMFTPlane(const AliMFTPlane& plane):
   fEquivalentSilicon(plane.fEquivalentSilicon),
   fEquivalentSiliconBeforeFront(plane.fEquivalentSiliconBeforeFront),
   fEquivalentSiliconBeforeBack(plane.fEquivalentSiliconBeforeBack),
-  fActiveElements(plane.fActiveElements),
-  fReadoutElements(plane.fReadoutElements),
-  fSupportElements(plane.fSupportElements)
+  fActiveElements(new TClonesArray("THnSparseC")),
+  fReadoutElements(new TClonesArray("THnSparseC")),
+  fSupportElements(new TClonesArray("THnSparseC")),
+  fHasPixelRectangularPatternAlongY(plane.fHasPixelRectangularPatternAlongY)
 {
 
   // copy constructor
+
+  *fActiveElements  = *plane.fActiveElements;
+  *fReadoutElements = *plane.fReadoutElements;
+  *fSupportElements = *plane.fSupportElements;
   
 }
 
@@ -138,35 +140,34 @@ AliMFTPlane& AliMFTPlane::operator=(const AliMFTPlane& plane) {
   // Assignment operator
 
   // check assignement to self
-  if (this == &plane) return *this;
+  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               = plane.fActiveElements;
-  fReadoutElements              = plane.fReadoutElements;
-  fSupportElements              = plane.fSupportElements;
+    // base class assignement
+    TNamed::operator=(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                  = *plane.fActiveElements;
+    *fReadoutElements                 = *plane.fReadoutElements;
+    *fSupportElements                 = *plane.fSupportElements;
+    fHasPixelRectangularPatternAlongY = plane.fHasPixelRectangularPatternAlongY;
+  }
 
   return *this;
-
+  
 }
 
 //====================================================================================================================================================
@@ -179,7 +180,8 @@ Bool_t AliMFTPlane::Init(Int_t    planeNumber,
                         Double_t pixelSizeY, 
                         Double_t thicknessActive, 
                         Double_t thicknessSupport, 
-                        Double_t thicknessReadout) {
+                        Double_t thicknessReadout,
+                        Bool_t   hasPixelRectangularPatternAlongY) {
 
   AliDebug(1, Form("Initializing Plane Structure for Plane %s", GetName()));
 
@@ -193,6 +195,8 @@ Bool_t AliMFTPlane::Init(Int_t    planeNumber,
   fThicknessSupport = thicknessSupport;
   fThicknessReadout = thicknessReadout;
 
+  fHasPixelRectangularPatternAlongY = hasPixelRectangularPatternAlongY;
+
   fZCenterActiveFront = fZCenter - 0.5*fThicknessSupport - 0.5*fThicknessActive;
   fZCenterActiveBack  = fZCenter + 0.5*fThicknessSupport + 0.5*fThicknessActive;
 
@@ -206,7 +210,7 @@ Bool_t AliMFTPlane::Init(Int_t    planeNumber,
   fRMax = fRMinSupport + (fHeightActive-fActiveSuperposition) * 
     (Int_t((fRMax-fRMinSupport-fHeightActive)/(fHeightActive-fActiveSuperposition))+1) + fHeightActive;
   
-  fRMaxSupport = TMath::Sqrt(fHeightActive*(rMax-fHeightActive) + fRMax*fRMax) + fSupportExtMargin;
+  fRMaxSupport = TMath::Sqrt(fHeightActive*(2.*rMax-fHeightActive) + fRMax*fRMax) + fSupportExtMargin;
  
   return kTRUE;
  
@@ -397,7 +401,7 @@ THnSparseC* AliMFTPlane::GetSupportElement(Int_t id) {
 
 //====================================================================================================================================================
 
-void AliMFTPlane::DrawPlane(Char_t *opt) {
+void AliMFTPlane::DrawPlane(Option_t *opt) {
 
   // ------------------- "FRONT" option ------------------
 
@@ -406,8 +410,6 @@ void AliMFTPlane::DrawPlane(Char_t *opt) {
     TCanvas *cnv = new TCanvas("cnv", GetName(), 900, 900);
     cnv->Draw();
 
-    //    printf("Created Canvas\n");
-
     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());
@@ -415,7 +417,7 @@ void AliMFTPlane::DrawPlane(Char_t *opt) {
     h->SetYTitle("y [cm]");
     h->Draw();
 
-    printf("Created hist\n");
+    AliInfo("Created hist");
 
     TEllipse *supportExt = new TEllipse(0.0, 0.0, fRMaxSupport, fRMaxSupport);
     TEllipse *supportInt = new TEllipse(0.0, 0.0, fRMinSupport, fRMinSupport);
@@ -423,10 +425,7 @@ void AliMFTPlane::DrawPlane(Char_t *opt) {
     supportExt -> Draw("same");
     supportInt -> Draw("same");
 
-    //    printf("Created Ellipses\n");
-
     for (Int_t iEl=0; iEl<GetNActiveElements(); iEl++) {
-      //      printf("Active element %d\n", iEl);
       if (!IsFront(GetActiveElement(iEl))) continue;
       TPave *pave = new TPave(GetActiveElement(iEl)->GetAxis(0)->GetXmin(), 
                              GetActiveElement(iEl)->GetAxis(1)->GetXmin(), 
@@ -437,7 +436,6 @@ void AliMFTPlane::DrawPlane(Char_t *opt) {
     }
 
     for (Int_t iEl=0; iEl<GetNReadoutElements(); iEl++) {
-      //      printf("Readout element %d\n", iEl);
       if (!IsFront(GetReadoutElement(iEl))) continue;
       TPave *pave = new TPave(GetReadoutElement(iEl)->GetAxis(0)->GetXmin(), 
                              GetReadoutElement(iEl)->GetAxis(1)->GetXmin(), 
@@ -622,3 +620,28 @@ void AliMFTPlane::DrawPlane(Char_t *opt) {
 
 //====================================================================================================================================================
 
+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;
+
+}
+
+//====================================================================================================================================================