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

////////////////////////////////////////////////////////////////////////////
//                                                                        //
// AliTRDCalibChamberStatus: to determine which half chambers are off     //
// Produce a AliTRDCalChamberStatus calibration object                    //
// Check with the AliTRDCalDCSFEEv2 info                                  //
//                                                                        //
//                                                                        //
// Authors:                                                               //
//   J. Book (jbook@ikf.uni-frankfurt.de)                                 //
//   R. Bailhache (rbailhache@ikf.uni-frankfurt.de)                       //
//                                                                        //
////////////////////////////////////////////////////////////////////////////


//Root includes
#include <THnSparse.h>

#include <TDirectory.h>
#include <TFile.h>
#include <TAxis.h>
#include <TH2F.h>
#include <TStyle.h>
#include <TCanvas.h>

//AliRoot includes
#include "AliRawReader.h"

//header file
#include "AliLog.h"
#include "AliTRDCalibChamberStatus.h"
#include "AliTRDgeometry.h"
#include "AliTRDfeeParam.h"
#include "AliTRDdigitsManager.h"
#include "AliTRDSignalIndex.h"
#include "AliTRDpadPlane.h"
#include "./Cal/AliTRDCalChamberStatus.h"
#include "./Cal/AliTRDCalDCSv2.h"
#include "./Cal/AliTRDCalDCSFEEv2.h"

#include "AliTRDrawStream.h"
#include "AliTRDseedV1.h"
#include "AliTRDcluster.h"

#ifdef ALI_DATE
#include "event.h"
#endif

ClassImp(AliTRDCalibChamberStatus) /*FOLD00*/

//_____________________________________________________________________
AliTRDCalibChamberStatus::AliTRDCalibChamberStatus() : /*FOLD00*/
  TObject(),
  fDetector(-1),
  fNumberOfTimeBins(0),
  fCounterEventNotEmpty(0),
  fCalChamberStatus(0x0),
  fHnSparseI(0x0),
  fHnSparseHCM(0x0),
  fHnSparseEvtDet(0x0),
  fHnSparseDebug(0x0),
  fHnSparseMCM(0x0),
  fC1(0x0),
  fDebugLevel(0)
{
    //
    // default constructor
    //

}
//_____________________________________________________________________
AliTRDCalibChamberStatus::AliTRDCalibChamberStatus(const AliTRDCalibChamberStatus &ped) : /*FOLD00*/
  TObject(ped),
  fDetector(ped.fDetector),
  fNumberOfTimeBins(ped.fNumberOfTimeBins),
  fCounterEventNotEmpty(ped.fCounterEventNotEmpty),
  fCalChamberStatus(ped.fCalChamberStatus),
  fHnSparseI(ped.fHnSparseI),
  fHnSparseHCM(ped.fHnSparseHCM),
  fHnSparseEvtDet(ped.fHnSparseEvtDet),
  fHnSparseDebug(ped.fHnSparseDebug),  
  fHnSparseMCM(ped.fHnSparseMCM),
  fC1(ped.fC1),
  fDebugLevel(ped.fDebugLevel)
{
    //
    // copy constructor
    //
  
}
//_____________________________________________________________________
AliTRDCalibChamberStatus& AliTRDCalibChamberStatus::operator = (const  AliTRDCalibChamberStatus &source)
{
  //
  // assignment operator
  //
  if (&source == this) return *this;
  new (this) AliTRDCalibChamberStatus(source);

  return *this;
}
//_____________________________________________________________________
AliTRDCalibChamberStatus::~AliTRDCalibChamberStatus() /*FOLD00*/
{
  //
  // destructor
  //
  if(fCalChamberStatus){
    delete fCalChamberStatus;
  }
  if(fHnSparseI) {
    delete fHnSparseI;
  }
  if(fHnSparseHCM) {
    delete fHnSparseHCM;
  }
  if(fHnSparseEvtDet) {
    delete fHnSparseEvtDet;
  }
  if(fHnSparseDebug) {
    delete fHnSparseDebug;
  }
  if(fHnSparseMCM) {
   delete fHnSparseMCM;
  }
  if(fC1) {
   delete fC1;
  }
}

//_____________________________________________________________________
void AliTRDCalibChamberStatus::Init() 
{
  //
  // Init the different THnSparse
  //
  //

  //
  // Init the fHnSparseI
  //

  //create the map
  Int_t thnDimEvt[4]; // sm, layer, stack, halfchamber
  thnDimEvt[0] = 18;
  thnDimEvt[1] = 6;
  thnDimEvt[2] = 5;
  thnDimEvt[3] = 2;
  //arrays for lower bounds :
  Double_t* binEdgesEvt[4];
  for(Int_t ivar = 0; ivar < 4; ivar++)
    binEdgesEvt[ivar] = new Double_t[thnDimEvt[ivar] + 1];
  //values for bin lower bounds
  for(Int_t i=0; i<=thnDimEvt[0]; i++) binEdgesEvt[0][i]= 0.0  + (18.0)/thnDimEvt[0]*(Double_t)i;
  for(Int_t i=0; i<=thnDimEvt[1]; i++) binEdgesEvt[1][i]= 0.0  + (6.0)/thnDimEvt[1]*(Double_t)i;
  for(Int_t i=0; i<=thnDimEvt[2]; i++) binEdgesEvt[2][i]= 0.0  + (5.0)/thnDimEvt[2]*(Double_t)i;
  for(Int_t i=0; i<=thnDimEvt[3]; i++) binEdgesEvt[3][i]= 0.0  + (2.0)/thnDimEvt[3]*(Double_t)i;
  
  //create the THnSparse
  fHnSparseI = new THnSparseI("NumberOfEntries","NumberOfEntries",4,thnDimEvt);
  for (int k=0; k<4; k++) {
    fHnSparseI->SetBinEdges(k,binEdgesEvt[k]);
  }
  fHnSparseI->Sumw2();

  //
  // Init the fHnSparseHCM (THnSparseI)
  //

  //create the THnSparse
  fHnSparseHCM = new THnSparseI("HCMerrors","HCMerrors",4,thnDimEvt);
  for (int k=0; k<4; k++) {
    fHnSparseHCM->SetBinEdges(k,binEdgesEvt[k]);
  }
  fHnSparseHCM->Sumw2();


  //---------//
  //  Debug  //
  if(fDebugLevel > 0) {
  
    //
    // Init the fHnSparseEvtDet (THnSparseI)
    //
    
    //create the map
    Int_t thnDimEvts[3]; // event, detector, halfchamber
    thnDimEvts[0] = 10000;
    thnDimEvts[1] = 540;
    thnDimEvts[2] = 2;
    //arrays for lower bounds :
    Double_t* binEdgesEvts[3];
    for(Int_t ivar = 0; ivar < 3; ivar++)
      binEdgesEvts[ivar] = new Double_t[thnDimEvts[ivar] + 1];
    //values for bin lower bounds
    for(Int_t i=0; i<=thnDimEvts[0]; i++) binEdgesEvts[0][i]= 0.0  + (10000.0)/thnDimEvts[0]*(Double_t)i;
    for(Int_t i=0; i<=thnDimEvts[1]; i++) binEdgesEvts[1][i]= 0.0  + (540.0)/thnDimEvts[1]*(Double_t)i;
    for(Int_t i=0; i<=thnDimEvts[2]; i++) binEdgesEvts[2][i]= 0.0  + (2.0)/thnDimEvts[2]*(Double_t)i;
    
    //create the THnSparse
    fHnSparseEvtDet = new THnSparseI("NumberOfEntriesPerEvent","NumberOfEntriesPerEvent",3,thnDimEvts);
    for (int k=0; k<3; k++) {
      fHnSparseEvtDet->SetBinEdges(k,binEdgesEvts[k]);
    }
    fHnSparseEvtDet->Sumw2();

    //
    // Init the fHnSparseDebug (THnSparseI)
    //
    
    //create the THnSparse
    fHnSparseDebug = new THnSparseI("NumberOfDifferentDecisions","NumberOfDifferentDecisions",4,thnDimEvt);
    for (int k=0; k<4; k++) {
      fHnSparseDebug->SetBinEdges(k,binEdgesEvt[k]);
    }
    fHnSparseDebug->Sumw2();
        
    //
    // Init the fHnSparseMCM (THnSparseI)
    //
    
    //create the map
    Int_t thnDimEvtt[6]; // sm, layer, stack, ROB, MCM
    thnDimEvtt[0] = 18;
    thnDimEvtt[1] = 6;
    thnDimEvtt[2] = 5;
    thnDimEvtt[3] = 8;
    thnDimEvtt[4] = 18;
    thnDimEvtt[5] = 18;
    //arrays for lower bounds :
    Double_t* binEdgesEvtt[6];
    for(Int_t ivar = 0; ivar < 6; ivar++)
      binEdgesEvtt[ivar] = new Double_t[thnDimEvtt[ivar] + 1];
    //values for bin lower bounds
    for(Int_t i=0; i<=thnDimEvtt[0]; i++) binEdgesEvtt[0][i]= 0.0  + (18.0)/thnDimEvtt[0]*(Double_t)i;
    for(Int_t i=0; i<=thnDimEvtt[1]; i++) binEdgesEvtt[1][i]= 0.0  + (6.0)/thnDimEvtt[1]*(Double_t)i;
    for(Int_t i=0; i<=thnDimEvtt[2]; i++) binEdgesEvtt[2][i]= 0.0  + (5.0)/thnDimEvtt[2]*(Double_t)i;
    for(Int_t i=0; i<=thnDimEvtt[3]; i++) binEdgesEvtt[3][i]= 0.0  + (8.0)/thnDimEvtt[3]*(Double_t)i;
    for(Int_t i=0; i<=thnDimEvtt[4]; i++) binEdgesEvtt[4][i]= 0.0  + (18.0)/thnDimEvtt[4]*(Double_t)i;
    for(Int_t i=0; i<=thnDimEvtt[5]; i++) binEdgesEvtt[5][i]= 0.0  + (18.0)/thnDimEvtt[5]*(Double_t)i;
    
    //create the THnSparse
    fHnSparseMCM = new THnSparseI("MCMerrorDCS","MCMerrorDCS",6,thnDimEvtt);
    for (int k=0; k<6; k++) {
      fHnSparseMCM->SetBinEdges(k,binEdgesEvtt[k]);
    }
    fHnSparseMCM->Sumw2();
  
  }
  //  Debug  //
  //---------//

}
//_____________________________________________________________________
void AliTRDCalibChamberStatus::ProcessTrack(const AliTRDtrackV1 * trdTrack)
{
  //
  // Track Processing to get half chamber status
  //
  //
  
  
  const AliTRDseedV1 *tracklet = 0x0;
  AliTRDcluster *cluster;
  //////////////////////////////////////
  // Loop tracklets
  ///////////////////////////////////// 
  for(Int_t itr = 0; itr < 6; ++itr){
	
    if(!(tracklet = trdTrack->GetTracklet(itr))) continue;
    if(!tracklet->IsOK()) continue;
  
    // Loop on clusters
    for(int ic=0; ic<AliTRDseedV1::kNtb; ++ic){
      if((cluster = tracklet->GetClusters(ic))) {
	//printf("ic %d\n",ic);
	break;
      }
    }
    if(!cluster) continue;
    
    Int_t det     = cluster->GetDetector();	  
    Int_t layer   = AliTRDgeometry::GetLayer(det);
    Int_t sm      = AliTRDgeometry::GetSector(det);
    Int_t stac    = AliTRDgeometry::GetStack(det);
    
    Int_t col     = cluster->GetPadCol();
    Int_t iMcm    = (Int_t)(col/18);   // current group of 18 col pads
    Double_t rphi = 0.5;
    if(iMcm > 3) rphi = 1.5;
	  
    Double_t val[4] = {static_cast<Double_t>(sm),static_cast<Double_t>(layer),static_cast<Double_t>(stac),static_cast<Double_t>(rphi)}; 
    if(fHnSparseI->GetBinContent((const Int_t*)val)<2147483646) fHnSparseI->Fill(&val[0]); 
  }
  
}
//_____________________________________________________________________
void AliTRDCalibChamberStatus::ProcessEvent(AliRawReader * rawReader, Int_t nevents_physics)
{
  //
  // Event Processing loop with AliTRDrawStream
  //
  //
  
  Bool_t notEmpty = kFALSE;
    
  AliTRDdigitsManager *digitsManager = new AliTRDdigitsManager(kTRUE);
  digitsManager->CreateArrays();
  
  AliTRDrawStream *rawStream = new AliTRDrawStream(rawReader);
  rawStream->SetDigitsManager(digitsManager);
  //  rawStream->SetNoErrorWarning();
  //  rawStream->SetSharedPadReadout(kFALSE);

  
  Int_t det    = 0;
  while ((det = rawStream->NextChamber(digitsManager, NULL, NULL)) >= 0) { 

    //nextchamber loop
    
    // do the QA analysis
    if (digitsManager->GetIndexes(det)->HasEntry()) {//QA
      // printf("there is ADC data on this chamber!\n");
      
      AliTRDSignalIndex *indexes = digitsManager->GetIndexes(det);
      if (indexes->IsAllocated() == kFALSE) {
	// AliError("Indexes do not exist!");
	break;
      }
      
      Int_t iRow  = 0;
      Int_t iCol  = 0;
      indexes->ResetCounters();
      
      while (indexes->NextRCIndex(iRow, iCol)){
	Int_t iMcm        = (Int_t)(iCol/18);   // current group of 18 col pads
	
	Int_t layer = AliTRDgeometry::GetLayer(det);
	Int_t sm    = AliTRDgeometry::GetSector(det);
	Int_t stac  = AliTRDgeometry::GetStack(det);
	Double_t rphi = 0.5;
	if(iMcm > 3) rphi = 1.5;

	Double_t val[4] = {static_cast<Double_t>(sm),static_cast<Double_t>(layer),static_cast<Double_t>(stac),static_cast<Double_t>(rphi)}; 
	fHnSparseI->Fill(&val[0]); 
	notEmpty = kTRUE;
	
	//---------//
	//  Debug  //
	if(fDebugLevel > 0) {
	  Int_t detector = AliTRDgeometry::GetDetector(layer,stac,sm);
	  Double_t valu[3] = {static_cast<Double_t>(nevents_physics),static_cast<Double_t>(detector),rphi};
	  fHnSparseEvtDet->Fill(&valu[0]); 
	}
	//  Debug  //
	//---------//
      }
      
    }
    digitsManager->ClearArrays(det);
  }

  if(notEmpty) fCounterEventNotEmpty++;

  delete digitsManager;
  delete rawStream;
   
}
//_____________________________________________________________________
Bool_t AliTRDCalibChamberStatus::TestEventHisto(Int_t nevent) /*FOLD00*/
{
  //
  //  Test event loop
  // fill the fHnSparseI with entries
  //
  
  AliTRDgeometry geo;


  for(Int_t ievent=0; ievent<nevent; ievent++){
    for (Int_t ism=0; ism<18; ism++){
      for (Int_t istack=0; istack<5; istack++){
	for (Int_t ipl=0; ipl<6; ipl++){
	  for (Int_t icol=0; icol<geo.GetColMax(ipl); icol++){
	    Int_t side = 0;
	    if(icol > 72) side = 1;
	    Double_t val[4] = {static_cast<Double_t>(ism),static_cast<Double_t>(ipl),static_cast<Double_t>(istack),static_cast<Double_t>(side)}; 
	    fHnSparseI->Fill(&val[0]); 
	  }
	}
      }
    }
  }
  
  return kTRUE;

}
//_____________________________________________________________________
void AliTRDCalibChamberStatus::AnalyseHisto(Int_t limit, Double_t chamberlimit) /*FOLD00*/
{
  //
  //  Create the AliTRDCalChamberStatus according to the fHnSparseI
  //
  
  if(fCalChamberStatus) delete fCalChamberStatus;
  fCalChamberStatus = new AliTRDCalChamberStatus();

  //printf("test0\n");

  // Check if enough events/tracklets per halfchamber to say something
  Double_t mean=0.0; //number of tracklets per HCS
  Int_t coord2[4];
  for(Int_t bin = 0; bin < fHnSparseI->GetNbins(); bin++) {
    //if(fHnSparseI->GetBinContent(bin,coord2)==0.0) printf(" bin shouldnt be empty!!\n");
    mean+=fHnSparseI->GetBinContent(bin,coord2);
  }
  if(fHnSparseI->GetNbins() > 0.0) mean/=fHnSparseI->GetNbins();
  //printf(" mean tracklets per halfchamber %.3e \n",mean);
  if((fCounterEventNotEmpty < limit) && (mean < limit)) {
    // Say all good
    for (Int_t idet=0; idet<540; idet++) {
      fCalChamberStatus->SetStatus(idet,AliTRDCalChamberStatus::kGood);
    }
    return;
  }

  //printf("test1\n");

  // set all chambers to NoData
  for (Int_t idet=0; idet<540; idet++) {
    fCalChamberStatus->SetStatus(idet,AliTRDCalChamberStatus::kNoData);
  }

  // set status according to fHnSparseI 
  Int_t coord[4];
  for(Int_t bin = 0; bin < fHnSparseI->GetNbins(); bin++) {
    
    Double_t content = fHnSparseI->GetBinContent(bin,coord);
    
		// layer, stack, sector
    Int_t detector = AliTRDgeometry::GetDetector(coord[1]-1,coord[2]-1,coord[0]-1);
    
		if(content<chamberlimit*mean) {
			//printf("Number of entries for detector %03d-%s: %.3e -> %.3f \n",detector,(coord[3]-1==0?"A":"B"),content,content/mean);			
			continue;
		}
    //
    // Check which halfchamber side corresponds to the bin number (0=A, 1=B)
    // Change the status accordingly
    //
    if(coord[3]-1==0) { // HCS-A
      fCalChamberStatus->SetStatus(detector,AliTRDCalChamberStatus::kGood);
      fCalChamberStatus->UnsetStatusBit(detector,AliTRDCalChamberStatus::kNoDataHalfChamberSideA); // A has data
      //fCalChamberStatus->UnsetStatusBit(detector,AliTRDCalChamberStatus::kNoData); 
    }
    else { //HCS-B
      fCalChamberStatus->SetStatus(detector,AliTRDCalChamberStatus::kGood);
      fCalChamberStatus->UnsetStatusBit(detector,AliTRDCalChamberStatus::kNoDataHalfChamberSideB); // B has data
      //fCalChamberStatus->UnsetStatusBit(detector,AliTRDCalChamberStatus::kNoData); 
    }
  }

  // printf
  //for (Int_t idet=0; idet<540; idet++) {
  //  if(fCalChamberStatus->IsNoData(idet)) printf("No Data: chamber %d\n",idet);
  //}


}
//_____________________________________________________________________
void AliTRDCalibChamberStatus::CheckEORStatus(const AliTRDCalDCSv2 *calDCS) /*FOLD00*/
{
  //
  //  Correct the AliTRDCalChamberStatus according to the AliTRDCalDCSv2
  //  Using globale state of the HalfChamberMerger (HCM)
  //
  for(Int_t det = 0; det < 540; det++) {
    AliTRDCalDCSFEEv2* calDCSFEEEOR = calDCS->GetCalDCSFEEObj(det);

    if(!calDCSFEEEOR) continue;
    
    // MCM Global State Machine State Definitions
    //  low_power =  0,
    //  test      =  1,
    //  wait_pre  =  3,
    //  preproc   =  7,
    //  zero_sp   =  8,
    //  full_rd   =  9,
    //  clear_st  = 11,
    //  wait_L1   = 12,
    //  tr_send   = 14,
    //  tr_proc   = 15 

    Int_t sm   = AliTRDgeometry::GetSector(det);
    Int_t lay  = AliTRDgeometry::GetLayer(det);
    Int_t stac = AliTRDgeometry::GetStack(det);
    
    Int_t stateA = 0;   // 0=bad, 1=good state
    Int_t stateB = 0;

    // loop over all mcm to define DCS-HCS
    for(Int_t ii = 0; ii < 8; ii++) { //ROB loop
      for(Int_t i = 0; i < 18; i++) { //MCM loop
	
	Int_t side = ii%2;  // 0=sideA, 1=sideB
	Int_t cstate = calDCSFEEEOR->GetMCMGlobalState(ii,i); //current mcm state
	
	if(cstate==3) {
	  switch(side) {
	  case 0: stateA=1; break;
	  case 1: stateB=1; break; 
	  }
	}
      }
    }

    //---------//
    //  Debug  //
    if(fDebugLevel > 0) {
      if( ((fCalChamberStatus->GetStatus(det) <= 1) && (stateA==0 || stateB==0)) || 
	  ((fCalChamberStatus->GetStatus(det) == 2) && (stateA==1 || stateB==1)) || 
	  ((fCalChamberStatus->GetStatus(det) == 3) && (stateA==1 || stateB==0)) ||
	  ((fCalChamberStatus->GetStatus(det) == 4) && (stateB==0 || stateB==1))  )
	{
	  //printf(" Different half chamber status in DCS and DATA!!\n");
	  Double_t val[4] = {static_cast<Double_t>(sm),static_cast<Double_t>(lay),static_cast<Double_t>(stac),1};
	  fHnSparseDebug->Fill(&val[0]); 
	  
	  // Fill MCM status map
	  for(Int_t ii = 0; ii < 8; ii++) { //ROB loop
	    for(Int_t i = 0; i < 18; i++) { //MCM loop
	      Double_t valss[6] = {static_cast<Double_t>(sm),static_cast<Double_t>(lay),static_cast<Double_t>(stac),static_cast<Double_t>(ii),static_cast<Double_t>(i)
				   ,static_cast<Double_t>(calDCSFEEEOR->GetMCMGlobalState(ii,i))};
	      fHnSparseMCM->Fill(&valss[0]);
	      
	    } 
	  }
	}
    }
    //---------//
    //  Debug  //

    //---------------------------------------
    // Change the status according to DCS
    //---------------------------------------
    Int_t statusData = fCalChamberStatus->GetStatus(det);
    switch(statusData) 
      {
      case 1: 
	if(stateA==0 && stateB==0) fCalChamberStatus->SetStatus(det,2); // completely masked from DCS
	if(stateA==1 && stateB==0) fCalChamberStatus->SetStatus(det,4); // Only B side masked from DCS
	if(stateA==0 && stateB==1) fCalChamberStatus->SetStatus(det,3); // Only A side masked from DCS
	if(stateA==1 && stateB==1) fCalChamberStatus->SetStatus(det,1);
	break;
      case 2: // completely masked from DATA
	if(stateA==0 && stateB==0) fCalChamberStatus->SetStatus(det,2); // completely masked from DCS
	break;
      case 3: // Only A side masked from DATA
	if(stateA==0 && stateB==0) fCalChamberStatus->SetStatus(det,2); // completely masked from DCS
	if(stateA==1 && stateB==0) fCalChamberStatus->SetStatus(det,2); // Only B side masked from DCS
	if(stateA==0 && stateB==1) fCalChamberStatus->SetStatus(det,3); // Only A side masked from DCS
	if(stateA==1 && stateB==1) fCalChamberStatus->SetStatus(det,3);
	break;
      case 4: // Only B side masked from DATA
	if(stateA==0 && stateB==0) fCalChamberStatus->SetStatus(det,2); // completely masked from DCS
	if(stateA==1 && stateB==0) fCalChamberStatus->SetStatus(det,4); // Only B side masked from DCS
	if(stateA==0 && stateB==1) fCalChamberStatus->SetStatus(det,2); // Only A side masked from DCS
	if(stateA==1 && stateB==1) fCalChamberStatus->SetStatus(det,4);
	break;
      }
    
  }

}

//_____________________________________________________________________________________
void AliTRDCalibChamberStatus::Add(const AliTRDCalibChamberStatus *calibChamberStatus) /*FOLD00*/
{
    //
    //  Add the THnSparseI of this calibChamberStatus
    //

  fCounterEventNotEmpty += calibChamberStatus->GetNumberEventNotEmpty();

  THnSparseI *hnSparseI = calibChamberStatus->GetSparseI();
  if(!hnSparseI) return;

  if(!fHnSparseI) {
    fHnSparseI = (THnSparseI *) hnSparseI->Clone();
  }
  else {
    fHnSparseI->Add(hnSparseI);
  }
  

}
//_____________________________________________________________________
void AliTRDCalibChamberStatus::DumpToFile(const Char_t *filename, const Char_t *dir, Bool_t append) /*FOLD00*/
{
    //
    //  Write class to file
    //

    TString sDir(dir);
    TString option;

    if ( append )
	option = "update";
    else
        option = "recreate";

    TDirectory *backup = gDirectory;
    TFile f(filename,option.Data());
    f.cd();
    if ( !sDir.IsNull() ){
	f.mkdir(sDir.Data());
	f.cd(sDir);
    }
    this->Write();
    f.Close();

    if ( backup ) backup->cd();
}
//_____________________________________________________________________________
TH2D* AliTRDCalibChamberStatus::PlotSparseI(Int_t sm,Int_t side) 
{
  //
  // Plot number of entries for supermodule sm 
  // as a function of layer and stack
  //

  if(!fHnSparseI) return 0x0;
  
  fHnSparseI->GetAxis(0)->SetRange(sm+1,sm+1); 
  fHnSparseI->GetAxis(3)->SetRange(side+1,side+1);  
  TH2D *h2 = fHnSparseI->Projection(1,2);
 

  return h2;

}
//_____________________________________________________________________
TH2F *AliTRDCalibChamberStatus::MakeHisto2DSmPlEORStatus(const AliTRDCalDCSv2 *calDCS, Int_t sm, Int_t pl) /*FOLD00*/
{
  //
  //  Plot globale state of the HalfChamberMerger (HCM)
  //
  AliTRDfeeParam *paramfee = AliTRDfeeParam::Instance();

  AliTRDgeometry *trdGeo = new AliTRDgeometry();
  AliTRDpadPlane *padPlane0 = trdGeo->GetPadPlane(pl,0);        // layer,stack
  Double_t row0    = padPlane0->GetRow0();
  Double_t col0    = padPlane0->GetCol0();

  char  name[1000];
  snprintf(name,1000,"%s DCS status sm %d pl %d",GetTitle(),sm,pl);
  TH2F * his = new TH2F( name, name, 88,-TMath::Abs(row0),TMath::Abs(row0)
                                   ,148,-TMath::Abs(col0),TMath::Abs(col0));


  // Where we begin
  Int_t offsetsmpl = 30*sm+pl;
  Int_t nstack = 5;
  Int_t ncols = 144;

  for (Int_t k = 0; k < nstack; k++){
    Int_t det = offsetsmpl+k*6;
    Int_t stac = AliTRDgeometry::GetStack(det);
    AliTRDCalDCSFEEv2* calDCSFEEEOR = calDCS->GetCalDCSFEEObj(det);
    if(!calDCSFEEEOR) { continue;}
    for (Int_t icol=0; icol<ncols; icol++){
      Int_t nrows = 16;
      if(stac==2) nrows = 12;
      for (Int_t irow=0; irow<nrows; irow++){
	Int_t binz     = 0;
	Int_t kb       = 5-1-k;
	Int_t krow     = nrows-1-irow;
	Int_t kcol     = ncols-1-icol;
	if(kb > 2) binz = 16*(kb-1)+12+krow+1+2*(kb+1);
	else binz = 16*kb+krow+1+2*(kb+1); 
	Int_t biny = kcol+1+2;
	// Take the value
	Int_t mcm = paramfee->GetMCMfromPad(irow,icol);
	Int_t rob = paramfee->GetROBfromPad(irow,icol);
	if(mcm < 0) AliWarning("Problem with mcm number");
	Int_t state = calDCSFEEEOR->GetMCMGlobalState(rob,TMath::Abs(mcm)); 
       	his->SetBinContent(binz,biny,state);
      }
    }
    for(Int_t icol = 1; icol < 147; icol++){
      for(Int_t l = 0; l < 2; l++){
	Int_t binz     = 0;
	Int_t kb       = 5-1-k;
	if(kb > 2) binz = 16*(kb-1)+12+1+2*(kb+1)-(l+1);
	else binz = 16*kb+1+2*(kb+1)-(l+1); 
	his->SetBinContent(binz,icol,16.0);
      }
    }
  }
  
  for(Int_t icol = 1; icol < 147; icol++){
    his->SetBinContent(88,icol,16.0);
    his->SetBinContent(87,icol,16.0);
  }
  for(Int_t irow = 1; irow < 89; irow++){
    his->SetBinContent(irow,1,16.0);
    his->SetBinContent(irow,2,16.0);
    his->SetBinContent(irow,147,16.0);
    his->SetBinContent(irow,148,16.0);
  }

  his->SetXTitle("z (cm)");
  his->SetYTitle("y (cm)");
  his->SetMaximum(12);
  his->SetMinimum(0.0);
  his->SetStats(0);

  return his;

}
//_____________________________________________________________________________
TCanvas* AliTRDCalibChamberStatus::PlotHistos2DSmEORStatus(AliTRDCalDCSv2 *calDCS, Int_t sm, const Char_t *name)
{
  //
  // Make 2D graph
  //

  gStyle->SetPalette(1);
  fC1 = new TCanvas(name,name,50,50,600,800);
  fC1->Divide(3,2);
  fC1->cd(1);
  MakeHisto2DSmPlEORStatus(calDCS,sm,0)->Draw("colz");
  fC1->cd(2);
  MakeHisto2DSmPlEORStatus(calDCS,sm,1)->Draw("colz");
  fC1->cd(3);
  MakeHisto2DSmPlEORStatus(calDCS,sm,2)->Draw("colz");
  fC1->cd(4);
  MakeHisto2DSmPlEORStatus(calDCS,sm,3)->Draw("colz");
  fC1->cd(5);
  MakeHisto2DSmPlEORStatus(calDCS,sm,4)->Draw("colz");
  fC1->cd(6);
  MakeHisto2DSmPlEORStatus(calDCS,sm,5)->Draw("colz");

  return fC1;

}



 AliTRDCalibChamberStatus.cxx:1
 AliTRDCalibChamberStatus.cxx:2
 AliTRDCalibChamberStatus.cxx:3
 AliTRDCalibChamberStatus.cxx:4
 AliTRDCalibChamberStatus.cxx:5
 AliTRDCalibChamberStatus.cxx:6
 AliTRDCalibChamberStatus.cxx:7
 AliTRDCalibChamberStatus.cxx:8
 AliTRDCalibChamberStatus.cxx:9
 AliTRDCalibChamberStatus.cxx:10
 AliTRDCalibChamberStatus.cxx:11
 AliTRDCalibChamberStatus.cxx:12
 AliTRDCalibChamberStatus.cxx:13
 AliTRDCalibChamberStatus.cxx:14
 AliTRDCalibChamberStatus.cxx:15
 AliTRDCalibChamberStatus.cxx:16
 AliTRDCalibChamberStatus.cxx:17
 AliTRDCalibChamberStatus.cxx:18
 AliTRDCalibChamberStatus.cxx:19
 AliTRDCalibChamberStatus.cxx:20
 AliTRDCalibChamberStatus.cxx:21
 AliTRDCalibChamberStatus.cxx:22
 AliTRDCalibChamberStatus.cxx:23
 AliTRDCalibChamberStatus.cxx:24
 AliTRDCalibChamberStatus.cxx:25
 AliTRDCalibChamberStatus.cxx:26
 AliTRDCalibChamberStatus.cxx:27
 AliTRDCalibChamberStatus.cxx:28
 AliTRDCalibChamberStatus.cxx:29
 AliTRDCalibChamberStatus.cxx:30
 AliTRDCalibChamberStatus.cxx:31
 AliTRDCalibChamberStatus.cxx:32
 AliTRDCalibChamberStatus.cxx:33
 AliTRDCalibChamberStatus.cxx:34
 AliTRDCalibChamberStatus.cxx:35
 AliTRDCalibChamberStatus.cxx:36
 AliTRDCalibChamberStatus.cxx:37
 AliTRDCalibChamberStatus.cxx:38
 AliTRDCalibChamberStatus.cxx:39
 AliTRDCalibChamberStatus.cxx:40
 AliTRDCalibChamberStatus.cxx:41
 AliTRDCalibChamberStatus.cxx:42
 AliTRDCalibChamberStatus.cxx:43
 AliTRDCalibChamberStatus.cxx:44
 AliTRDCalibChamberStatus.cxx:45
 AliTRDCalibChamberStatus.cxx:46
 AliTRDCalibChamberStatus.cxx:47
 AliTRDCalibChamberStatus.cxx:48
 AliTRDCalibChamberStatus.cxx:49
 AliTRDCalibChamberStatus.cxx:50
 AliTRDCalibChamberStatus.cxx:51
 AliTRDCalibChamberStatus.cxx:52
 AliTRDCalibChamberStatus.cxx:53
 AliTRDCalibChamberStatus.cxx:54
 AliTRDCalibChamberStatus.cxx:55
 AliTRDCalibChamberStatus.cxx:56
 AliTRDCalibChamberStatus.cxx:57
 AliTRDCalibChamberStatus.cxx:58
 AliTRDCalibChamberStatus.cxx:59
 AliTRDCalibChamberStatus.cxx:60
 AliTRDCalibChamberStatus.cxx:61
 AliTRDCalibChamberStatus.cxx:62
 AliTRDCalibChamberStatus.cxx:63
 AliTRDCalibChamberStatus.cxx:64
 AliTRDCalibChamberStatus.cxx:65
 AliTRDCalibChamberStatus.cxx:66
 AliTRDCalibChamberStatus.cxx:67
 AliTRDCalibChamberStatus.cxx:68
 AliTRDCalibChamberStatus.cxx:69
 AliTRDCalibChamberStatus.cxx:70
 AliTRDCalibChamberStatus.cxx:71
 AliTRDCalibChamberStatus.cxx:72
 AliTRDCalibChamberStatus.cxx:73
 AliTRDCalibChamberStatus.cxx:74
 AliTRDCalibChamberStatus.cxx:75
 AliTRDCalibChamberStatus.cxx:76
 AliTRDCalibChamberStatus.cxx:77
 AliTRDCalibChamberStatus.cxx:78
 AliTRDCalibChamberStatus.cxx:79
 AliTRDCalibChamberStatus.cxx:80
 AliTRDCalibChamberStatus.cxx:81
 AliTRDCalibChamberStatus.cxx:82
 AliTRDCalibChamberStatus.cxx:83
 AliTRDCalibChamberStatus.cxx:84
 AliTRDCalibChamberStatus.cxx:85
 AliTRDCalibChamberStatus.cxx:86
 AliTRDCalibChamberStatus.cxx:87
 AliTRDCalibChamberStatus.cxx:88
 AliTRDCalibChamberStatus.cxx:89
 AliTRDCalibChamberStatus.cxx:90
 AliTRDCalibChamberStatus.cxx:91
 AliTRDCalibChamberStatus.cxx:92
 AliTRDCalibChamberStatus.cxx:93
 AliTRDCalibChamberStatus.cxx:94
 AliTRDCalibChamberStatus.cxx:95
 AliTRDCalibChamberStatus.cxx:96
 AliTRDCalibChamberStatus.cxx:97
 AliTRDCalibChamberStatus.cxx:98
 AliTRDCalibChamberStatus.cxx:99
 AliTRDCalibChamberStatus.cxx:100
 AliTRDCalibChamberStatus.cxx:101
 AliTRDCalibChamberStatus.cxx:102
 AliTRDCalibChamberStatus.cxx:103
 AliTRDCalibChamberStatus.cxx:104
 AliTRDCalibChamberStatus.cxx:105
 AliTRDCalibChamberStatus.cxx:106
 AliTRDCalibChamberStatus.cxx:107
 AliTRDCalibChamberStatus.cxx:108
 AliTRDCalibChamberStatus.cxx:109
 AliTRDCalibChamberStatus.cxx:110
 AliTRDCalibChamberStatus.cxx:111
 AliTRDCalibChamberStatus.cxx:112
 AliTRDCalibChamberStatus.cxx:113
 AliTRDCalibChamberStatus.cxx:114
 AliTRDCalibChamberStatus.cxx:115
 AliTRDCalibChamberStatus.cxx:116
 AliTRDCalibChamberStatus.cxx:117
 AliTRDCalibChamberStatus.cxx:118
 AliTRDCalibChamberStatus.cxx:119
 AliTRDCalibChamberStatus.cxx:120
 AliTRDCalibChamberStatus.cxx:121
 AliTRDCalibChamberStatus.cxx:122
 AliTRDCalibChamberStatus.cxx:123
 AliTRDCalibChamberStatus.cxx:124
 AliTRDCalibChamberStatus.cxx:125
 AliTRDCalibChamberStatus.cxx:126
 AliTRDCalibChamberStatus.cxx:127
 AliTRDCalibChamberStatus.cxx:128
 AliTRDCalibChamberStatus.cxx:129
 AliTRDCalibChamberStatus.cxx:130
 AliTRDCalibChamberStatus.cxx:131
 AliTRDCalibChamberStatus.cxx:132
 AliTRDCalibChamberStatus.cxx:133
 AliTRDCalibChamberStatus.cxx:134
 AliTRDCalibChamberStatus.cxx:135
 AliTRDCalibChamberStatus.cxx:136
 AliTRDCalibChamberStatus.cxx:137
 AliTRDCalibChamberStatus.cxx:138
 AliTRDCalibChamberStatus.cxx:139
 AliTRDCalibChamberStatus.cxx:140
 AliTRDCalibChamberStatus.cxx:141
 AliTRDCalibChamberStatus.cxx:142
 AliTRDCalibChamberStatus.cxx:143
 AliTRDCalibChamberStatus.cxx:144
 AliTRDCalibChamberStatus.cxx:145
 AliTRDCalibChamberStatus.cxx:146
 AliTRDCalibChamberStatus.cxx:147
 AliTRDCalibChamberStatus.cxx:148
 AliTRDCalibChamberStatus.cxx:149
 AliTRDCalibChamberStatus.cxx:150
 AliTRDCalibChamberStatus.cxx:151
 AliTRDCalibChamberStatus.cxx:152
 AliTRDCalibChamberStatus.cxx:153
 AliTRDCalibChamberStatus.cxx:154
 AliTRDCalibChamberStatus.cxx:155
 AliTRDCalibChamberStatus.cxx:156
 AliTRDCalibChamberStatus.cxx:157
 AliTRDCalibChamberStatus.cxx:158
 AliTRDCalibChamberStatus.cxx:159
 AliTRDCalibChamberStatus.cxx:160
 AliTRDCalibChamberStatus.cxx:161
 AliTRDCalibChamberStatus.cxx:162
 AliTRDCalibChamberStatus.cxx:163
 AliTRDCalibChamberStatus.cxx:164
 AliTRDCalibChamberStatus.cxx:165
 AliTRDCalibChamberStatus.cxx:166
 AliTRDCalibChamberStatus.cxx:167
 AliTRDCalibChamberStatus.cxx:168
 AliTRDCalibChamberStatus.cxx:169
 AliTRDCalibChamberStatus.cxx:170
 AliTRDCalibChamberStatus.cxx:171
 AliTRDCalibChamberStatus.cxx:172
 AliTRDCalibChamberStatus.cxx:173
 AliTRDCalibChamberStatus.cxx:174
 AliTRDCalibChamberStatus.cxx:175
 AliTRDCalibChamberStatus.cxx:176
 AliTRDCalibChamberStatus.cxx:177
 AliTRDCalibChamberStatus.cxx:178
 AliTRDCalibChamberStatus.cxx:179
 AliTRDCalibChamberStatus.cxx:180
 AliTRDCalibChamberStatus.cxx:181
 AliTRDCalibChamberStatus.cxx:182
 AliTRDCalibChamberStatus.cxx:183
 AliTRDCalibChamberStatus.cxx:184
 AliTRDCalibChamberStatus.cxx:185
 AliTRDCalibChamberStatus.cxx:186
 AliTRDCalibChamberStatus.cxx:187
 AliTRDCalibChamberStatus.cxx:188
 AliTRDCalibChamberStatus.cxx:189
 AliTRDCalibChamberStatus.cxx:190
 AliTRDCalibChamberStatus.cxx:191
 AliTRDCalibChamberStatus.cxx:192
 AliTRDCalibChamberStatus.cxx:193
 AliTRDCalibChamberStatus.cxx:194
 AliTRDCalibChamberStatus.cxx:195
 AliTRDCalibChamberStatus.cxx:196
 AliTRDCalibChamberStatus.cxx:197
 AliTRDCalibChamberStatus.cxx:198
 AliTRDCalibChamberStatus.cxx:199
 AliTRDCalibChamberStatus.cxx:200
 AliTRDCalibChamberStatus.cxx:201
 AliTRDCalibChamberStatus.cxx:202
 AliTRDCalibChamberStatus.cxx:203
 AliTRDCalibChamberStatus.cxx:204
 AliTRDCalibChamberStatus.cxx:205
 AliTRDCalibChamberStatus.cxx:206
 AliTRDCalibChamberStatus.cxx:207
 AliTRDCalibChamberStatus.cxx:208
 AliTRDCalibChamberStatus.cxx:209
 AliTRDCalibChamberStatus.cxx:210
 AliTRDCalibChamberStatus.cxx:211
 AliTRDCalibChamberStatus.cxx:212
 AliTRDCalibChamberStatus.cxx:213
 AliTRDCalibChamberStatus.cxx:214
 AliTRDCalibChamberStatus.cxx:215
 AliTRDCalibChamberStatus.cxx:216
 AliTRDCalibChamberStatus.cxx:217
 AliTRDCalibChamberStatus.cxx:218
 AliTRDCalibChamberStatus.cxx:219
 AliTRDCalibChamberStatus.cxx:220
 AliTRDCalibChamberStatus.cxx:221
 AliTRDCalibChamberStatus.cxx:222
 AliTRDCalibChamberStatus.cxx:223
 AliTRDCalibChamberStatus.cxx:224
 AliTRDCalibChamberStatus.cxx:225
 AliTRDCalibChamberStatus.cxx:226
 AliTRDCalibChamberStatus.cxx:227
 AliTRDCalibChamberStatus.cxx:228
 AliTRDCalibChamberStatus.cxx:229
 AliTRDCalibChamberStatus.cxx:230
 AliTRDCalibChamberStatus.cxx:231
 AliTRDCalibChamberStatus.cxx:232
 AliTRDCalibChamberStatus.cxx:233
 AliTRDCalibChamberStatus.cxx:234
 AliTRDCalibChamberStatus.cxx:235
 AliTRDCalibChamberStatus.cxx:236
 AliTRDCalibChamberStatus.cxx:237
 AliTRDCalibChamberStatus.cxx:238
 AliTRDCalibChamberStatus.cxx:239
 AliTRDCalibChamberStatus.cxx:240
 AliTRDCalibChamberStatus.cxx:241
 AliTRDCalibChamberStatus.cxx:242
 AliTRDCalibChamberStatus.cxx:243
 AliTRDCalibChamberStatus.cxx:244
 AliTRDCalibChamberStatus.cxx:245
 AliTRDCalibChamberStatus.cxx:246
 AliTRDCalibChamberStatus.cxx:247
 AliTRDCalibChamberStatus.cxx:248
 AliTRDCalibChamberStatus.cxx:249
 AliTRDCalibChamberStatus.cxx:250
 AliTRDCalibChamberStatus.cxx:251
 AliTRDCalibChamberStatus.cxx:252
 AliTRDCalibChamberStatus.cxx:253
 AliTRDCalibChamberStatus.cxx:254
 AliTRDCalibChamberStatus.cxx:255
 AliTRDCalibChamberStatus.cxx:256
 AliTRDCalibChamberStatus.cxx:257
 AliTRDCalibChamberStatus.cxx:258
 AliTRDCalibChamberStatus.cxx:259
 AliTRDCalibChamberStatus.cxx:260
 AliTRDCalibChamberStatus.cxx:261
 AliTRDCalibChamberStatus.cxx:262
 AliTRDCalibChamberStatus.cxx:263
 AliTRDCalibChamberStatus.cxx:264
 AliTRDCalibChamberStatus.cxx:265
 AliTRDCalibChamberStatus.cxx:266
 AliTRDCalibChamberStatus.cxx:267
 AliTRDCalibChamberStatus.cxx:268
 AliTRDCalibChamberStatus.cxx:269
 AliTRDCalibChamberStatus.cxx:270
 AliTRDCalibChamberStatus.cxx:271
 AliTRDCalibChamberStatus.cxx:272
 AliTRDCalibChamberStatus.cxx:273
 AliTRDCalibChamberStatus.cxx:274
 AliTRDCalibChamberStatus.cxx:275
 AliTRDCalibChamberStatus.cxx:276
 AliTRDCalibChamberStatus.cxx:277
 AliTRDCalibChamberStatus.cxx:278
 AliTRDCalibChamberStatus.cxx:279
 AliTRDCalibChamberStatus.cxx:280
 AliTRDCalibChamberStatus.cxx:281
 AliTRDCalibChamberStatus.cxx:282
 AliTRDCalibChamberStatus.cxx:283
 AliTRDCalibChamberStatus.cxx:284
 AliTRDCalibChamberStatus.cxx:285
 AliTRDCalibChamberStatus.cxx:286
 AliTRDCalibChamberStatus.cxx:287
 AliTRDCalibChamberStatus.cxx:288
 AliTRDCalibChamberStatus.cxx:289
 AliTRDCalibChamberStatus.cxx:290
 AliTRDCalibChamberStatus.cxx:291
 AliTRDCalibChamberStatus.cxx:292
 AliTRDCalibChamberStatus.cxx:293
 AliTRDCalibChamberStatus.cxx:294
 AliTRDCalibChamberStatus.cxx:295
 AliTRDCalibChamberStatus.cxx:296
 AliTRDCalibChamberStatus.cxx:297
 AliTRDCalibChamberStatus.cxx:298
 AliTRDCalibChamberStatus.cxx:299
 AliTRDCalibChamberStatus.cxx:300
 AliTRDCalibChamberStatus.cxx:301
 AliTRDCalibChamberStatus.cxx:302
 AliTRDCalibChamberStatus.cxx:303
 AliTRDCalibChamberStatus.cxx:304
 AliTRDCalibChamberStatus.cxx:305
 AliTRDCalibChamberStatus.cxx:306
 AliTRDCalibChamberStatus.cxx:307
 AliTRDCalibChamberStatus.cxx:308
 AliTRDCalibChamberStatus.cxx:309
 AliTRDCalibChamberStatus.cxx:310
 AliTRDCalibChamberStatus.cxx:311
 AliTRDCalibChamberStatus.cxx:312
 AliTRDCalibChamberStatus.cxx:313
 AliTRDCalibChamberStatus.cxx:314
 AliTRDCalibChamberStatus.cxx:315
 AliTRDCalibChamberStatus.cxx:316
 AliTRDCalibChamberStatus.cxx:317
 AliTRDCalibChamberStatus.cxx:318
 AliTRDCalibChamberStatus.cxx:319
 AliTRDCalibChamberStatus.cxx:320
 AliTRDCalibChamberStatus.cxx:321
 AliTRDCalibChamberStatus.cxx:322
 AliTRDCalibChamberStatus.cxx:323
 AliTRDCalibChamberStatus.cxx:324
 AliTRDCalibChamberStatus.cxx:325
 AliTRDCalibChamberStatus.cxx:326
 AliTRDCalibChamberStatus.cxx:327
 AliTRDCalibChamberStatus.cxx:328
 AliTRDCalibChamberStatus.cxx:329
 AliTRDCalibChamberStatus.cxx:330
 AliTRDCalibChamberStatus.cxx:331
 AliTRDCalibChamberStatus.cxx:332
 AliTRDCalibChamberStatus.cxx:333
 AliTRDCalibChamberStatus.cxx:334
 AliTRDCalibChamberStatus.cxx:335
 AliTRDCalibChamberStatus.cxx:336
 AliTRDCalibChamberStatus.cxx:337
 AliTRDCalibChamberStatus.cxx:338
 AliTRDCalibChamberStatus.cxx:339
 AliTRDCalibChamberStatus.cxx:340
 AliTRDCalibChamberStatus.cxx:341
 AliTRDCalibChamberStatus.cxx:342
 AliTRDCalibChamberStatus.cxx:343
 AliTRDCalibChamberStatus.cxx:344
 AliTRDCalibChamberStatus.cxx:345
 AliTRDCalibChamberStatus.cxx:346
 AliTRDCalibChamberStatus.cxx:347
 AliTRDCalibChamberStatus.cxx:348
 AliTRDCalibChamberStatus.cxx:349
 AliTRDCalibChamberStatus.cxx:350
 AliTRDCalibChamberStatus.cxx:351
 AliTRDCalibChamberStatus.cxx:352
 AliTRDCalibChamberStatus.cxx:353
 AliTRDCalibChamberStatus.cxx:354
 AliTRDCalibChamberStatus.cxx:355
 AliTRDCalibChamberStatus.cxx:356
 AliTRDCalibChamberStatus.cxx:357
 AliTRDCalibChamberStatus.cxx:358
 AliTRDCalibChamberStatus.cxx:359
 AliTRDCalibChamberStatus.cxx:360
 AliTRDCalibChamberStatus.cxx:361
 AliTRDCalibChamberStatus.cxx:362
 AliTRDCalibChamberStatus.cxx:363
 AliTRDCalibChamberStatus.cxx:364
 AliTRDCalibChamberStatus.cxx:365
 AliTRDCalibChamberStatus.cxx:366
 AliTRDCalibChamberStatus.cxx:367
 AliTRDCalibChamberStatus.cxx:368
 AliTRDCalibChamberStatus.cxx:369
 AliTRDCalibChamberStatus.cxx:370
 AliTRDCalibChamberStatus.cxx:371
 AliTRDCalibChamberStatus.cxx:372
 AliTRDCalibChamberStatus.cxx:373
 AliTRDCalibChamberStatus.cxx:374
 AliTRDCalibChamberStatus.cxx:375
 AliTRDCalibChamberStatus.cxx:376
 AliTRDCalibChamberStatus.cxx:377
 AliTRDCalibChamberStatus.cxx:378
 AliTRDCalibChamberStatus.cxx:379
 AliTRDCalibChamberStatus.cxx:380
 AliTRDCalibChamberStatus.cxx:381
 AliTRDCalibChamberStatus.cxx:382
 AliTRDCalibChamberStatus.cxx:383
 AliTRDCalibChamberStatus.cxx:384
 AliTRDCalibChamberStatus.cxx:385
 AliTRDCalibChamberStatus.cxx:386
 AliTRDCalibChamberStatus.cxx:387
 AliTRDCalibChamberStatus.cxx:388
 AliTRDCalibChamberStatus.cxx:389
 AliTRDCalibChamberStatus.cxx:390
 AliTRDCalibChamberStatus.cxx:391
 AliTRDCalibChamberStatus.cxx:392
 AliTRDCalibChamberStatus.cxx:393
 AliTRDCalibChamberStatus.cxx:394
 AliTRDCalibChamberStatus.cxx:395
 AliTRDCalibChamberStatus.cxx:396
 AliTRDCalibChamberStatus.cxx:397
 AliTRDCalibChamberStatus.cxx:398
 AliTRDCalibChamberStatus.cxx:399
 AliTRDCalibChamberStatus.cxx:400
 AliTRDCalibChamberStatus.cxx:401
 AliTRDCalibChamberStatus.cxx:402
 AliTRDCalibChamberStatus.cxx:403
 AliTRDCalibChamberStatus.cxx:404
 AliTRDCalibChamberStatus.cxx:405
 AliTRDCalibChamberStatus.cxx:406
 AliTRDCalibChamberStatus.cxx:407
 AliTRDCalibChamberStatus.cxx:408
 AliTRDCalibChamberStatus.cxx:409
 AliTRDCalibChamberStatus.cxx:410
 AliTRDCalibChamberStatus.cxx:411
 AliTRDCalibChamberStatus.cxx:412
 AliTRDCalibChamberStatus.cxx:413
 AliTRDCalibChamberStatus.cxx:414
 AliTRDCalibChamberStatus.cxx:415
 AliTRDCalibChamberStatus.cxx:416
 AliTRDCalibChamberStatus.cxx:417
 AliTRDCalibChamberStatus.cxx:418
 AliTRDCalibChamberStatus.cxx:419
 AliTRDCalibChamberStatus.cxx:420
 AliTRDCalibChamberStatus.cxx:421
 AliTRDCalibChamberStatus.cxx:422
 AliTRDCalibChamberStatus.cxx:423
 AliTRDCalibChamberStatus.cxx:424
 AliTRDCalibChamberStatus.cxx:425
 AliTRDCalibChamberStatus.cxx:426
 AliTRDCalibChamberStatus.cxx:427
 AliTRDCalibChamberStatus.cxx:428
 AliTRDCalibChamberStatus.cxx:429
 AliTRDCalibChamberStatus.cxx:430
 AliTRDCalibChamberStatus.cxx:431
 AliTRDCalibChamberStatus.cxx:432
 AliTRDCalibChamberStatus.cxx:433
 AliTRDCalibChamberStatus.cxx:434
 AliTRDCalibChamberStatus.cxx:435
 AliTRDCalibChamberStatus.cxx:436
 AliTRDCalibChamberStatus.cxx:437
 AliTRDCalibChamberStatus.cxx:438
 AliTRDCalibChamberStatus.cxx:439
 AliTRDCalibChamberStatus.cxx:440
 AliTRDCalibChamberStatus.cxx:441
 AliTRDCalibChamberStatus.cxx:442
 AliTRDCalibChamberStatus.cxx:443
 AliTRDCalibChamberStatus.cxx:444
 AliTRDCalibChamberStatus.cxx:445
 AliTRDCalibChamberStatus.cxx:446
 AliTRDCalibChamberStatus.cxx:447
 AliTRDCalibChamberStatus.cxx:448
 AliTRDCalibChamberStatus.cxx:449
 AliTRDCalibChamberStatus.cxx:450
 AliTRDCalibChamberStatus.cxx:451
 AliTRDCalibChamberStatus.cxx:452
 AliTRDCalibChamberStatus.cxx:453
 AliTRDCalibChamberStatus.cxx:454
 AliTRDCalibChamberStatus.cxx:455
 AliTRDCalibChamberStatus.cxx:456
 AliTRDCalibChamberStatus.cxx:457
 AliTRDCalibChamberStatus.cxx:458
 AliTRDCalibChamberStatus.cxx:459
 AliTRDCalibChamberStatus.cxx:460
 AliTRDCalibChamberStatus.cxx:461
 AliTRDCalibChamberStatus.cxx:462
 AliTRDCalibChamberStatus.cxx:463
 AliTRDCalibChamberStatus.cxx:464
 AliTRDCalibChamberStatus.cxx:465
 AliTRDCalibChamberStatus.cxx:466
 AliTRDCalibChamberStatus.cxx:467
 AliTRDCalibChamberStatus.cxx:468
 AliTRDCalibChamberStatus.cxx:469
 AliTRDCalibChamberStatus.cxx:470
 AliTRDCalibChamberStatus.cxx:471
 AliTRDCalibChamberStatus.cxx:472
 AliTRDCalibChamberStatus.cxx:473
 AliTRDCalibChamberStatus.cxx:474
 AliTRDCalibChamberStatus.cxx:475
 AliTRDCalibChamberStatus.cxx:476
 AliTRDCalibChamberStatus.cxx:477
 AliTRDCalibChamberStatus.cxx:478
 AliTRDCalibChamberStatus.cxx:479
 AliTRDCalibChamberStatus.cxx:480
 AliTRDCalibChamberStatus.cxx:481
 AliTRDCalibChamberStatus.cxx:482
 AliTRDCalibChamberStatus.cxx:483
 AliTRDCalibChamberStatus.cxx:484
 AliTRDCalibChamberStatus.cxx:485
 AliTRDCalibChamberStatus.cxx:486
 AliTRDCalibChamberStatus.cxx:487
 AliTRDCalibChamberStatus.cxx:488
 AliTRDCalibChamberStatus.cxx:489
 AliTRDCalibChamberStatus.cxx:490
 AliTRDCalibChamberStatus.cxx:491
 AliTRDCalibChamberStatus.cxx:492
 AliTRDCalibChamberStatus.cxx:493
 AliTRDCalibChamberStatus.cxx:494
 AliTRDCalibChamberStatus.cxx:495
 AliTRDCalibChamberStatus.cxx:496
 AliTRDCalibChamberStatus.cxx:497
 AliTRDCalibChamberStatus.cxx:498
 AliTRDCalibChamberStatus.cxx:499
 AliTRDCalibChamberStatus.cxx:500
 AliTRDCalibChamberStatus.cxx:501
 AliTRDCalibChamberStatus.cxx:502
 AliTRDCalibChamberStatus.cxx:503
 AliTRDCalibChamberStatus.cxx:504
 AliTRDCalibChamberStatus.cxx:505
 AliTRDCalibChamberStatus.cxx:506
 AliTRDCalibChamberStatus.cxx:507
 AliTRDCalibChamberStatus.cxx:508
 AliTRDCalibChamberStatus.cxx:509
 AliTRDCalibChamberStatus.cxx:510
 AliTRDCalibChamberStatus.cxx:511
 AliTRDCalibChamberStatus.cxx:512
 AliTRDCalibChamberStatus.cxx:513
 AliTRDCalibChamberStatus.cxx:514
 AliTRDCalibChamberStatus.cxx:515
 AliTRDCalibChamberStatus.cxx:516
 AliTRDCalibChamberStatus.cxx:517
 AliTRDCalibChamberStatus.cxx:518
 AliTRDCalibChamberStatus.cxx:519
 AliTRDCalibChamberStatus.cxx:520
 AliTRDCalibChamberStatus.cxx:521
 AliTRDCalibChamberStatus.cxx:522
 AliTRDCalibChamberStatus.cxx:523
 AliTRDCalibChamberStatus.cxx:524
 AliTRDCalibChamberStatus.cxx:525
 AliTRDCalibChamberStatus.cxx:526
 AliTRDCalibChamberStatus.cxx:527
 AliTRDCalibChamberStatus.cxx:528
 AliTRDCalibChamberStatus.cxx:529
 AliTRDCalibChamberStatus.cxx:530
 AliTRDCalibChamberStatus.cxx:531
 AliTRDCalibChamberStatus.cxx:532
 AliTRDCalibChamberStatus.cxx:533
 AliTRDCalibChamberStatus.cxx:534
 AliTRDCalibChamberStatus.cxx:535
 AliTRDCalibChamberStatus.cxx:536
 AliTRDCalibChamberStatus.cxx:537
 AliTRDCalibChamberStatus.cxx:538
 AliTRDCalibChamberStatus.cxx:539
 AliTRDCalibChamberStatus.cxx:540
 AliTRDCalibChamberStatus.cxx:541
 AliTRDCalibChamberStatus.cxx:542
 AliTRDCalibChamberStatus.cxx:543
 AliTRDCalibChamberStatus.cxx:544
 AliTRDCalibChamberStatus.cxx:545
 AliTRDCalibChamberStatus.cxx:546
 AliTRDCalibChamberStatus.cxx:547
 AliTRDCalibChamberStatus.cxx:548
 AliTRDCalibChamberStatus.cxx:549
 AliTRDCalibChamberStatus.cxx:550
 AliTRDCalibChamberStatus.cxx:551
 AliTRDCalibChamberStatus.cxx:552
 AliTRDCalibChamberStatus.cxx:553
 AliTRDCalibChamberStatus.cxx:554
 AliTRDCalibChamberStatus.cxx:555
 AliTRDCalibChamberStatus.cxx:556
 AliTRDCalibChamberStatus.cxx:557
 AliTRDCalibChamberStatus.cxx:558
 AliTRDCalibChamberStatus.cxx:559
 AliTRDCalibChamberStatus.cxx:560
 AliTRDCalibChamberStatus.cxx:561
 AliTRDCalibChamberStatus.cxx:562
 AliTRDCalibChamberStatus.cxx:563
 AliTRDCalibChamberStatus.cxx:564
 AliTRDCalibChamberStatus.cxx:565
 AliTRDCalibChamberStatus.cxx:566
 AliTRDCalibChamberStatus.cxx:567
 AliTRDCalibChamberStatus.cxx:568
 AliTRDCalibChamberStatus.cxx:569
 AliTRDCalibChamberStatus.cxx:570
 AliTRDCalibChamberStatus.cxx:571
 AliTRDCalibChamberStatus.cxx:572
 AliTRDCalibChamberStatus.cxx:573
 AliTRDCalibChamberStatus.cxx:574
 AliTRDCalibChamberStatus.cxx:575
 AliTRDCalibChamberStatus.cxx:576
 AliTRDCalibChamberStatus.cxx:577
 AliTRDCalibChamberStatus.cxx:578
 AliTRDCalibChamberStatus.cxx:579
 AliTRDCalibChamberStatus.cxx:580
 AliTRDCalibChamberStatus.cxx:581
 AliTRDCalibChamberStatus.cxx:582
 AliTRDCalibChamberStatus.cxx:583
 AliTRDCalibChamberStatus.cxx:584
 AliTRDCalibChamberStatus.cxx:585
 AliTRDCalibChamberStatus.cxx:586
 AliTRDCalibChamberStatus.cxx:587
 AliTRDCalibChamberStatus.cxx:588
 AliTRDCalibChamberStatus.cxx:589
 AliTRDCalibChamberStatus.cxx:590
 AliTRDCalibChamberStatus.cxx:591
 AliTRDCalibChamberStatus.cxx:592
 AliTRDCalibChamberStatus.cxx:593
 AliTRDCalibChamberStatus.cxx:594
 AliTRDCalibChamberStatus.cxx:595
 AliTRDCalibChamberStatus.cxx:596
 AliTRDCalibChamberStatus.cxx:597
 AliTRDCalibChamberStatus.cxx:598
 AliTRDCalibChamberStatus.cxx:599
 AliTRDCalibChamberStatus.cxx:600
 AliTRDCalibChamberStatus.cxx:601
 AliTRDCalibChamberStatus.cxx:602
 AliTRDCalibChamberStatus.cxx:603
 AliTRDCalibChamberStatus.cxx:604
 AliTRDCalibChamberStatus.cxx:605
 AliTRDCalibChamberStatus.cxx:606
 AliTRDCalibChamberStatus.cxx:607
 AliTRDCalibChamberStatus.cxx:608
 AliTRDCalibChamberStatus.cxx:609
 AliTRDCalibChamberStatus.cxx:610
 AliTRDCalibChamberStatus.cxx:611
 AliTRDCalibChamberStatus.cxx:612
 AliTRDCalibChamberStatus.cxx:613
 AliTRDCalibChamberStatus.cxx:614
 AliTRDCalibChamberStatus.cxx:615
 AliTRDCalibChamberStatus.cxx:616
 AliTRDCalibChamberStatus.cxx:617
 AliTRDCalibChamberStatus.cxx:618
 AliTRDCalibChamberStatus.cxx:619
 AliTRDCalibChamberStatus.cxx:620
 AliTRDCalibChamberStatus.cxx:621
 AliTRDCalibChamberStatus.cxx:622
 AliTRDCalibChamberStatus.cxx:623
 AliTRDCalibChamberStatus.cxx:624
 AliTRDCalibChamberStatus.cxx:625
 AliTRDCalibChamberStatus.cxx:626
 AliTRDCalibChamberStatus.cxx:627
 AliTRDCalibChamberStatus.cxx:628
 AliTRDCalibChamberStatus.cxx:629
 AliTRDCalibChamberStatus.cxx:630
 AliTRDCalibChamberStatus.cxx:631
 AliTRDCalibChamberStatus.cxx:632
 AliTRDCalibChamberStatus.cxx:633
 AliTRDCalibChamberStatus.cxx:634
 AliTRDCalibChamberStatus.cxx:635
 AliTRDCalibChamberStatus.cxx:636
 AliTRDCalibChamberStatus.cxx:637
 AliTRDCalibChamberStatus.cxx:638
 AliTRDCalibChamberStatus.cxx:639
 AliTRDCalibChamberStatus.cxx:640
 AliTRDCalibChamberStatus.cxx:641
 AliTRDCalibChamberStatus.cxx:642
 AliTRDCalibChamberStatus.cxx:643
 AliTRDCalibChamberStatus.cxx:644
 AliTRDCalibChamberStatus.cxx:645
 AliTRDCalibChamberStatus.cxx:646
 AliTRDCalibChamberStatus.cxx:647
 AliTRDCalibChamberStatus.cxx:648
 AliTRDCalibChamberStatus.cxx:649
 AliTRDCalibChamberStatus.cxx:650
 AliTRDCalibChamberStatus.cxx:651
 AliTRDCalibChamberStatus.cxx:652
 AliTRDCalibChamberStatus.cxx:653
 AliTRDCalibChamberStatus.cxx:654
 AliTRDCalibChamberStatus.cxx:655
 AliTRDCalibChamberStatus.cxx:656
 AliTRDCalibChamberStatus.cxx:657
 AliTRDCalibChamberStatus.cxx:658
 AliTRDCalibChamberStatus.cxx:659
 AliTRDCalibChamberStatus.cxx:660
 AliTRDCalibChamberStatus.cxx:661
 AliTRDCalibChamberStatus.cxx:662
 AliTRDCalibChamberStatus.cxx:663
 AliTRDCalibChamberStatus.cxx:664
 AliTRDCalibChamberStatus.cxx:665
 AliTRDCalibChamberStatus.cxx:666
 AliTRDCalibChamberStatus.cxx:667
 AliTRDCalibChamberStatus.cxx:668
 AliTRDCalibChamberStatus.cxx:669
 AliTRDCalibChamberStatus.cxx:670
 AliTRDCalibChamberStatus.cxx:671
 AliTRDCalibChamberStatus.cxx:672
 AliTRDCalibChamberStatus.cxx:673
 AliTRDCalibChamberStatus.cxx:674
 AliTRDCalibChamberStatus.cxx:675
 AliTRDCalibChamberStatus.cxx:676
 AliTRDCalibChamberStatus.cxx:677
 AliTRDCalibChamberStatus.cxx:678
 AliTRDCalibChamberStatus.cxx:679
 AliTRDCalibChamberStatus.cxx:680
 AliTRDCalibChamberStatus.cxx:681
 AliTRDCalibChamberStatus.cxx:682
 AliTRDCalibChamberStatus.cxx:683
 AliTRDCalibChamberStatus.cxx:684
 AliTRDCalibChamberStatus.cxx:685
 AliTRDCalibChamberStatus.cxx:686
 AliTRDCalibChamberStatus.cxx:687
 AliTRDCalibChamberStatus.cxx:688
 AliTRDCalibChamberStatus.cxx:689
 AliTRDCalibChamberStatus.cxx:690
 AliTRDCalibChamberStatus.cxx:691
 AliTRDCalibChamberStatus.cxx:692
 AliTRDCalibChamberStatus.cxx:693
 AliTRDCalibChamberStatus.cxx:694
 AliTRDCalibChamberStatus.cxx:695
 AliTRDCalibChamberStatus.cxx:696
 AliTRDCalibChamberStatus.cxx:697
 AliTRDCalibChamberStatus.cxx:698
 AliTRDCalibChamberStatus.cxx:699
 AliTRDCalibChamberStatus.cxx:700
 AliTRDCalibChamberStatus.cxx:701
 AliTRDCalibChamberStatus.cxx:702
 AliTRDCalibChamberStatus.cxx:703
 AliTRDCalibChamberStatus.cxx:704
 AliTRDCalibChamberStatus.cxx:705
 AliTRDCalibChamberStatus.cxx:706
 AliTRDCalibChamberStatus.cxx:707
 AliTRDCalibChamberStatus.cxx:708
 AliTRDCalibChamberStatus.cxx:709
 AliTRDCalibChamberStatus.cxx:710
 AliTRDCalibChamberStatus.cxx:711
 AliTRDCalibChamberStatus.cxx:712
 AliTRDCalibChamberStatus.cxx:713
 AliTRDCalibChamberStatus.cxx:714
 AliTRDCalibChamberStatus.cxx:715
 AliTRDCalibChamberStatus.cxx:716
 AliTRDCalibChamberStatus.cxx:717
 AliTRDCalibChamberStatus.cxx:718
 AliTRDCalibChamberStatus.cxx:719
 AliTRDCalibChamberStatus.cxx:720
 AliTRDCalibChamberStatus.cxx:721
 AliTRDCalibChamberStatus.cxx:722
 AliTRDCalibChamberStatus.cxx:723
 AliTRDCalibChamberStatus.cxx:724
 AliTRDCalibChamberStatus.cxx:725
 AliTRDCalibChamberStatus.cxx:726
 AliTRDCalibChamberStatus.cxx:727
 AliTRDCalibChamberStatus.cxx:728
 AliTRDCalibChamberStatus.cxx:729
 AliTRDCalibChamberStatus.cxx:730
 AliTRDCalibChamberStatus.cxx:731
 AliTRDCalibChamberStatus.cxx:732
 AliTRDCalibChamberStatus.cxx:733
 AliTRDCalibChamberStatus.cxx:734
 AliTRDCalibChamberStatus.cxx:735
 AliTRDCalibChamberStatus.cxx:736
 AliTRDCalibChamberStatus.cxx:737
 AliTRDCalibChamberStatus.cxx:738
 AliTRDCalibChamberStatus.cxx:739
 AliTRDCalibChamberStatus.cxx:740
 AliTRDCalibChamberStatus.cxx:741
 AliTRDCalibChamberStatus.cxx:742
 AliTRDCalibChamberStatus.cxx:743
 AliTRDCalibChamberStatus.cxx:744
 AliTRDCalibChamberStatus.cxx:745
 AliTRDCalibChamberStatus.cxx:746
 AliTRDCalibChamberStatus.cxx:747
 AliTRDCalibChamberStatus.cxx:748
 AliTRDCalibChamberStatus.cxx:749
 AliTRDCalibChamberStatus.cxx:750
 AliTRDCalibChamberStatus.cxx:751
 AliTRDCalibChamberStatus.cxx:752
 AliTRDCalibChamberStatus.cxx:753
 AliTRDCalibChamberStatus.cxx:754
 AliTRDCalibChamberStatus.cxx:755
 AliTRDCalibChamberStatus.cxx:756
 AliTRDCalibChamberStatus.cxx:757
 AliTRDCalibChamberStatus.cxx:758
 AliTRDCalibChamberStatus.cxx:759
 AliTRDCalibChamberStatus.cxx:760
 AliTRDCalibChamberStatus.cxx:761
 AliTRDCalibChamberStatus.cxx:762
 AliTRDCalibChamberStatus.cxx:763