ROOT logo
////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  Chamber Info Incapsulation                                             //
//                                                                        //
//  Authors:                                                              //
//    Alexandru Bercuci <A.Bercuci@gsi.de>                                //
//                                                                        //
////////////////////////////////////////////////////////////////////////////



#include "TMath.h"
#include "TBox.h"
#include "TLatex.h"

#include "AliLog.h"
#include "AliTRDchmbInfo.h"
#include "AliTRDgeometry.h"

ClassImp(AliTRDchmbInfo)
//____________________________________________
AliTRDchmbInfo::AliTRDchmbInfo()
  :TNamed()
  ,fDet(-1)
  ,fStatus(0)
  ,fBox(NULL)
  ,fShade(NULL)
  ,fLabel(NULL)
{
//  Constructor. Reset all fields.
  memset(fPosition, 0, 4*sizeof(Double_t));
}


//____________________________________________
AliTRDchmbInfo::AliTRDchmbInfo(Int_t det, Int_t stat, Double_t p[4])
  :TNamed(Form("D%03d", det), "")
  ,fDet(det)
  ,fStatus(stat)
  ,fBox(NULL)
  ,fShade(NULL)
  ,fLabel(NULL)
{
//  Constructor. Set position fields.
  SetPosition(p);
}

//____________________________________________
AliTRDchmbInfo::~AliTRDchmbInfo()
{
//  Destructor. 
  if(fLabel) delete fLabel;
  //if(fShade) delete fShade;
  if(fBox) delete fBox;
}

//____________________________________________
void AliTRDchmbInfo::Print(Option_t */*o*/) const
{
//   Dump formated chamber info

  printf("  DET[%03d] Status[%d]\n", fDet, fStatus);
  printf("  eta[%f %f] phi[%f %f]\n", fPosition[0], fPosition[2], fPosition[1], fPosition[3]);
}

//____________________________________________
void AliTRDchmbInfo::SetDetector(Int_t det)
{
// register detector no.
  fDet = det;
  SetName(Form("D%03d", det));
}

//____________________________________________
void AliTRDchmbInfo::Draw(Option_t *opt)
{
// Set style parameters according to chamber status
// Options are 
//   p : pad number on x axis [default eta]
//   s : draw sector number on middle of stack 2 [default detector number] 
  
  Int_t style[] = {0, 3003, 3008};
  if(!fBox) fBox = new TBox();
  fBox->SetLineColor(kBlack);fBox->SetFillColor(kWhite);fBox->SetFillStyle(style[0]);
  Int_t stk(AliTRDgeometry::GetStack(fDet));
  Float_t xmin(0.), xmax(0.);
  if(strchr(opt, 'p')){
    xmin=-0.6+16*(4-stk)-(stk<2?4:0); xmax=xmin+(stk==2?12:16)-0.2;
  } else {
    xmin=fPosition[0]; xmax=fPosition[2];
  }
  if(strchr(opt, 's')){
    if(stk==2){
      if(!fLabel) fLabel = new TLatex(0.5*(fPosition[0]+fPosition[2]), 0.5*(fPosition[1]+fPosition[3]), Form("%02d", AliTRDgeometry::GetSector(fDet)));
    }
  } else {
    if(!fLabel) fLabel = new TLatex(0.5*(fPosition[0]+fPosition[2]), 0.5*(fPosition[1]+fPosition[3]), Form("%03d", fDet));
  }
  if(fLabel){fLabel->SetTextAlign(22);fLabel->SetTextColor(kBlack); fLabel->SetTextFont(32);fLabel->SetTextSize(0.03);}

  AliDebug(2, Form("D[%03d] 0[%+4.1f %+4.1f] 1[%+4.1f %+4.1f] opt[%d]", fDet, xmin, fPosition[1], xmax, fPosition[3], fStatus));
  fBox->SetX1(xmin); fBox->SetX2(xmax); fBox->SetY1(fPosition[1]); fBox->SetY2(fPosition[3]);
  if(fStatus==1){
    fBox->SetFillStyle(style[1]);fBox->SetFillColor(kBlack);
  } else {
    if(fStatus==2){
      fShade = fBox->DrawBox(xmin, fPosition[1], xmax, 0.5*(fPosition[3]+fPosition[1]));
      fShade->SetFillStyle(style[2]);fShade->SetFillColor(kGreen);
    } else if(fStatus==3){
      fShade = fBox->DrawBox(xmin, 0.5*(fPosition[3]+fPosition[1]), xmax, fPosition[3]);
      fShade->SetFillStyle(style[2]);fShade->SetFillColor(kRed);
    } else if(fStatus!=0){
      AliError(Form("Wrong chmb. status[%d] for det[%03d]", fStatus, fDet));
      return;
    }
  }
  fBox->Draw();
  if(fLabel) fLabel->Draw();
}
 AliTRDchmbInfo.cxx:1
 AliTRDchmbInfo.cxx:2
 AliTRDchmbInfo.cxx:3
 AliTRDchmbInfo.cxx:4
 AliTRDchmbInfo.cxx:5
 AliTRDchmbInfo.cxx:6
 AliTRDchmbInfo.cxx:7
 AliTRDchmbInfo.cxx:8
 AliTRDchmbInfo.cxx:9
 AliTRDchmbInfo.cxx:10
 AliTRDchmbInfo.cxx:11
 AliTRDchmbInfo.cxx:12
 AliTRDchmbInfo.cxx:13
 AliTRDchmbInfo.cxx:14
 AliTRDchmbInfo.cxx:15
 AliTRDchmbInfo.cxx:16
 AliTRDchmbInfo.cxx:17
 AliTRDchmbInfo.cxx:18
 AliTRDchmbInfo.cxx:19
 AliTRDchmbInfo.cxx:20
 AliTRDchmbInfo.cxx:21
 AliTRDchmbInfo.cxx:22
 AliTRDchmbInfo.cxx:23
 AliTRDchmbInfo.cxx:24
 AliTRDchmbInfo.cxx:25
 AliTRDchmbInfo.cxx:26
 AliTRDchmbInfo.cxx:27
 AliTRDchmbInfo.cxx:28
 AliTRDchmbInfo.cxx:29
 AliTRDchmbInfo.cxx:30
 AliTRDchmbInfo.cxx:31
 AliTRDchmbInfo.cxx:32
 AliTRDchmbInfo.cxx:33
 AliTRDchmbInfo.cxx:34
 AliTRDchmbInfo.cxx:35
 AliTRDchmbInfo.cxx:36
 AliTRDchmbInfo.cxx:37
 AliTRDchmbInfo.cxx:38
 AliTRDchmbInfo.cxx:39
 AliTRDchmbInfo.cxx:40
 AliTRDchmbInfo.cxx:41
 AliTRDchmbInfo.cxx:42
 AliTRDchmbInfo.cxx:43
 AliTRDchmbInfo.cxx:44
 AliTRDchmbInfo.cxx:45
 AliTRDchmbInfo.cxx:46
 AliTRDchmbInfo.cxx:47
 AliTRDchmbInfo.cxx:48
 AliTRDchmbInfo.cxx:49
 AliTRDchmbInfo.cxx:50
 AliTRDchmbInfo.cxx:51
 AliTRDchmbInfo.cxx:52
 AliTRDchmbInfo.cxx:53
 AliTRDchmbInfo.cxx:54
 AliTRDchmbInfo.cxx:55
 AliTRDchmbInfo.cxx:56
 AliTRDchmbInfo.cxx:57
 AliTRDchmbInfo.cxx:58
 AliTRDchmbInfo.cxx:59
 AliTRDchmbInfo.cxx:60
 AliTRDchmbInfo.cxx:61
 AliTRDchmbInfo.cxx:62
 AliTRDchmbInfo.cxx:63
 AliTRDchmbInfo.cxx:64
 AliTRDchmbInfo.cxx:65
 AliTRDchmbInfo.cxx:66
 AliTRDchmbInfo.cxx:67
 AliTRDchmbInfo.cxx:68
 AliTRDchmbInfo.cxx:69
 AliTRDchmbInfo.cxx:70
 AliTRDchmbInfo.cxx:71
 AliTRDchmbInfo.cxx:72
 AliTRDchmbInfo.cxx:73
 AliTRDchmbInfo.cxx:74
 AliTRDchmbInfo.cxx:75
 AliTRDchmbInfo.cxx:76
 AliTRDchmbInfo.cxx:77
 AliTRDchmbInfo.cxx:78
 AliTRDchmbInfo.cxx:79
 AliTRDchmbInfo.cxx:80
 AliTRDchmbInfo.cxx:81
 AliTRDchmbInfo.cxx:82
 AliTRDchmbInfo.cxx:83
 AliTRDchmbInfo.cxx:84
 AliTRDchmbInfo.cxx:85
 AliTRDchmbInfo.cxx:86
 AliTRDchmbInfo.cxx:87
 AliTRDchmbInfo.cxx:88
 AliTRDchmbInfo.cxx:89
 AliTRDchmbInfo.cxx:90
 AliTRDchmbInfo.cxx:91
 AliTRDchmbInfo.cxx:92
 AliTRDchmbInfo.cxx:93
 AliTRDchmbInfo.cxx:94
 AliTRDchmbInfo.cxx:95
 AliTRDchmbInfo.cxx:96
 AliTRDchmbInfo.cxx:97
 AliTRDchmbInfo.cxx:98
 AliTRDchmbInfo.cxx:99
 AliTRDchmbInfo.cxx:100
 AliTRDchmbInfo.cxx:101
 AliTRDchmbInfo.cxx:102
 AliTRDchmbInfo.cxx:103
 AliTRDchmbInfo.cxx:104
 AliTRDchmbInfo.cxx:105
 AliTRDchmbInfo.cxx:106
 AliTRDchmbInfo.cxx:107
 AliTRDchmbInfo.cxx:108
 AliTRDchmbInfo.cxx:109
 AliTRDchmbInfo.cxx:110
 AliTRDchmbInfo.cxx:111
 AliTRDchmbInfo.cxx:112
 AliTRDchmbInfo.cxx:113
 AliTRDchmbInfo.cxx:114
 AliTRDchmbInfo.cxx:115
 AliTRDchmbInfo.cxx:116
 AliTRDchmbInfo.cxx:117
 AliTRDchmbInfo.cxx:118
 AliTRDchmbInfo.cxx:119