1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 //====================================================================================================================================================
18 // Class for the description of the structure for the planes of the ALICE Muon Forward Tracker
20 // Contact author: antonio.uras@cern.ch
22 //====================================================================================================================================================
25 #include "THnSparse.h"
26 #include "TClonesArray.h"
34 #include "AliMFTConstants.h"
35 #include "AliMFTPlane.h"
37 const Double_t AliMFTPlane::fRadiusMin = AliMFTConstants::fRadiusMin;
38 const Double_t AliMFTPlane::fActiveSuperposition = AliMFTConstants::fActiveSuperposition;
39 const Double_t AliMFTPlane::fHeightActive = AliMFTConstants::fHeightActive;
40 const Double_t AliMFTPlane::fHeightReadout = AliMFTConstants::fHeightReadout;
41 const Double_t AliMFTPlane::fSupportExtMargin = AliMFTConstants::fSupportExtMargin;
45 //====================================================================================================================================================
47 AliMFTPlane::AliMFTPlane():
59 fZCenterActiveFront(0),
60 fZCenterActiveBack(0),
61 fEquivalentSilicon(0),
62 fEquivalentSiliconBeforeFront(0),
63 fEquivalentSiliconBeforeBack(0),
69 // default constructor
73 //====================================================================================================================================================
75 AliMFTPlane::AliMFTPlane(const Char_t *name, const Char_t *title):
87 fZCenterActiveFront(0),
88 fZCenterActiveBack(0),
89 fEquivalentSilicon(0),
90 fEquivalentSiliconBeforeFront(0),
91 fEquivalentSiliconBeforeBack(0),
92 fActiveElements(new TClonesArray("THnSparseC")),
93 fReadoutElements(new TClonesArray("THnSparseC")),
94 fSupportElements(new TClonesArray("THnSparseC"))
101 //====================================================================================================================================================
103 AliMFTPlane::AliMFTPlane(const AliMFTPlane& plane):
105 fPlaneNumber(plane.fPlaneNumber),
106 fZCenter(plane.fZCenter),
107 fRMinSupport(plane.fRMinSupport),
109 fRMaxSupport(plane.fRMaxSupport),
110 fPixelSizeX(plane.fPixelSizeX),
111 fPixelSizeY(plane.fPixelSizeY),
112 fThicknessActive(plane.fThicknessActive),
113 fThicknessSupport(plane.fThicknessSupport),
114 fThicknessReadout(plane.fThicknessReadout),
115 fZCenterActiveFront(plane.fZCenterActiveFront),
116 fZCenterActiveBack(plane.fZCenterActiveBack),
117 fEquivalentSilicon(plane.fEquivalentSilicon),
118 fEquivalentSiliconBeforeFront(plane.fEquivalentSiliconBeforeFront),
119 fEquivalentSiliconBeforeBack(plane.fEquivalentSiliconBeforeBack),
120 fActiveElements(new TClonesArray("THnSparseC")),
121 fReadoutElements(new TClonesArray("THnSparseC")),
122 fSupportElements(new TClonesArray("THnSparseC"))
127 *fActiveElements = *plane.fActiveElements;
128 *fReadoutElements = *plane.fReadoutElements;
129 *fSupportElements = *plane.fSupportElements;
133 //====================================================================================================================================================
135 AliMFTPlane& AliMFTPlane::operator=(const AliMFTPlane& plane) {
137 // Assignment operator
139 // check assignement to self
140 if (this != &plane) {
142 // base class assignement
143 TNamed::operator=(plane);
145 fPlaneNumber = plane.fPlaneNumber;
146 fZCenter = plane.fZCenter;
147 fRMinSupport = plane.fRMinSupport;
149 fRMaxSupport = plane.fRMaxSupport;
150 fPixelSizeX = plane.fPixelSizeX;
151 fPixelSizeY = plane.fPixelSizeY;
152 fThicknessActive = plane.fThicknessActive;
153 fThicknessSupport = plane.fThicknessSupport;
154 fThicknessReadout = plane.fThicknessReadout;
155 fZCenterActiveFront = plane.fZCenterActiveFront;
156 fZCenterActiveBack = plane.fZCenterActiveBack;
157 fEquivalentSilicon = plane.fEquivalentSilicon;
158 fEquivalentSiliconBeforeFront = plane.fEquivalentSiliconBeforeFront;
159 fEquivalentSiliconBeforeBack = plane.fEquivalentSiliconBeforeBack;
160 *fActiveElements = *plane.fActiveElements;
161 *fReadoutElements = *plane.fReadoutElements;
162 *fSupportElements = *plane.fSupportElements;
169 //====================================================================================================================================================
171 Bool_t AliMFTPlane::Init(Int_t planeNumber,
177 Double_t thicknessActive,
178 Double_t thicknessSupport,
179 Double_t thicknessReadout) {
181 AliDebug(1, Form("Initializing Plane Structure for Plane %s", GetName()));
183 fPlaneNumber = planeNumber;
187 fPixelSizeX = pixelSizeX;
188 fPixelSizeY = pixelSizeY;
189 fThicknessActive = thicknessActive;
190 fThicknessSupport = thicknessSupport;
191 fThicknessReadout = thicknessReadout;
193 fZCenterActiveFront = fZCenter - 0.5*fThicknessSupport - 0.5*fThicknessActive;
194 fZCenterActiveBack = fZCenter + 0.5*fThicknessSupport + 0.5*fThicknessActive;
196 if (fRMinSupport <= fRadiusMin) fRMinSupport = fRadiusMin;
198 fRMinSupport = fRadiusMin + (fHeightActive-fActiveSuperposition) * Int_t((fRMinSupport-fRadiusMin)/(fHeightActive-fActiveSuperposition));
201 if (fRMax < fRMinSupport+fHeightActive) fRMax = fRMinSupport + fHeightActive;
203 fRMax = fRMinSupport + (fHeightActive-fActiveSuperposition) *
204 (Int_t((fRMax-fRMinSupport-fHeightActive)/(fHeightActive-fActiveSuperposition))+1) + fHeightActive;
206 fRMaxSupport = TMath::Sqrt(fHeightActive*(2.*rMax-fHeightActive) + fRMax*fRMax) + fSupportExtMargin;
212 //====================================================================================================================================================
214 Bool_t AliMFTPlane::CreateStructure() {
217 Double_t minPosition[3]={0}, maxPosition[3]={0};
219 // ------------------- support element -------------------------------------------------
225 minPosition[0] = -1.*fRMaxSupport;
226 minPosition[1] = -1.*fRMaxSupport;
227 minPosition[2] = fZCenter - 0.5*fThicknessSupport;
229 maxPosition[0] = +1.*fRMaxSupport;
230 maxPosition[1] = +1.*fRMaxSupport;
231 maxPosition[2] = fZCenter + 0.5*fThicknessSupport;
233 new ((*fSupportElements)[fSupportElements->GetEntries()]) THnSparseC(Form("MFTSupportElemHist_%02d%03d", fPlaneNumber, fSupportElements->GetEntries()),
234 Form("MFTSupportElemHist_%02d%03d", fPlaneNumber, fSupportElements->GetEntries()),
235 3, nBins, minPosition, maxPosition);
237 // ------------------- det elements: active + readout ----------------------------------
239 Double_t lowEdgeActive = -1.*fRMax;
240 Double_t supEdgeActive = lowEdgeActive + fHeightActive;
242 Bool_t isFront = kTRUE;
244 while (supEdgeActive < fRMax+0.01) {
246 if (isFront) zMin = fZCenter - 0.5*fThicknessSupport - fThicknessActive;
247 else zMin = fZCenter + 0.5*fThicknessSupport;
249 Double_t extLimitAtLowEdgeActive = TMath::Sqrt((fRMax-TMath::Abs(lowEdgeActive)) * TMath::Abs(2*fRMax - (fRMax-TMath::Abs(lowEdgeActive))));
250 Double_t extLimitAtSupEdgeActive = TMath::Sqrt((fRMax-TMath::Abs(supEdgeActive)) * TMath::Abs(2*fRMax - (fRMax-TMath::Abs(supEdgeActive))));
252 // creating new det element: active + readout
254 Double_t extLimitDetElem = TMath::Max(extLimitAtLowEdgeActive, extLimitAtSupEdgeActive);
256 if (supEdgeActive<-1.*fRMinSupport+0.01 || lowEdgeActive>1.*fRMinSupport-0.01) { // single element covering the row
258 nBins[0] = TMath::Nint(2.*extLimitDetElem/fPixelSizeX);
259 nBins[1] = TMath::Nint(fHeightActive/fPixelSizeY);
262 minPosition[0] = -1.*extLimitDetElem;
263 minPosition[1] = lowEdgeActive;
264 minPosition[2] = zMin;
266 maxPosition[0] = +1.*extLimitDetElem;
267 maxPosition[1] = supEdgeActive;
268 maxPosition[2] = zMin+fThicknessActive;
270 new ((*fActiveElements)[fActiveElements->GetEntries()]) THnSparseC(Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()),
271 Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()),
272 3, nBins, minPosition, maxPosition);
274 if (supEdgeActive>0.) {
275 minPosition[1] = supEdgeActive;
276 maxPosition[1] = supEdgeActive+fHeightReadout;
279 minPosition[1] = lowEdgeActive-fHeightReadout;
280 maxPosition[1] = lowEdgeActive;
283 new ((*fReadoutElements)[fReadoutElements->GetEntries()]) THnSparseC(Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()),
284 Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()),
285 3, nBins, minPosition, maxPosition);
289 else { // two elements covering the row
291 Double_t intLimitAtLowEdge = 0., intLimitAtSupEdge = 0.;
292 if (fRMinSupport-TMath::Abs(lowEdgeActive)>0.) intLimitAtLowEdge = TMath::Sqrt((fRMinSupport-TMath::Abs(lowEdgeActive)) * TMath::Abs(2*fRMinSupport - (fRMinSupport-TMath::Abs(lowEdgeActive))));
293 if (fRMinSupport-TMath::Abs(supEdgeActive)>0.) intLimitAtSupEdge = TMath::Sqrt((fRMinSupport-TMath::Abs(supEdgeActive)) * TMath::Abs(2*fRMinSupport - (fRMinSupport-TMath::Abs(supEdgeActive))));
294 Double_t intLimitDetElem = TMath::Max(intLimitAtLowEdge, intLimitAtSupEdge);
296 nBins[0] = TMath::Nint((extLimitDetElem-intLimitDetElem)/fPixelSizeX);
297 nBins[1] = TMath::Nint(fHeightActive/fPixelSizeY);
302 minPosition[0] = -1.*extLimitDetElem;
303 minPosition[1] = lowEdgeActive;
304 minPosition[2] = zMin;
306 maxPosition[0] = -1.*intLimitDetElem;
307 maxPosition[1] = supEdgeActive;
308 maxPosition[2] = zMin+fThicknessActive;
310 new ((*fActiveElements)[fActiveElements->GetEntries()]) THnSparseC(Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()),
311 Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()),
312 3, nBins, minPosition, maxPosition);
314 if (supEdgeActive>0.) {
315 minPosition[1] = supEdgeActive;
316 maxPosition[1] = supEdgeActive+fHeightReadout;
319 minPosition[1] = lowEdgeActive-fHeightReadout;
320 maxPosition[1] = lowEdgeActive;
323 new ((*fReadoutElements)[fReadoutElements->GetEntries()]) THnSparseC(Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()),
324 Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()),
325 3, nBins, minPosition, maxPosition);
329 minPosition[0] = +1.*intLimitDetElem;
330 minPosition[1] = lowEdgeActive;
331 minPosition[2] = zMin;
333 maxPosition[0] = +1.*extLimitDetElem;
334 maxPosition[1] = supEdgeActive;
335 maxPosition[2] = zMin+fThicknessActive;
337 new ((*fActiveElements)[fActiveElements->GetEntries()]) THnSparseC(Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()),
338 Form("MFTActiveElemHist_%02d%03d", fPlaneNumber, fActiveElements->GetEntries()),
339 3, nBins, minPosition, maxPosition);
341 if (supEdgeActive>0.) {
342 minPosition[1] = supEdgeActive;
343 maxPosition[1] = supEdgeActive+fHeightReadout;
346 minPosition[1] = lowEdgeActive-fHeightReadout;
347 maxPosition[1] = lowEdgeActive;
350 new ((*fReadoutElements)[fReadoutElements->GetEntries()]) THnSparseC(Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()),
351 Form("MFTReadoutElemHist_%02d%03d", fPlaneNumber, fReadoutElements->GetEntries()),
352 3, nBins, minPosition, maxPosition);
356 lowEdgeActive += fHeightActive - fActiveSuperposition;
357 supEdgeActive = lowEdgeActive + fHeightActive;
362 AliDebug(1, Form("Structure completed for MFT plane %s", GetName()));
368 //====================================================================================================================================================
370 THnSparseC* AliMFTPlane::GetActiveElement(Int_t id) {
372 if (id<0 || id>=GetNActiveElements()) return NULL;
373 else return (THnSparseC*) fActiveElements->At(id);
377 //====================================================================================================================================================
379 THnSparseC* AliMFTPlane::GetReadoutElement(Int_t id) {
381 if (id<0 || id>=GetNReadoutElements()) return NULL;
382 else return (THnSparseC*) fReadoutElements->At(id);
386 //====================================================================================================================================================
388 THnSparseC* AliMFTPlane::GetSupportElement(Int_t id) {
390 if (id<0 || id>=GetNSupportElements()) return NULL;
391 else return (THnSparseC*) fSupportElements->At(id);
395 //====================================================================================================================================================
397 void AliMFTPlane::DrawPlane(Option_t *opt) {
399 // ------------------- "FRONT" option ------------------
401 if (!strcmp(opt, "front")) {
403 TCanvas *cnv = new TCanvas("cnv", GetName(), 900, 900);
406 // printf("Created Canvas\n");
408 TH2D *h = new TH2D("tmp", GetName(),
409 1, 1.1*GetSupportElement(0)->GetAxis(0)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(0)->GetXmax(),
410 1, 1.1*GetSupportElement(0)->GetAxis(1)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(1)->GetXmax());
411 h->SetXTitle("x [cm]");
412 h->SetYTitle("y [cm]");
415 AliInfo("Created hist");
417 TEllipse *supportExt = new TEllipse(0.0, 0.0, fRMaxSupport, fRMaxSupport);
418 TEllipse *supportInt = new TEllipse(0.0, 0.0, fRMinSupport, fRMinSupport);
419 supportExt->SetFillColor(kCyan-10);
420 supportExt -> Draw("same");
421 supportInt -> Draw("same");
423 // printf("Created Ellipses\n");
425 for (Int_t iEl=0; iEl<GetNActiveElements(); iEl++) {
426 // printf("Active element %d\n", iEl);
427 if (!IsFront(GetActiveElement(iEl))) continue;
428 TPave *pave = new TPave(GetActiveElement(iEl)->GetAxis(0)->GetXmin(),
429 GetActiveElement(iEl)->GetAxis(1)->GetXmin(),
430 GetActiveElement(iEl)->GetAxis(0)->GetXmax(),
431 GetActiveElement(iEl)->GetAxis(1)->GetXmax(), 1);
432 pave -> SetFillColor(kGreen);
433 pave -> Draw("same");
436 for (Int_t iEl=0; iEl<GetNReadoutElements(); iEl++) {
437 // printf("Readout element %d\n", iEl);
438 if (!IsFront(GetReadoutElement(iEl))) continue;
439 TPave *pave = new TPave(GetReadoutElement(iEl)->GetAxis(0)->GetXmin(),
440 GetReadoutElement(iEl)->GetAxis(1)->GetXmin(),
441 GetReadoutElement(iEl)->GetAxis(0)->GetXmax(),
442 GetReadoutElement(iEl)->GetAxis(1)->GetXmax(), 1);
443 pave -> SetFillColor(kRed);
444 pave -> Draw("same");
449 // ------------------- "BACK" option ------------------
451 else if (!strcmp(opt, "back")) {
453 TCanvas *cnv = new TCanvas("cnv", GetName(), 900, 900);
456 TH2D *h = new TH2D("tmp", GetName(),
457 1, 1.1*GetSupportElement(0)->GetAxis(0)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(0)->GetXmax(),
458 1, 1.1*GetSupportElement(0)->GetAxis(1)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(1)->GetXmax());
459 h->SetXTitle("x [cm]");
460 h->SetYTitle("y [cm]");
463 TEllipse *supportExt = new TEllipse(0.0, 0.0, fRMaxSupport, fRMaxSupport);
464 TEllipse *supportInt = new TEllipse(0.0, 0.0, fRMinSupport, fRMinSupport);
465 supportExt -> SetFillColor(kCyan-10);
466 supportExt -> Draw("same");
467 supportInt -> Draw("same");
469 for (Int_t iEl=0; iEl<GetNActiveElements(); iEl++) {
470 if (IsFront(GetActiveElement(iEl))) continue;
471 TPave *pave = new TPave(GetActiveElement(iEl)->GetAxis(0)->GetXmin(),
472 GetActiveElement(iEl)->GetAxis(1)->GetXmin(),
473 GetActiveElement(iEl)->GetAxis(0)->GetXmax(),
474 GetActiveElement(iEl)->GetAxis(1)->GetXmax(), 1);
475 pave -> SetFillColor(kGreen);
476 pave -> Draw("same");
479 for (Int_t iEl=0; iEl<GetNReadoutElements(); iEl++) {
480 if (IsFront(GetReadoutElement(iEl))) continue;
481 TPave *pave = new TPave(GetReadoutElement(iEl)->GetAxis(0)->GetXmin(),
482 GetReadoutElement(iEl)->GetAxis(1)->GetXmin(),
483 GetReadoutElement(iEl)->GetAxis(0)->GetXmax(),
484 GetReadoutElement(iEl)->GetAxis(1)->GetXmax(), 1);
485 pave -> SetFillColor(kRed);
486 pave -> Draw("same");
491 // ------------------- "BOTH" option ------------------
493 else if (!strcmp(opt, "both")) {
495 TCanvas *cnv = new TCanvas("cnv", GetName(), 900, 900);
498 TH2D *h = new TH2D("tmp", GetName(),
499 1, 1.1*GetSupportElement(0)->GetAxis(0)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(0)->GetXmax(),
500 1, 1.1*GetSupportElement(0)->GetAxis(1)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(1)->GetXmax());
501 h->SetXTitle("x [cm]");
502 h->SetYTitle("y [cm]");
505 TEllipse *supportExt = new TEllipse(0.0, 0.0, fRMaxSupport, fRMaxSupport);
506 TEllipse *supportInt = new TEllipse(0.0, 0.0, fRMinSupport, fRMinSupport);
507 supportExt -> SetFillColor(kCyan-10);
508 supportExt -> Draw("same");
509 supportInt -> Draw("same");
511 for (Int_t iEl=0; iEl<GetNActiveElements(); iEl++) {
512 if (IsFront(GetActiveElement(iEl)) && GetActiveElement(iEl)->GetAxis(0)->GetXmin()<0.) {
513 TPave *pave = new TPave(GetActiveElement(iEl)->GetAxis(0)->GetXmin(),
514 GetActiveElement(iEl)->GetAxis(1)->GetXmin(),
515 TMath::Min(GetActiveElement(iEl)->GetAxis(0)->GetXmax(), 0.),
516 GetActiveElement(iEl)->GetAxis(1)->GetXmax(), 1);
517 pave -> SetFillColor(kGreen);
518 pave -> Draw("same");
520 else if (!IsFront(GetActiveElement(iEl)) && GetActiveElement(iEl)->GetAxis(0)->GetXmax()>0.) {
521 TPave *pave = new TPave(TMath::Max(GetActiveElement(iEl)->GetAxis(0)->GetXmin(), 0.),
522 GetActiveElement(iEl)->GetAxis(1)->GetXmin(),
523 GetActiveElement(iEl)->GetAxis(0)->GetXmax(),
524 GetActiveElement(iEl)->GetAxis(1)->GetXmax(), 1);
525 pave -> SetFillColor(kGreen);
526 pave -> Draw("same");
530 for (Int_t iEl=0; iEl<GetNReadoutElements(); iEl++) {
531 if (IsFront(GetReadoutElement(iEl)) && GetReadoutElement(iEl)->GetAxis(0)->GetXmin()<0.) {
532 TPave *pave = new TPave(GetReadoutElement(iEl)->GetAxis(0)->GetXmin(),
533 GetReadoutElement(iEl)->GetAxis(1)->GetXmin(),
534 TMath::Min(GetReadoutElement(iEl)->GetAxis(0)->GetXmax(), 0.),
535 GetReadoutElement(iEl)->GetAxis(1)->GetXmax(), 1);
536 pave -> SetFillColor(kRed);
537 pave -> Draw("same");
539 else if (!IsFront(GetReadoutElement(iEl)) && GetReadoutElement(iEl)->GetAxis(0)->GetXmax()>0.) {
540 TPave *pave = new TPave(TMath::Max(GetReadoutElement(iEl)->GetAxis(0)->GetXmin(), 0.),
541 GetReadoutElement(iEl)->GetAxis(1)->GetXmin(),
542 GetReadoutElement(iEl)->GetAxis(0)->GetXmax(),
543 GetReadoutElement(iEl)->GetAxis(1)->GetXmax(), 1);
544 pave -> SetFillColor(kRed);
545 pave -> Draw("same");
551 // ------------------- "PROFILE" option ------------------
553 else if (!strcmp(opt, "profile")) {
555 TCanvas *cnv = new TCanvas("cnv", GetName(), 300, 900);
558 TH2D *h = new TH2D("tmp", GetName(),
559 1, fZCenter-0.5, fZCenter+0.5,
560 1, 1.1*GetSupportElement(0)->GetAxis(1)->GetXmin(), 1.1*GetSupportElement(0)->GetAxis(1)->GetXmax());
561 h->SetXTitle("z [cm]");
562 h->SetYTitle("y [cm]");
565 TPave *supportExt = new TPave(GetSupportElement(0)->GetAxis(2)->GetXmin(), -fRMaxSupport,
566 GetSupportElement(0)->GetAxis(2)->GetXmax(), fRMaxSupport);
567 TPave *supportInt = new TPave(GetSupportElement(0)->GetAxis(2)->GetXmin(), -fRMinSupport,
568 GetSupportElement(0)->GetAxis(2)->GetXmax(), fRMinSupport);
569 supportExt -> SetFillColor(kCyan-10);
570 supportInt -> SetFillColor(kCyan-10);
571 supportExt -> SetBorderSize(1);
572 supportInt -> SetBorderSize(1);
573 supportExt -> Draw("same");
574 supportInt -> Draw("same");
576 for (Int_t iEl=0; iEl<GetNActiveElements(); iEl++) {
578 if (IsFront(GetActiveElement(iEl))) {
579 pave = new TPave(GetActiveElement(iEl)->GetAxis(2)->GetXmax() -
580 5*(GetActiveElement(iEl)->GetAxis(2)->GetXmax()-GetActiveElement(iEl)->GetAxis(2)->GetXmin()),
581 GetActiveElement(iEl)->GetAxis(1)->GetXmin(),
582 GetActiveElement(iEl)->GetAxis(2)->GetXmax(),
583 GetActiveElement(iEl)->GetAxis(1)->GetXmax(), 1);
586 pave = new TPave(GetActiveElement(iEl)->GetAxis(2)->GetXmin(),
587 GetActiveElement(iEl)->GetAxis(1)->GetXmin(),
588 GetActiveElement(iEl)->GetAxis(2)->GetXmin() +
589 5*(GetActiveElement(iEl)->GetAxis(2)->GetXmax()-GetActiveElement(iEl)->GetAxis(2)->GetXmin()),
590 GetActiveElement(iEl)->GetAxis(1)->GetXmax(), 1);
592 pave -> SetFillColor(kGreen);
593 pave -> Draw("same");
596 for (Int_t iEl=0; iEl<GetNReadoutElements(); iEl++) {
598 if (IsFront(GetReadoutElement(iEl))) {
599 pave = new TPave(GetReadoutElement(iEl)->GetAxis(2)->GetXmax() -
600 5*(GetReadoutElement(iEl)->GetAxis(2)->GetXmax()-GetReadoutElement(iEl)->GetAxis(2)->GetXmin()),
601 GetReadoutElement(iEl)->GetAxis(1)->GetXmin(),
602 GetReadoutElement(iEl)->GetAxis(2)->GetXmax(),
603 GetReadoutElement(iEl)->GetAxis(1)->GetXmax(), 1);
606 pave = new TPave(GetReadoutElement(iEl)->GetAxis(2)->GetXmin(),
607 GetReadoutElement(iEl)->GetAxis(1)->GetXmin(),
608 GetReadoutElement(iEl)->GetAxis(2)->GetXmin() +
609 5*(GetReadoutElement(iEl)->GetAxis(2)->GetXmax()-GetReadoutElement(iEl)->GetAxis(2)->GetXmin()),
610 GetReadoutElement(iEl)->GetAxis(1)->GetXmax(), 1);
612 pave -> SetFillColor(kRed);
613 pave -> Draw("same");
620 //====================================================================================================================================================