#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)
AliMFTPlane::AliMFTPlane():
TNamed(),
- fPlaneNumber(0),
+ fPlaneNumber(-1),
fZCenter(0),
fRMinSupport(0),
fRMax(0),
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
}
AliMFTPlane::AliMFTPlane(const Char_t *name, const Char_t *title):
TNamed(name, title),
- fPlaneNumber(0),
+ fPlaneNumber(-1),
fZCenter(0),
fRMinSupport(0),
fRMax(0),
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
}
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;
}
// 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;
-
+
}
//====================================================================================================================================================
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()));
fThicknessSupport = thicknessSupport;
fThicknessReadout = thicknessReadout;
+ fHasPixelRectangularPatternAlongY = hasPixelRectangularPatternAlongY;
+
fZCenterActiveFront = fZCenter - 0.5*fThicknessSupport - 0.5*fThicknessActive;
fZCenterActiveBack = fZCenter + 0.5*fThicknessSupport + 0.5*fThicknessActive;
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;
//====================================================================================================================================================
-void AliMFTPlane::DrawPlane(Char_t *opt) {
+void AliMFTPlane::DrawPlane(Option_t *opt) {
// ------------------- "FRONT" option ------------------
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());
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);
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(),
}
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(),
//====================================================================================================================================================
+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;
+
+}
+
+//====================================================================================================================================================