ROOT logo
/**************************************************************************
 * 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.                  *
 **************************************************************************/

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  TRD calibration class for status of chambers                             //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "TH2D.h"
#include "AliTRDCalChamberStatus.h"

ClassImp(AliTRDCalChamberStatus)

//_____________________________________________________________________________
AliTRDCalChamberStatus::AliTRDCalChamberStatus()
  :TNamed()
{
  //
  // AliTRDCalChamberStatus default constructor
  //

  for (Int_t idet = 0; idet < kNdet; idet++) {
    fStatus[idet] = 0;
  }

}

//_____________________________________________________________________________
AliTRDCalChamberStatus::AliTRDCalChamberStatus(const Text_t *name, const Text_t *title)
  :TNamed(name,title)
{
  //
  // AliTRDCalChamberStatus constructor
  //

  for (Int_t idet = 0; idet < kNdet; idet++) {
    fStatus[idet] = 0;
  }

}
//_____________________________________________________________________________
void AliTRDCalChamberStatus::SetStatus(Int_t det, Char_t status) 
{

  //
  // set the chamber status
  //
  //

  switch(status)
    {
    case AliTRDCalChamberStatus::kGood:
      SETBIT(fStatus[det], kGood);
      CLRBIT(fStatus[det], kNoData);
      CLRBIT(fStatus[det], kBadCalibrated);
      break;
    case AliTRDCalChamberStatus::kNoData:
      CLRBIT(fStatus[det], kGood);
      SETBIT(fStatus[det], kNoData);
      SETBIT(fStatus[det], kNoDataHalfChamberSideA);
      SETBIT(fStatus[det], kNoDataHalfChamberSideB);
      //      SETBIT(fStatus[det], kBadCalibrated);
      break;
    case AliTRDCalChamberStatus::kNoDataHalfChamberSideA:
      SETBIT(fStatus[det], kNoDataHalfChamberSideA);
      if(TESTBIT(fStatus[det], kNoDataHalfChamberSideB)){
	SETBIT(fStatus[det], kNoData);
	CLRBIT(fStatus[det], kGood);
      }
      break;
    case AliTRDCalChamberStatus::kNoDataHalfChamberSideB:
      SETBIT(fStatus[det], kNoDataHalfChamberSideB);
      if(TESTBIT(fStatus[det], kNoDataHalfChamberSideA)) {
	CLRBIT(fStatus[det], kGood);
	SETBIT(fStatus[det], kNoData);
      }
      break;
    case AliTRDCalChamberStatus::kBadCalibrated:
      CLRBIT(fStatus[det], kGood);
      SETBIT(fStatus[det], kBadCalibrated);
      break;
    case AliTRDCalChamberStatus::kNotCalibrated:
      SETBIT(fStatus[det], kNotCalibrated);
      //CLRBIT(fStatus[det], kBadCalibrated);
      break;
    default:
      CLRBIT(fStatus[det], kGood);
      CLRBIT(fStatus[det], kNoData);
      CLRBIT(fStatus[det], kNoDataHalfChamberSideA);
      CLRBIT(fStatus[det], kNoDataHalfChamberSideB);
      CLRBIT(fStatus[det], kBadCalibrated);
      CLRBIT(fStatus[det], kNotCalibrated);
    }

}
//_____________________________________________________________________________
void AliTRDCalChamberStatus::UnsetStatusBit(Int_t det, Char_t status) 
{

  //
  // unset the chamber status bit
  //
  //

  switch(status)
    {
    case AliTRDCalChamberStatus::kGood:
      CLRBIT(fStatus[det], kGood);
      break;
    case AliTRDCalChamberStatus::kNoData:
      CLRBIT(fStatus[det], kNoData);
      break;
    case AliTRDCalChamberStatus::kNoDataHalfChamberSideA:
      CLRBIT(fStatus[det], kNoDataHalfChamberSideA);
      break;
    case AliTRDCalChamberStatus::kNoDataHalfChamberSideB:
      CLRBIT(fStatus[det], kNoDataHalfChamberSideB);
      break;
    case AliTRDCalChamberStatus::kBadCalibrated:
      CLRBIT(fStatus[det], kBadCalibrated);
      break;
    case AliTRDCalChamberStatus::kNotCalibrated:
      CLRBIT(fStatus[det], kNotCalibrated);
      break;
    default:
      CLRBIT(fStatus[det], kGood);
      CLRBIT(fStatus[det], kNoData);
      CLRBIT(fStatus[det], kNoDataHalfChamberSideA);
      CLRBIT(fStatus[det], kNoDataHalfChamberSideB);
      CLRBIT(fStatus[det], kBadCalibrated);
      CLRBIT(fStatus[det], kNotCalibrated);
    }

}
//_____________________________________________________________________________
TH2D* AliTRDCalChamberStatus::Plot(Int_t sm, Int_t rphi) 
{
  //
  // Plot chamber status for supermodule and halfchamberside 
  // as a function of layer and stack
  //

  TH2D *h2 = new TH2D(Form("sm_%d_rphi_%d",sm,rphi),Form("sm_%d_rphi_%d",sm,rphi),5,0.0,5.0,6,0.0,6.0);
  
  h2->SetXTitle("stack");
  h2->SetYTitle("layer");

  Int_t start = sm*30;
  Int_t end = (sm+1)*30;
  
  for(Int_t i=start; i<end; i++) {
    Int_t layer  = i%6;
    Int_t stackn  = static_cast<int>((i-start)/6.);
    Int_t status = GetStatus(i);
    h2->Fill(stackn,layer,status);
    if(rphi == 0) {    
      if(!TESTBIT(fStatus[i], kNoDataHalfChamberSideB)) h2->Fill(stackn,layer,status);
    }
    else if(rphi == 1) {
      if(!TESTBIT(fStatus[i], kNoDataHalfChamberSideA)) h2->Fill(stackn,layer,status);
    }
  }

  return h2;

}
//_____________________________________________________________________________
TH2D* AliTRDCalChamberStatus::PlotNoData(Int_t sm, Int_t rphi) 
{
  //
  // Plot chamber data status for supermodule and halfchamberside 
  // as a function of layer and stack
  //

  TH2D *h2 = new TH2D(Form("sm_%d_rphi_%d_data",sm,rphi),Form("sm_%d_rphi_%d_data",sm,rphi),5,0.0,5.0,6,0.0,6.0);
  
  h2->SetXTitle("stack");
  h2->SetYTitle("layer");

  Int_t start = sm*30;
  Int_t end = (sm+1)*30;
  
  for(Int_t i=start; i<end; i++) {
    Int_t layer  = i%6;
    Int_t stackn  = static_cast<int>((i-start)/6.);
    if(rphi == 0) {    
      if(TESTBIT(fStatus[i], kNoDataHalfChamberSideB)) h2->Fill(stackn,layer,1);
      if(TESTBIT(fStatus[i], kNoData)) h2->Fill(stackn,layer,1);
    }
    else if(rphi == 1) {
      if(!TESTBIT(fStatus[i], kNoDataHalfChamberSideA)) h2->Fill(stackn,layer,1);
      if(!TESTBIT(fStatus[i], kNoData)) h2->Fill(stackn,layer,1);
    }
  }

  return h2;

}
//_____________________________________________________________________________
TH2D* AliTRDCalChamberStatus::PlotBadCalibrated(Int_t sm, Int_t rphi) 
{
  //
  // Plot chamber calibration status for supermodule and halfchamberside 
  // as a function of layer and stack
  //

  TH2D *h2 = new TH2D(Form("sm_%d_rphi_%d_calib",sm,rphi),Form("sm_%d_rphi_%d_calib",sm,rphi),5,0.0,5.0,6,0.0,6.0);
  
  h2->SetXTitle("stack");
  h2->SetYTitle("layer");

  Int_t start = sm*30;
  Int_t end = (sm+1)*30;
  
  for(Int_t i=start; i<end; i++) {
    Int_t layer  = i%6;
    Int_t stackn  = static_cast<int>((i-start)/6.);
    if(rphi == 0) {    
      if(TESTBIT(fStatus[i], kBadCalibrated)) h2->Fill(stackn,layer,1);
    }
    else if(rphi == 1) {
      if(TESTBIT(fStatus[i], kBadCalibrated)) h2->Fill(stackn,layer,1);
    }
  }

  return h2;

}
//_____________________________________________________________________________
TH2D* AliTRDCalChamberStatus::Plot(Int_t sm) 
{
  //
  // Plot chamber status for supermodule and halfchamberside 
  // as a function of layer and stack
  //

  TH2D *h2 = new TH2D(Form("sm_%d",sm),Form("sm_%d",sm),5,0.0,5.0,6,0.0,6.0);
  
  h2->SetXTitle("stack");
  h2->SetYTitle("layer");

  Int_t start = sm*30;
  Int_t end = (sm+1)*30;
  
  for(Int_t i=start; i<end; i++) {
    Int_t layer  = i%6;
    Int_t stackn  = static_cast<int>((i-start)/6.);
    Int_t status = GetStatus(i);
    h2->Fill(stackn,layer,status);
  }

  return h2;

}
 AliTRDCalChamberStatus.cxx:1
 AliTRDCalChamberStatus.cxx:2
 AliTRDCalChamberStatus.cxx:3
 AliTRDCalChamberStatus.cxx:4
 AliTRDCalChamberStatus.cxx:5
 AliTRDCalChamberStatus.cxx:6
 AliTRDCalChamberStatus.cxx:7
 AliTRDCalChamberStatus.cxx:8
 AliTRDCalChamberStatus.cxx:9
 AliTRDCalChamberStatus.cxx:10
 AliTRDCalChamberStatus.cxx:11
 AliTRDCalChamberStatus.cxx:12
 AliTRDCalChamberStatus.cxx:13
 AliTRDCalChamberStatus.cxx:14
 AliTRDCalChamberStatus.cxx:15
 AliTRDCalChamberStatus.cxx:16
 AliTRDCalChamberStatus.cxx:17
 AliTRDCalChamberStatus.cxx:18
 AliTRDCalChamberStatus.cxx:19
 AliTRDCalChamberStatus.cxx:20
 AliTRDCalChamberStatus.cxx:21
 AliTRDCalChamberStatus.cxx:22
 AliTRDCalChamberStatus.cxx:23
 AliTRDCalChamberStatus.cxx:24
 AliTRDCalChamberStatus.cxx:25
 AliTRDCalChamberStatus.cxx:26
 AliTRDCalChamberStatus.cxx:27
 AliTRDCalChamberStatus.cxx:28
 AliTRDCalChamberStatus.cxx:29
 AliTRDCalChamberStatus.cxx:30
 AliTRDCalChamberStatus.cxx:31
 AliTRDCalChamberStatus.cxx:32
 AliTRDCalChamberStatus.cxx:33
 AliTRDCalChamberStatus.cxx:34
 AliTRDCalChamberStatus.cxx:35
 AliTRDCalChamberStatus.cxx:36
 AliTRDCalChamberStatus.cxx:37
 AliTRDCalChamberStatus.cxx:38
 AliTRDCalChamberStatus.cxx:39
 AliTRDCalChamberStatus.cxx:40
 AliTRDCalChamberStatus.cxx:41
 AliTRDCalChamberStatus.cxx:42
 AliTRDCalChamberStatus.cxx:43
 AliTRDCalChamberStatus.cxx:44
 AliTRDCalChamberStatus.cxx:45
 AliTRDCalChamberStatus.cxx:46
 AliTRDCalChamberStatus.cxx:47
 AliTRDCalChamberStatus.cxx:48
 AliTRDCalChamberStatus.cxx:49
 AliTRDCalChamberStatus.cxx:50
 AliTRDCalChamberStatus.cxx:51
 AliTRDCalChamberStatus.cxx:52
 AliTRDCalChamberStatus.cxx:53
 AliTRDCalChamberStatus.cxx:54
 AliTRDCalChamberStatus.cxx:55
 AliTRDCalChamberStatus.cxx:56
 AliTRDCalChamberStatus.cxx:57
 AliTRDCalChamberStatus.cxx:58
 AliTRDCalChamberStatus.cxx:59
 AliTRDCalChamberStatus.cxx:60
 AliTRDCalChamberStatus.cxx:61
 AliTRDCalChamberStatus.cxx:62
 AliTRDCalChamberStatus.cxx:63
 AliTRDCalChamberStatus.cxx:64
 AliTRDCalChamberStatus.cxx:65
 AliTRDCalChamberStatus.cxx:66
 AliTRDCalChamberStatus.cxx:67
 AliTRDCalChamberStatus.cxx:68
 AliTRDCalChamberStatus.cxx:69
 AliTRDCalChamberStatus.cxx:70
 AliTRDCalChamberStatus.cxx:71
 AliTRDCalChamberStatus.cxx:72
 AliTRDCalChamberStatus.cxx:73
 AliTRDCalChamberStatus.cxx:74
 AliTRDCalChamberStatus.cxx:75
 AliTRDCalChamberStatus.cxx:76
 AliTRDCalChamberStatus.cxx:77
 AliTRDCalChamberStatus.cxx:78
 AliTRDCalChamberStatus.cxx:79
 AliTRDCalChamberStatus.cxx:80
 AliTRDCalChamberStatus.cxx:81
 AliTRDCalChamberStatus.cxx:82
 AliTRDCalChamberStatus.cxx:83
 AliTRDCalChamberStatus.cxx:84
 AliTRDCalChamberStatus.cxx:85
 AliTRDCalChamberStatus.cxx:86
 AliTRDCalChamberStatus.cxx:87
 AliTRDCalChamberStatus.cxx:88
 AliTRDCalChamberStatus.cxx:89
 AliTRDCalChamberStatus.cxx:90
 AliTRDCalChamberStatus.cxx:91
 AliTRDCalChamberStatus.cxx:92
 AliTRDCalChamberStatus.cxx:93
 AliTRDCalChamberStatus.cxx:94
 AliTRDCalChamberStatus.cxx:95
 AliTRDCalChamberStatus.cxx:96
 AliTRDCalChamberStatus.cxx:97
 AliTRDCalChamberStatus.cxx:98
 AliTRDCalChamberStatus.cxx:99
 AliTRDCalChamberStatus.cxx:100
 AliTRDCalChamberStatus.cxx:101
 AliTRDCalChamberStatus.cxx:102
 AliTRDCalChamberStatus.cxx:103
 AliTRDCalChamberStatus.cxx:104
 AliTRDCalChamberStatus.cxx:105
 AliTRDCalChamberStatus.cxx:106
 AliTRDCalChamberStatus.cxx:107
 AliTRDCalChamberStatus.cxx:108
 AliTRDCalChamberStatus.cxx:109
 AliTRDCalChamberStatus.cxx:110
 AliTRDCalChamberStatus.cxx:111
 AliTRDCalChamberStatus.cxx:112
 AliTRDCalChamberStatus.cxx:113
 AliTRDCalChamberStatus.cxx:114
 AliTRDCalChamberStatus.cxx:115
 AliTRDCalChamberStatus.cxx:116
 AliTRDCalChamberStatus.cxx:117
 AliTRDCalChamberStatus.cxx:118
 AliTRDCalChamberStatus.cxx:119
 AliTRDCalChamberStatus.cxx:120
 AliTRDCalChamberStatus.cxx:121
 AliTRDCalChamberStatus.cxx:122
 AliTRDCalChamberStatus.cxx:123
 AliTRDCalChamberStatus.cxx:124
 AliTRDCalChamberStatus.cxx:125
 AliTRDCalChamberStatus.cxx:126
 AliTRDCalChamberStatus.cxx:127
 AliTRDCalChamberStatus.cxx:128
 AliTRDCalChamberStatus.cxx:129
 AliTRDCalChamberStatus.cxx:130
 AliTRDCalChamberStatus.cxx:131
 AliTRDCalChamberStatus.cxx:132
 AliTRDCalChamberStatus.cxx:133
 AliTRDCalChamberStatus.cxx:134
 AliTRDCalChamberStatus.cxx:135
 AliTRDCalChamberStatus.cxx:136
 AliTRDCalChamberStatus.cxx:137
 AliTRDCalChamberStatus.cxx:138
 AliTRDCalChamberStatus.cxx:139
 AliTRDCalChamberStatus.cxx:140
 AliTRDCalChamberStatus.cxx:141
 AliTRDCalChamberStatus.cxx:142
 AliTRDCalChamberStatus.cxx:143
 AliTRDCalChamberStatus.cxx:144
 AliTRDCalChamberStatus.cxx:145
 AliTRDCalChamberStatus.cxx:146
 AliTRDCalChamberStatus.cxx:147
 AliTRDCalChamberStatus.cxx:148
 AliTRDCalChamberStatus.cxx:149
 AliTRDCalChamberStatus.cxx:150
 AliTRDCalChamberStatus.cxx:151
 AliTRDCalChamberStatus.cxx:152
 AliTRDCalChamberStatus.cxx:153
 AliTRDCalChamberStatus.cxx:154
 AliTRDCalChamberStatus.cxx:155
 AliTRDCalChamberStatus.cxx:156
 AliTRDCalChamberStatus.cxx:157
 AliTRDCalChamberStatus.cxx:158
 AliTRDCalChamberStatus.cxx:159
 AliTRDCalChamberStatus.cxx:160
 AliTRDCalChamberStatus.cxx:161
 AliTRDCalChamberStatus.cxx:162
 AliTRDCalChamberStatus.cxx:163
 AliTRDCalChamberStatus.cxx:164
 AliTRDCalChamberStatus.cxx:165
 AliTRDCalChamberStatus.cxx:166
 AliTRDCalChamberStatus.cxx:167
 AliTRDCalChamberStatus.cxx:168
 AliTRDCalChamberStatus.cxx:169
 AliTRDCalChamberStatus.cxx:170
 AliTRDCalChamberStatus.cxx:171
 AliTRDCalChamberStatus.cxx:172
 AliTRDCalChamberStatus.cxx:173
 AliTRDCalChamberStatus.cxx:174
 AliTRDCalChamberStatus.cxx:175
 AliTRDCalChamberStatus.cxx:176
 AliTRDCalChamberStatus.cxx:177
 AliTRDCalChamberStatus.cxx:178
 AliTRDCalChamberStatus.cxx:179
 AliTRDCalChamberStatus.cxx:180
 AliTRDCalChamberStatus.cxx:181
 AliTRDCalChamberStatus.cxx:182
 AliTRDCalChamberStatus.cxx:183
 AliTRDCalChamberStatus.cxx:184
 AliTRDCalChamberStatus.cxx:185
 AliTRDCalChamberStatus.cxx:186
 AliTRDCalChamberStatus.cxx:187
 AliTRDCalChamberStatus.cxx:188
 AliTRDCalChamberStatus.cxx:189
 AliTRDCalChamberStatus.cxx:190
 AliTRDCalChamberStatus.cxx:191
 AliTRDCalChamberStatus.cxx:192
 AliTRDCalChamberStatus.cxx:193
 AliTRDCalChamberStatus.cxx:194
 AliTRDCalChamberStatus.cxx:195
 AliTRDCalChamberStatus.cxx:196
 AliTRDCalChamberStatus.cxx:197
 AliTRDCalChamberStatus.cxx:198
 AliTRDCalChamberStatus.cxx:199
 AliTRDCalChamberStatus.cxx:200
 AliTRDCalChamberStatus.cxx:201
 AliTRDCalChamberStatus.cxx:202
 AliTRDCalChamberStatus.cxx:203
 AliTRDCalChamberStatus.cxx:204
 AliTRDCalChamberStatus.cxx:205
 AliTRDCalChamberStatus.cxx:206
 AliTRDCalChamberStatus.cxx:207
 AliTRDCalChamberStatus.cxx:208
 AliTRDCalChamberStatus.cxx:209
 AliTRDCalChamberStatus.cxx:210
 AliTRDCalChamberStatus.cxx:211
 AliTRDCalChamberStatus.cxx:212
 AliTRDCalChamberStatus.cxx:213
 AliTRDCalChamberStatus.cxx:214
 AliTRDCalChamberStatus.cxx:215
 AliTRDCalChamberStatus.cxx:216
 AliTRDCalChamberStatus.cxx:217
 AliTRDCalChamberStatus.cxx:218
 AliTRDCalChamberStatus.cxx:219
 AliTRDCalChamberStatus.cxx:220
 AliTRDCalChamberStatus.cxx:221
 AliTRDCalChamberStatus.cxx:222
 AliTRDCalChamberStatus.cxx:223
 AliTRDCalChamberStatus.cxx:224
 AliTRDCalChamberStatus.cxx:225
 AliTRDCalChamberStatus.cxx:226
 AliTRDCalChamberStatus.cxx:227
 AliTRDCalChamberStatus.cxx:228
 AliTRDCalChamberStatus.cxx:229
 AliTRDCalChamberStatus.cxx:230
 AliTRDCalChamberStatus.cxx:231
 AliTRDCalChamberStatus.cxx:232
 AliTRDCalChamberStatus.cxx:233
 AliTRDCalChamberStatus.cxx:234
 AliTRDCalChamberStatus.cxx:235
 AliTRDCalChamberStatus.cxx:236
 AliTRDCalChamberStatus.cxx:237
 AliTRDCalChamberStatus.cxx:238
 AliTRDCalChamberStatus.cxx:239
 AliTRDCalChamberStatus.cxx:240
 AliTRDCalChamberStatus.cxx:241
 AliTRDCalChamberStatus.cxx:242
 AliTRDCalChamberStatus.cxx:243
 AliTRDCalChamberStatus.cxx:244
 AliTRDCalChamberStatus.cxx:245
 AliTRDCalChamberStatus.cxx:246
 AliTRDCalChamberStatus.cxx:247
 AliTRDCalChamberStatus.cxx:248
 AliTRDCalChamberStatus.cxx:249
 AliTRDCalChamberStatus.cxx:250
 AliTRDCalChamberStatus.cxx:251
 AliTRDCalChamberStatus.cxx:252
 AliTRDCalChamberStatus.cxx:253
 AliTRDCalChamberStatus.cxx:254
 AliTRDCalChamberStatus.cxx:255
 AliTRDCalChamberStatus.cxx:256
 AliTRDCalChamberStatus.cxx:257
 AliTRDCalChamberStatus.cxx:258
 AliTRDCalChamberStatus.cxx:259
 AliTRDCalChamberStatus.cxx:260
 AliTRDCalChamberStatus.cxx:261
 AliTRDCalChamberStatus.cxx:262
 AliTRDCalChamberStatus.cxx:263
 AliTRDCalChamberStatus.cxx:264
 AliTRDCalChamberStatus.cxx:265
 AliTRDCalChamberStatus.cxx:266
 AliTRDCalChamberStatus.cxx:267
 AliTRDCalChamberStatus.cxx:268
 AliTRDCalChamberStatus.cxx:269