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

#include "Riostream.h"
#include "TF1.h"
#include "TFile.h"
#include "TObjString.h"
#include "TROOT.h"
#include "TClonesArray.h"
#include "TH1F.h"
#include "TObjArray.h"
#include "TTree.h"
#include "TMath.h"

// --- Standard library ---

// --- AliRoot header files ---
#include "AliDAQ.h"
#include "AliLog.h"
#include "AliRawReader.h"
#include "AliPMDRawStream.h"
#include "AliPMDddldata.h"
#include "AliPMDCalibGain.h"

using std::ifstream;
ClassImp(AliPMDCalibGain)

AliPMDCalibGain::AliPMDCalibGain():
  TObject(),
  fpw(NULL)
{
  // Standard Constructor
  for(Int_t idet = 0; idet < kDet; idet++)
    {
      for(Int_t ismn = 0; ismn < kMaxSMN; ismn++)
	{
	  fSMIso[idet][ismn]   = 0.;
	  fSMCount[idet][ismn] = 0.;
	  fCountSm[idet][ismn]=0.;
	  fTempnhit[idet][ismn]=0.;
	  fTempnhitSq[idet][ismn]=0.;
	  for(Int_t jrow = 0; jrow < kMaxRow; jrow++)
	    {
	      for(Int_t kcol = 0; kcol < kMaxCol; kcol++)
		{
		  fCellIso[idet][ismn][jrow][kcol]    = 0.;
		  fCellCount[idet][ismn][jrow][kcol]  = 0.;
		  fNhitCell[idet][ismn][jrow][kcol]   = 0.;
		  fPedMeanRMS[idet][ismn][jrow][kcol] = 0.;
		  fHotFlag[idet][ismn][jrow][kcol]    = 0.;
		  
		}
	    }
	}
    }
  
}
// ------------------------------------------------------------------------ //
AliPMDCalibGain::AliPMDCalibGain(const AliPMDCalibGain &pmdcalibgain):
  TObject(pmdcalibgain),
  fpw(NULL)
{
  for(Int_t idet = 0; idet < kDet; idet++)
    {
      for(Int_t ismn = 0; ismn < kMaxSMN; ismn++)
	{
	  fSMIso[idet][ismn] = pmdcalibgain.fSMIso[idet][ismn] ;
	  fSMCount[idet][ismn] = pmdcalibgain.fSMCount[idet][ismn] ;
	  fCountSm[idet][ismn] = pmdcalibgain.fCountSm[idet][ismn];
	  fTempnhit[idet][ismn] = pmdcalibgain.fTempnhit[idet][ismn];
	  fTempnhitSq[idet][ismn] = pmdcalibgain.fTempnhitSq[idet][ismn];
	  for(Int_t jrow = 0; jrow < kMaxRow; jrow++)
	    {
	      for(Int_t kcol = 0; kcol < kMaxCol; kcol++)
		{
		  fCellIso[idet][ismn][jrow][kcol] = pmdcalibgain.fCellIso[idet][ismn][jrow][kcol];
		  fCellCount[idet][ismn][jrow][kcol] = pmdcalibgain.fCellCount[idet][ismn][jrow][kcol];
		  fNhitCell[idet][ismn][jrow][kcol] = pmdcalibgain.fNhitCell[idet][ismn][jrow][kcol];
		  fPedMeanRMS[idet][ismn][jrow][kcol] = pmdcalibgain.fPedMeanRMS[idet][ismn][jrow][kcol];
		  fHotFlag[idet][ismn][jrow][kcol] = pmdcalibgain.fHotFlag[idet][ismn][jrow][kcol];
		  
		}
	    }
	}
    }
  
}
// ------------------------------------------------------------------------ //
AliPMDCalibGain &AliPMDCalibGain::operator=(const AliPMDCalibGain &pmdcalibgain)
{
  if(this != &pmdcalibgain)
    {
      this->fpw = pmdcalibgain.fpw;
      for(Int_t idet = 0; idet < kDet; idet++)
	{
	  for(Int_t ismn = 0; ismn < kMaxSMN; ismn++)
	    {
	      fSMIso[idet][ismn]      = pmdcalibgain.fSMIso[idet][ismn];
	      fSMCount[idet][ismn]    = pmdcalibgain.fSMCount[idet][ismn];
	      fCountSm[idet][ismn]    = pmdcalibgain.fCountSm[idet][ismn];
	      fTempnhit[idet][ismn]   = pmdcalibgain.fTempnhit[idet][ismn];
	      fTempnhitSq[idet][ismn] = pmdcalibgain.fTempnhitSq[idet][ismn];
	      for(Int_t jrow = 0; jrow < kMaxRow;jrow++)
		{
		  for(Int_t kcol = 0; kcol < kMaxCol; kcol++)
		    {
		      fCellIso[idet][ismn][jrow][kcol] = pmdcalibgain.fCellIso[idet][ismn][jrow][kcol];
		      fCellCount[idet][ismn][jrow][kcol] = pmdcalibgain.fCellCount[idet][ismn][jrow][kcol];
		      fNhitCell[idet][ismn][jrow][kcol] = pmdcalibgain.fNhitCell[idet][ismn][jrow][kcol]; //za 
		      fPedMeanRMS[idet][ismn][jrow][kcol] = pmdcalibgain.fPedMeanRMS[idet][ismn][jrow][kcol];
		      fHotFlag[idet][ismn][jrow][kcol] = pmdcalibgain.fHotFlag[idet][ismn][jrow][kcol];
		      
		    }
		}
	    }
	}
    }
  return *this;
}
// ------------------------------------------------------------------------ //
AliPMDCalibGain::~AliPMDCalibGain()
{
  // dtor
}

// ------------------------------------------------------------------------ //

Int_t AliPMDCalibGain::ExtractPedestal(const Char_t *rootFile)
{
  // Pedestal extraction from the PMD_PED.root file
  // To be called once at the beginning
  
  Int_t   det=0, sm=0, row=0, col=0;
  Float_t mean=0., rms=0.;
  
  TFile *pedfile = new TFile(rootFile);
  
  if(!pedfile)
    {
      printf("ERROR --- NO PEDESTAL (PMD_PED1.root) FILE IS FOUND --- STOP GAIN DA\n");
      return -3;
    }


  TTree *ped =(TTree*)pedfile->Get("ped");

  ped->SetBranchAddress("det",&det);
  ped->SetBranchAddress("sm",&sm);
  ped->SetBranchAddress("row",&row);
  ped->SetBranchAddress("col",&col);
  ped->SetBranchAddress("mean",&mean);
  ped->SetBranchAddress("rms",&rms);

  Int_t nentries = (Int_t)ped->GetEntries();

  for (Int_t ient = 0; ient < nentries; ient++)
    {
      ped->GetEntry(ient);
      fPedMeanRMS[det][sm][row][col] = mean + 3.*rms;
      //printf("Mean= %f, RMS= %f, PedMeanRMS=%f\n",mean,rms,fPedMeanRMS[det][sm][row][col]);

    }

  pedfile->Close();
  delete pedfile;
  pedfile = 0x0;

  return 1;
}
//------------------------------------------------------------------------------------------------

Int_t AliPMDCalibGain::ExtractHotChannel(const Char_t *rootFile)
{
  // HotChannel extraction from the PMD_HOT.root file
  // To be called once at the beginning

  Int_t   det=0, sm=0, row=0, col=0;
  Float_t flag=0.;

  TFile *hotmapfile = new TFile(rootFile);

  if(!hotmapfile)
    {
      printf(" NO HOTCHANNEL MAP (PMD_HOT.root) FILE IS FOUND \n");

      for (Int_t idet = 0; idet < kDet; idet++)
	{
	  for (Int_t ismn = 0; ismn < kMaxSMN; ismn++)
	    {
	      for (Int_t irow = 0; irow < kMaxRow; irow++)
		{
		  for (Int_t icol = 0; icol < kMaxCol; icol++)
		    {
		      fHotFlag[idet][ismn][irow][icol] = 0.;
		    }
		}
	    }
	}
    }


  TTree *hot =(TTree*)hotmapfile->Get("hot");
  
  hot->SetBranchAddress("det",&det);
  hot->SetBranchAddress("sm",&sm);
  hot->SetBranchAddress("row",&row);
  hot->SetBranchAddress("col",&col);
  hot->SetBranchAddress("flag",&flag);
  
  Int_t nentries = (Int_t)hot->GetEntries();
  
  for (Int_t ient = 0; ient < nentries; ient++)
    {
      hot->GetEntry(ient);
      fHotFlag[det][sm][row][col] = flag;

      //printf(" HotFlag=%f\n",fHotFlag[det][sm][row][col]);
    }

  hotmapfile->Close();
  delete hotmapfile;
  hotmapfile = 0x0;
  
  return 1;
}


// ------------------------------------------------------------------------ //

void AliPMDCalibGain::ReadTempFile(const Char_t *tempFile)
{
  // Read the variables from the file
  
  ifstream intmpfile;
  intmpfile.open(tempFile);

  Int_t iddet = 0, issm = 0, irrow = 0, iccol = 0;
  Float_t smcount = 0., smiso = 0.;
  Float_t cellcount = 0., celliso = 0.;


  for (Int_t idet = 0; idet < kDet; idet++)
    {
      for (Int_t ism = 0; ism < kMaxSMN; ism++)
	{
	  intmpfile >> iddet >> issm >> smcount >> smiso;
	  fSMCount[idet][ism] = smcount;
	  fSMIso[idet][ism]   = smiso;
	}
    }

  for (Int_t idet = 0; idet < kDet; idet++)
    {
      for (Int_t ism = 0; ism < kMaxSMN; ism++)
	{
	  for (Int_t irow = 0; irow < kMaxRow; irow++)
	    {
	      for (Int_t icol = 0; icol < kMaxCol; icol++)
		{
		  intmpfile >> iddet >> issm >> irrow >> iccol
			    >> cellcount >> celliso;
		  fCellCount[idet][ism][irow][icol] = cellcount;
		  fCellIso[idet][ism][irow][icol]   = celliso;
		}
	    }
	}
    }
  

  intmpfile.close();

}
// ------------------------------------------------------------------------ //
void AliPMDCalibGain::WriteTempFile(const Char_t *tempFile)
{
  // Write the Temporary file if the required statics is not achieved


  /*
    Following variables to be written to a file
    fDetIso[idet] ;
    fSMIso[idet][ismn]; 
    fCellIso[idet][ismn][irow][icol]; 
    
    fDetCount[idet];
    fSMCount[idet][ismn];
    fCellCount[idet][ismn][irow][icol];
  */				  


  fpw = fopen(tempFile,"w+");
  
  for (Int_t idet = 0; idet < kDet; idet++)
    {
     // fprintf(fpw,"%d %f %f\n",idet,fDetCount[idet],fDetIso[idet]);
    }
  
  for (Int_t idet = 0; idet < kDet; idet++)
    {
      for (Int_t ism = 0; ism < kMaxSMN; ism++)
	{
	  fprintf(fpw,"%d %d %f %f\n",idet,ism, fSMCount[idet][ism],fSMIso[idet][ism]);
	}
    }
  
  for (Int_t idet = 0; idet < kDet; idet++)
    {
      for (Int_t ism = 0; ism < kMaxSMN; ism++)
	{
	  for (Int_t irow = 0; irow < kMaxRow; irow++)
	    {
	      for (Int_t icol = 0; icol < kMaxCol; icol++)
		{
		  fprintf(fpw,"%d %d %d %d %f %f\n",idet,ism,irow,icol,
			  fCellCount[idet][ism][irow][icol],
			  fCellIso[idet][ism][irow][icol]);
		}
	    }
	}
    }
  
  fclose(fpw);
  
}

// ------------------------------------------------------------------------ //

Bool_t AliPMDCalibGain::ProcessEvent(AliRawReader *rawReader, TObjArray *pmdddlcont)
{
  // Calculates the ADC of isolated cell
  
  const Int_t kDDL           = AliDAQ::NumberOfDdls("PMD");
  const Int_t kCellNeighbour = 6;
  Int_t neibx[6] = {1,0,-1,-1,0,1};
  Int_t neiby[6] = {0,1,1,0,-1,-1};
  
  Int_t id1 = 0,jd1 = 0;  //neighbour row/col
  Int_t isocount = 0;     //number of neighbours with 0 signal

  Float_t d1[kDet][kMaxSMN][kMaxRow][kMaxCol];
  
  for(Int_t idet = 0; idet < kDet; idet++)
    {
      for(Int_t ismn = 0; ismn < kMaxSMN; ismn++)
        {
	  for(Int_t irow = 0; irow < kMaxRow; irow++)
            {
              for(Int_t icol = 0; icol < kMaxCol; icol++)
                {
		  d1[idet][ismn][irow][icol] = 0.;
                }
	    }
	}
    }
  
  AliPMDRawStream rawStream(rawReader);

  Int_t iddl = -1;
  
  Int_t numberofDDLs = 0;

  while ((iddl = rawStream.DdlData(pmdddlcont)) >=0) {
    numberofDDLs++;
    
    Int_t ientries = pmdddlcont->GetEntries();
    
    for (Int_t ient = 0; ient < ientries; ient++)
      {
	AliPMDddldata *pmdddl = (AliPMDddldata*)pmdddlcont->UncheckedAt(ient);
	
	Int_t idet = pmdddl->GetDetector();
	Int_t ismn = pmdddl->GetSMN();
	Int_t mcm = pmdddl->GetMCM();
	//Int_t ichno = pmdddl->GetChannel();
	Int_t irow = pmdddl->GetRow();
	Int_t icol = pmdddl->GetColumn();
	Int_t isig = pmdddl->GetSignal();
	
	// This is the protection not to crash the code 
	
	if(mcm == 0) continue;
	if (irow < 0 || icol < 0 || irow > 47 || icol > 95) continue;
	
	// Pedestal subtraction
	if(fHotFlag[idet][ismn][irow][icol] == 1.0) isig = 0;
	
	if (isig>0)
	  {
	    d1[idet][ismn][irow][icol] =
	      (Float_t) isig - fPedMeanRMS[idet][ismn][irow][icol];
	    
	    //printf("Signal_ped_subtracted=%f, pedestal=%f\n",d1[idet][ismn][irow][icol]),fPedMeanRMS[idet][ismn][irow][icol];
	    
	    fNhitCell[idet][ismn][irow][icol]++;     //cell hit frequency
	  }
	

      }
    pmdddlcont->Delete();
    }
  
  for(Int_t idet=0; idet < kDet; idet++)
    {
      for(Int_t ismn = 0; ismn < kMaxSMN; ismn++)
	{
	  for(Int_t irow = 0; irow < kMaxRow; irow++)
	    {
	      for(Int_t icol = 0; icol < kMaxCol; icol++)
		{
		  if(d1[idet][ismn][irow][icol] > 0)
		    {
		      isocount = 0;
		      for(Int_t ii = 0; ii < kCellNeighbour; ii++)
			{
			  id1 = irow + neibx[ii];
			  jd1 = icol + neiby[ii];
			  if (id1 < 0) id1 = 0;
			  if (id1 > kMaxRow-1) id1 = kMaxRow - 1;
			  if (jd1 < 0) jd1 = 0;
			  if (jd1 > kMaxCol-1) jd1 = kMaxCol - 1;
			  if(d1[idet][ismn][id1][jd1] == 0)
			    {
			      isocount++;
			      if(isocount == kCellNeighbour)
				{
				  //fDetIso[idet] += d1[idet][ismn][irow][icol];
				  fSMIso[idet][ismn] += d1[idet][ismn][irow][icol];
				  fCellIso[idet][ismn][irow][icol] += d1[idet][ismn][irow][icol];
				  //fDetCount[idet]++;
				  fSMCount[idet][ismn]++;
				  fCellCount[idet][ismn][irow][icol]++;
				  
				}
			    }
			}  // neigh cell cond.
		    }     // d>0 cond.
		}
	    }
	}
    }
  
  for(Int_t idet=0; idet < kDet; idet++)
    {
      for(Int_t ismn = 0; ismn < kMaxSMN; ismn++)
	{
	  for(Int_t irow = 0; irow < kMaxRow; irow++)
	    {
	      for(Int_t icol = 0; icol < kMaxCol; icol++)
		{
		  if(fNhitCell[idet][ismn][irow][icol]>0)
		    {
		      fCountSm[idet][ismn]  += 1;
		      fTempnhit[idet][ismn] += fNhitCell[idet][ismn][irow][icol];
		      fTempnhitSq[idet][ismn] += fNhitCell[idet][ismn][irow][icol]
			*fNhitCell[idet][ismn][irow][icol];
		    }
		}
	    }
	}
    }
  
  if (numberofDDLs < kDDL) return kFALSE;
  return kTRUE;
  
}
// ------------------------------------------------------------------------ //
void AliPMDCalibGain::Analyse(TTree *gaintree, TTree *meantree)
{
  // Calculates the mean
  Int_t   det = 0, sm = 0, row = 0, col = 0;
  Float_t gain = 0.;
  Float_t cellmean = 0.;

  Float_t modmean[2][24];

  for (Int_t idet=0; idet < 2; idet++)
    {
      for (Int_t ism = 0; ism < 24; ism++)
	{
	  modmean[idet][ism] = 0.;
	}
    }

  gaintree->Branch("det",&det,"det/I");
  gaintree->Branch("sm",&sm,"sm/I");
  gaintree->Branch("row",&row,"row/I");
  gaintree->Branch("col",&col,"col/I");
  gaintree->Branch("gain",&gain,"gain/F");
  
  for(Int_t idet = 0; idet < kDet; idet++)
    {
      for(Int_t ism = 0; ism < kMaxSMN; ism++)
	{
	  if (fSMCount[idet][ism] > 0)
	    modmean[idet][ism] = fSMIso[idet][ism]/fSMCount[idet][ism];
	  for(Int_t irow = 0; irow < kMaxRow; irow++)
	    {
	      for(Int_t icol = 0; icol < kMaxCol; icol++)
		{
		  if (fCellCount[idet][ism][irow][icol] > 0.)
		    {
		      cellmean = fCellIso[idet][ism][irow][icol]/fCellCount[idet][ism][irow][icol];
		    }
		  det      = idet;
		  sm       = ism;
		  row      = irow;
		  col      = icol;
		  if (cellmean > 0.0 && fCellCount[idet][ism][irow][icol]>0.)
		    {
		      gain = cellmean/modmean[idet][ism];
		    }
		  else
		    {
		      gain = 0.;
		    }
		  //if(fCellCount[idet][ism][irow][icol]>0.) printf("CellCount =%f, gain= %f\n",fCellCount[idet][ism][irow][icol],gain);
		  gaintree->Fill();
		}
	    }
	}
    }

  Float_t smmean;

  // Writing each module mean value
  meantree->Branch("det",&det,"det/I");
  meantree->Branch("sm",&sm,"sm/I");
  meantree->Branch("smmean",&smmean,"row/F");
  
  for(Int_t idet = 0; idet < kDet; idet++)
    {
      for (Int_t ism = 0; ism < kMaxSMN; ism++)
	{
	  det    = idet;
	  sm     = ism;
	  smmean = modmean[idet][ism];
	  meantree->Fill();
	}
    }

}
// ------------------------------------------------------------------------ //
void AliPMDCalibGain::FindHotCell(TTree *hottree, Float_t xvar)
{
  // Calculates the mean
  Int_t   det = 0, sm = 0, row = 0, col = 0;
  Float_t flag = 0.;
  Float_t meannhit = 0.;
  Float_t meanSqnhit = 0.;
  Float_t sigmanhit = 0.,nhitcut = 0.;

  //Float_t xvar = 5.;

  hottree->Branch("det",&det,"det/I");
  hottree->Branch("sm",&sm,"sm/I");
  hottree->Branch("row",&row,"row/I");
  hottree->Branch("col",&col,"col/I");
  hottree->Branch("flag",&flag,"flag/F");
  
  for(Int_t idet = 0; idet < kDet; idet++)
    {
      for(Int_t ism = 0; ism < kMaxSMN; ism++)
	{
	  if (fCountSm[idet][ism]> 0)
	    {
	      meannhit   = fTempnhit[idet][ism]/fCountSm[idet][ism];
	      meanSqnhit = fTempnhitSq[idet][ism]/fCountSm[idet][ism];
	      sigmanhit  = sqrt(meanSqnhit-(meannhit*meannhit));
	      nhitcut    = meannhit + xvar*sigmanhit;

	      for(Int_t irow = 0; irow < kMaxRow; irow++)
		{
		  for(Int_t icol = 0; icol < kMaxCol; icol++)
		    {
		      det      = idet;
		      sm       = ism;
		      row      = irow;
		      col      = icol;
		      
		      if(fNhitCell[idet][ism][irow][icol] > nhitcut)
			{
			  flag  = 1.0;
			}
		      else
			{
			  flag = 0.;
			}
		      hottree->Fill();
		    }
		  
		}
	    }
	}
    }
}

 AliPMDCalibGain.cxx:1
 AliPMDCalibGain.cxx:2
 AliPMDCalibGain.cxx:3
 AliPMDCalibGain.cxx:4
 AliPMDCalibGain.cxx:5
 AliPMDCalibGain.cxx:6
 AliPMDCalibGain.cxx:7
 AliPMDCalibGain.cxx:8
 AliPMDCalibGain.cxx:9
 AliPMDCalibGain.cxx:10
 AliPMDCalibGain.cxx:11
 AliPMDCalibGain.cxx:12
 AliPMDCalibGain.cxx:13
 AliPMDCalibGain.cxx:14
 AliPMDCalibGain.cxx:15
 AliPMDCalibGain.cxx:16
 AliPMDCalibGain.cxx:17
 AliPMDCalibGain.cxx:18
 AliPMDCalibGain.cxx:19
 AliPMDCalibGain.cxx:20
 AliPMDCalibGain.cxx:21
 AliPMDCalibGain.cxx:22
 AliPMDCalibGain.cxx:23
 AliPMDCalibGain.cxx:24
 AliPMDCalibGain.cxx:25
 AliPMDCalibGain.cxx:26
 AliPMDCalibGain.cxx:27
 AliPMDCalibGain.cxx:28
 AliPMDCalibGain.cxx:29
 AliPMDCalibGain.cxx:30
 AliPMDCalibGain.cxx:31
 AliPMDCalibGain.cxx:32
 AliPMDCalibGain.cxx:33
 AliPMDCalibGain.cxx:34
 AliPMDCalibGain.cxx:35
 AliPMDCalibGain.cxx:36
 AliPMDCalibGain.cxx:37
 AliPMDCalibGain.cxx:38
 AliPMDCalibGain.cxx:39
 AliPMDCalibGain.cxx:40
 AliPMDCalibGain.cxx:41
 AliPMDCalibGain.cxx:42
 AliPMDCalibGain.cxx:43
 AliPMDCalibGain.cxx:44
 AliPMDCalibGain.cxx:45
 AliPMDCalibGain.cxx:46
 AliPMDCalibGain.cxx:47
 AliPMDCalibGain.cxx:48
 AliPMDCalibGain.cxx:49
 AliPMDCalibGain.cxx:50
 AliPMDCalibGain.cxx:51
 AliPMDCalibGain.cxx:52
 AliPMDCalibGain.cxx:53
 AliPMDCalibGain.cxx:54
 AliPMDCalibGain.cxx:55
 AliPMDCalibGain.cxx:56
 AliPMDCalibGain.cxx:57
 AliPMDCalibGain.cxx:58
 AliPMDCalibGain.cxx:59
 AliPMDCalibGain.cxx:60
 AliPMDCalibGain.cxx:61
 AliPMDCalibGain.cxx:62
 AliPMDCalibGain.cxx:63
 AliPMDCalibGain.cxx:64
 AliPMDCalibGain.cxx:65
 AliPMDCalibGain.cxx:66
 AliPMDCalibGain.cxx:67
 AliPMDCalibGain.cxx:68
 AliPMDCalibGain.cxx:69
 AliPMDCalibGain.cxx:70
 AliPMDCalibGain.cxx:71
 AliPMDCalibGain.cxx:72
 AliPMDCalibGain.cxx:73
 AliPMDCalibGain.cxx:74
 AliPMDCalibGain.cxx:75
 AliPMDCalibGain.cxx:76
 AliPMDCalibGain.cxx:77
 AliPMDCalibGain.cxx:78
 AliPMDCalibGain.cxx:79
 AliPMDCalibGain.cxx:80
 AliPMDCalibGain.cxx:81
 AliPMDCalibGain.cxx:82
 AliPMDCalibGain.cxx:83
 AliPMDCalibGain.cxx:84
 AliPMDCalibGain.cxx:85
 AliPMDCalibGain.cxx:86
 AliPMDCalibGain.cxx:87
 AliPMDCalibGain.cxx:88
 AliPMDCalibGain.cxx:89
 AliPMDCalibGain.cxx:90
 AliPMDCalibGain.cxx:91
 AliPMDCalibGain.cxx:92
 AliPMDCalibGain.cxx:93
 AliPMDCalibGain.cxx:94
 AliPMDCalibGain.cxx:95
 AliPMDCalibGain.cxx:96
 AliPMDCalibGain.cxx:97
 AliPMDCalibGain.cxx:98
 AliPMDCalibGain.cxx:99
 AliPMDCalibGain.cxx:100
 AliPMDCalibGain.cxx:101
 AliPMDCalibGain.cxx:102
 AliPMDCalibGain.cxx:103
 AliPMDCalibGain.cxx:104
 AliPMDCalibGain.cxx:105
 AliPMDCalibGain.cxx:106
 AliPMDCalibGain.cxx:107
 AliPMDCalibGain.cxx:108
 AliPMDCalibGain.cxx:109
 AliPMDCalibGain.cxx:110
 AliPMDCalibGain.cxx:111
 AliPMDCalibGain.cxx:112
 AliPMDCalibGain.cxx:113
 AliPMDCalibGain.cxx:114
 AliPMDCalibGain.cxx:115
 AliPMDCalibGain.cxx:116
 AliPMDCalibGain.cxx:117
 AliPMDCalibGain.cxx:118
 AliPMDCalibGain.cxx:119
 AliPMDCalibGain.cxx:120
 AliPMDCalibGain.cxx:121
 AliPMDCalibGain.cxx:122
 AliPMDCalibGain.cxx:123
 AliPMDCalibGain.cxx:124
 AliPMDCalibGain.cxx:125
 AliPMDCalibGain.cxx:126
 AliPMDCalibGain.cxx:127
 AliPMDCalibGain.cxx:128
 AliPMDCalibGain.cxx:129
 AliPMDCalibGain.cxx:130
 AliPMDCalibGain.cxx:131
 AliPMDCalibGain.cxx:132
 AliPMDCalibGain.cxx:133
 AliPMDCalibGain.cxx:134
 AliPMDCalibGain.cxx:135
 AliPMDCalibGain.cxx:136
 AliPMDCalibGain.cxx:137
 AliPMDCalibGain.cxx:138
 AliPMDCalibGain.cxx:139
 AliPMDCalibGain.cxx:140
 AliPMDCalibGain.cxx:141
 AliPMDCalibGain.cxx:142
 AliPMDCalibGain.cxx:143
 AliPMDCalibGain.cxx:144
 AliPMDCalibGain.cxx:145
 AliPMDCalibGain.cxx:146
 AliPMDCalibGain.cxx:147
 AliPMDCalibGain.cxx:148
 AliPMDCalibGain.cxx:149
 AliPMDCalibGain.cxx:150
 AliPMDCalibGain.cxx:151
 AliPMDCalibGain.cxx:152
 AliPMDCalibGain.cxx:153
 AliPMDCalibGain.cxx:154
 AliPMDCalibGain.cxx:155
 AliPMDCalibGain.cxx:156
 AliPMDCalibGain.cxx:157
 AliPMDCalibGain.cxx:158
 AliPMDCalibGain.cxx:159
 AliPMDCalibGain.cxx:160
 AliPMDCalibGain.cxx:161
 AliPMDCalibGain.cxx:162
 AliPMDCalibGain.cxx:163
 AliPMDCalibGain.cxx:164
 AliPMDCalibGain.cxx:165
 AliPMDCalibGain.cxx:166
 AliPMDCalibGain.cxx:167
 AliPMDCalibGain.cxx:168
 AliPMDCalibGain.cxx:169
 AliPMDCalibGain.cxx:170
 AliPMDCalibGain.cxx:171
 AliPMDCalibGain.cxx:172
 AliPMDCalibGain.cxx:173
 AliPMDCalibGain.cxx:174
 AliPMDCalibGain.cxx:175
 AliPMDCalibGain.cxx:176
 AliPMDCalibGain.cxx:177
 AliPMDCalibGain.cxx:178
 AliPMDCalibGain.cxx:179
 AliPMDCalibGain.cxx:180
 AliPMDCalibGain.cxx:181
 AliPMDCalibGain.cxx:182
 AliPMDCalibGain.cxx:183
 AliPMDCalibGain.cxx:184
 AliPMDCalibGain.cxx:185
 AliPMDCalibGain.cxx:186
 AliPMDCalibGain.cxx:187
 AliPMDCalibGain.cxx:188
 AliPMDCalibGain.cxx:189
 AliPMDCalibGain.cxx:190
 AliPMDCalibGain.cxx:191
 AliPMDCalibGain.cxx:192
 AliPMDCalibGain.cxx:193
 AliPMDCalibGain.cxx:194
 AliPMDCalibGain.cxx:195
 AliPMDCalibGain.cxx:196
 AliPMDCalibGain.cxx:197
 AliPMDCalibGain.cxx:198
 AliPMDCalibGain.cxx:199
 AliPMDCalibGain.cxx:200
 AliPMDCalibGain.cxx:201
 AliPMDCalibGain.cxx:202
 AliPMDCalibGain.cxx:203
 AliPMDCalibGain.cxx:204
 AliPMDCalibGain.cxx:205
 AliPMDCalibGain.cxx:206
 AliPMDCalibGain.cxx:207
 AliPMDCalibGain.cxx:208
 AliPMDCalibGain.cxx:209
 AliPMDCalibGain.cxx:210
 AliPMDCalibGain.cxx:211
 AliPMDCalibGain.cxx:212
 AliPMDCalibGain.cxx:213
 AliPMDCalibGain.cxx:214
 AliPMDCalibGain.cxx:215
 AliPMDCalibGain.cxx:216
 AliPMDCalibGain.cxx:217
 AliPMDCalibGain.cxx:218
 AliPMDCalibGain.cxx:219
 AliPMDCalibGain.cxx:220
 AliPMDCalibGain.cxx:221
 AliPMDCalibGain.cxx:222
 AliPMDCalibGain.cxx:223
 AliPMDCalibGain.cxx:224
 AliPMDCalibGain.cxx:225
 AliPMDCalibGain.cxx:226
 AliPMDCalibGain.cxx:227
 AliPMDCalibGain.cxx:228
 AliPMDCalibGain.cxx:229
 AliPMDCalibGain.cxx:230
 AliPMDCalibGain.cxx:231
 AliPMDCalibGain.cxx:232
 AliPMDCalibGain.cxx:233
 AliPMDCalibGain.cxx:234
 AliPMDCalibGain.cxx:235
 AliPMDCalibGain.cxx:236
 AliPMDCalibGain.cxx:237
 AliPMDCalibGain.cxx:238
 AliPMDCalibGain.cxx:239
 AliPMDCalibGain.cxx:240
 AliPMDCalibGain.cxx:241
 AliPMDCalibGain.cxx:242
 AliPMDCalibGain.cxx:243
 AliPMDCalibGain.cxx:244
 AliPMDCalibGain.cxx:245
 AliPMDCalibGain.cxx:246
 AliPMDCalibGain.cxx:247
 AliPMDCalibGain.cxx:248
 AliPMDCalibGain.cxx:249
 AliPMDCalibGain.cxx:250
 AliPMDCalibGain.cxx:251
 AliPMDCalibGain.cxx:252
 AliPMDCalibGain.cxx:253
 AliPMDCalibGain.cxx:254
 AliPMDCalibGain.cxx:255
 AliPMDCalibGain.cxx:256
 AliPMDCalibGain.cxx:257
 AliPMDCalibGain.cxx:258
 AliPMDCalibGain.cxx:259
 AliPMDCalibGain.cxx:260
 AliPMDCalibGain.cxx:261
 AliPMDCalibGain.cxx:262
 AliPMDCalibGain.cxx:263
 AliPMDCalibGain.cxx:264
 AliPMDCalibGain.cxx:265
 AliPMDCalibGain.cxx:266
 AliPMDCalibGain.cxx:267
 AliPMDCalibGain.cxx:268
 AliPMDCalibGain.cxx:269
 AliPMDCalibGain.cxx:270
 AliPMDCalibGain.cxx:271
 AliPMDCalibGain.cxx:272
 AliPMDCalibGain.cxx:273
 AliPMDCalibGain.cxx:274
 AliPMDCalibGain.cxx:275
 AliPMDCalibGain.cxx:276
 AliPMDCalibGain.cxx:277
 AliPMDCalibGain.cxx:278
 AliPMDCalibGain.cxx:279
 AliPMDCalibGain.cxx:280
 AliPMDCalibGain.cxx:281
 AliPMDCalibGain.cxx:282
 AliPMDCalibGain.cxx:283
 AliPMDCalibGain.cxx:284
 AliPMDCalibGain.cxx:285
 AliPMDCalibGain.cxx:286
 AliPMDCalibGain.cxx:287
 AliPMDCalibGain.cxx:288
 AliPMDCalibGain.cxx:289
 AliPMDCalibGain.cxx:290
 AliPMDCalibGain.cxx:291
 AliPMDCalibGain.cxx:292
 AliPMDCalibGain.cxx:293
 AliPMDCalibGain.cxx:294
 AliPMDCalibGain.cxx:295
 AliPMDCalibGain.cxx:296
 AliPMDCalibGain.cxx:297
 AliPMDCalibGain.cxx:298
 AliPMDCalibGain.cxx:299
 AliPMDCalibGain.cxx:300
 AliPMDCalibGain.cxx:301
 AliPMDCalibGain.cxx:302
 AliPMDCalibGain.cxx:303
 AliPMDCalibGain.cxx:304
 AliPMDCalibGain.cxx:305
 AliPMDCalibGain.cxx:306
 AliPMDCalibGain.cxx:307
 AliPMDCalibGain.cxx:308
 AliPMDCalibGain.cxx:309
 AliPMDCalibGain.cxx:310
 AliPMDCalibGain.cxx:311
 AliPMDCalibGain.cxx:312
 AliPMDCalibGain.cxx:313
 AliPMDCalibGain.cxx:314
 AliPMDCalibGain.cxx:315
 AliPMDCalibGain.cxx:316
 AliPMDCalibGain.cxx:317
 AliPMDCalibGain.cxx:318
 AliPMDCalibGain.cxx:319
 AliPMDCalibGain.cxx:320
 AliPMDCalibGain.cxx:321
 AliPMDCalibGain.cxx:322
 AliPMDCalibGain.cxx:323
 AliPMDCalibGain.cxx:324
 AliPMDCalibGain.cxx:325
 AliPMDCalibGain.cxx:326
 AliPMDCalibGain.cxx:327
 AliPMDCalibGain.cxx:328
 AliPMDCalibGain.cxx:329
 AliPMDCalibGain.cxx:330
 AliPMDCalibGain.cxx:331
 AliPMDCalibGain.cxx:332
 AliPMDCalibGain.cxx:333
 AliPMDCalibGain.cxx:334
 AliPMDCalibGain.cxx:335
 AliPMDCalibGain.cxx:336
 AliPMDCalibGain.cxx:337
 AliPMDCalibGain.cxx:338
 AliPMDCalibGain.cxx:339
 AliPMDCalibGain.cxx:340
 AliPMDCalibGain.cxx:341
 AliPMDCalibGain.cxx:342
 AliPMDCalibGain.cxx:343
 AliPMDCalibGain.cxx:344
 AliPMDCalibGain.cxx:345
 AliPMDCalibGain.cxx:346
 AliPMDCalibGain.cxx:347
 AliPMDCalibGain.cxx:348
 AliPMDCalibGain.cxx:349
 AliPMDCalibGain.cxx:350
 AliPMDCalibGain.cxx:351
 AliPMDCalibGain.cxx:352
 AliPMDCalibGain.cxx:353
 AliPMDCalibGain.cxx:354
 AliPMDCalibGain.cxx:355
 AliPMDCalibGain.cxx:356
 AliPMDCalibGain.cxx:357
 AliPMDCalibGain.cxx:358
 AliPMDCalibGain.cxx:359
 AliPMDCalibGain.cxx:360
 AliPMDCalibGain.cxx:361
 AliPMDCalibGain.cxx:362
 AliPMDCalibGain.cxx:363
 AliPMDCalibGain.cxx:364
 AliPMDCalibGain.cxx:365
 AliPMDCalibGain.cxx:366
 AliPMDCalibGain.cxx:367
 AliPMDCalibGain.cxx:368
 AliPMDCalibGain.cxx:369
 AliPMDCalibGain.cxx:370
 AliPMDCalibGain.cxx:371
 AliPMDCalibGain.cxx:372
 AliPMDCalibGain.cxx:373
 AliPMDCalibGain.cxx:374
 AliPMDCalibGain.cxx:375
 AliPMDCalibGain.cxx:376
 AliPMDCalibGain.cxx:377
 AliPMDCalibGain.cxx:378
 AliPMDCalibGain.cxx:379
 AliPMDCalibGain.cxx:380
 AliPMDCalibGain.cxx:381
 AliPMDCalibGain.cxx:382
 AliPMDCalibGain.cxx:383
 AliPMDCalibGain.cxx:384
 AliPMDCalibGain.cxx:385
 AliPMDCalibGain.cxx:386
 AliPMDCalibGain.cxx:387
 AliPMDCalibGain.cxx:388
 AliPMDCalibGain.cxx:389
 AliPMDCalibGain.cxx:390
 AliPMDCalibGain.cxx:391
 AliPMDCalibGain.cxx:392
 AliPMDCalibGain.cxx:393
 AliPMDCalibGain.cxx:394
 AliPMDCalibGain.cxx:395
 AliPMDCalibGain.cxx:396
 AliPMDCalibGain.cxx:397
 AliPMDCalibGain.cxx:398
 AliPMDCalibGain.cxx:399
 AliPMDCalibGain.cxx:400
 AliPMDCalibGain.cxx:401
 AliPMDCalibGain.cxx:402
 AliPMDCalibGain.cxx:403
 AliPMDCalibGain.cxx:404
 AliPMDCalibGain.cxx:405
 AliPMDCalibGain.cxx:406
 AliPMDCalibGain.cxx:407
 AliPMDCalibGain.cxx:408
 AliPMDCalibGain.cxx:409
 AliPMDCalibGain.cxx:410
 AliPMDCalibGain.cxx:411
 AliPMDCalibGain.cxx:412
 AliPMDCalibGain.cxx:413
 AliPMDCalibGain.cxx:414
 AliPMDCalibGain.cxx:415
 AliPMDCalibGain.cxx:416
 AliPMDCalibGain.cxx:417
 AliPMDCalibGain.cxx:418
 AliPMDCalibGain.cxx:419
 AliPMDCalibGain.cxx:420
 AliPMDCalibGain.cxx:421
 AliPMDCalibGain.cxx:422
 AliPMDCalibGain.cxx:423
 AliPMDCalibGain.cxx:424
 AliPMDCalibGain.cxx:425
 AliPMDCalibGain.cxx:426
 AliPMDCalibGain.cxx:427
 AliPMDCalibGain.cxx:428
 AliPMDCalibGain.cxx:429
 AliPMDCalibGain.cxx:430
 AliPMDCalibGain.cxx:431
 AliPMDCalibGain.cxx:432
 AliPMDCalibGain.cxx:433
 AliPMDCalibGain.cxx:434
 AliPMDCalibGain.cxx:435
 AliPMDCalibGain.cxx:436
 AliPMDCalibGain.cxx:437
 AliPMDCalibGain.cxx:438
 AliPMDCalibGain.cxx:439
 AliPMDCalibGain.cxx:440
 AliPMDCalibGain.cxx:441
 AliPMDCalibGain.cxx:442
 AliPMDCalibGain.cxx:443
 AliPMDCalibGain.cxx:444
 AliPMDCalibGain.cxx:445
 AliPMDCalibGain.cxx:446
 AliPMDCalibGain.cxx:447
 AliPMDCalibGain.cxx:448
 AliPMDCalibGain.cxx:449
 AliPMDCalibGain.cxx:450
 AliPMDCalibGain.cxx:451
 AliPMDCalibGain.cxx:452
 AliPMDCalibGain.cxx:453
 AliPMDCalibGain.cxx:454
 AliPMDCalibGain.cxx:455
 AliPMDCalibGain.cxx:456
 AliPMDCalibGain.cxx:457
 AliPMDCalibGain.cxx:458
 AliPMDCalibGain.cxx:459
 AliPMDCalibGain.cxx:460
 AliPMDCalibGain.cxx:461
 AliPMDCalibGain.cxx:462
 AliPMDCalibGain.cxx:463
 AliPMDCalibGain.cxx:464
 AliPMDCalibGain.cxx:465
 AliPMDCalibGain.cxx:466
 AliPMDCalibGain.cxx:467
 AliPMDCalibGain.cxx:468
 AliPMDCalibGain.cxx:469
 AliPMDCalibGain.cxx:470
 AliPMDCalibGain.cxx:471
 AliPMDCalibGain.cxx:472
 AliPMDCalibGain.cxx:473
 AliPMDCalibGain.cxx:474
 AliPMDCalibGain.cxx:475
 AliPMDCalibGain.cxx:476
 AliPMDCalibGain.cxx:477
 AliPMDCalibGain.cxx:478
 AliPMDCalibGain.cxx:479
 AliPMDCalibGain.cxx:480
 AliPMDCalibGain.cxx:481
 AliPMDCalibGain.cxx:482
 AliPMDCalibGain.cxx:483
 AliPMDCalibGain.cxx:484
 AliPMDCalibGain.cxx:485
 AliPMDCalibGain.cxx:486
 AliPMDCalibGain.cxx:487
 AliPMDCalibGain.cxx:488
 AliPMDCalibGain.cxx:489
 AliPMDCalibGain.cxx:490
 AliPMDCalibGain.cxx:491
 AliPMDCalibGain.cxx:492
 AliPMDCalibGain.cxx:493
 AliPMDCalibGain.cxx:494
 AliPMDCalibGain.cxx:495
 AliPMDCalibGain.cxx:496
 AliPMDCalibGain.cxx:497
 AliPMDCalibGain.cxx:498
 AliPMDCalibGain.cxx:499
 AliPMDCalibGain.cxx:500
 AliPMDCalibGain.cxx:501
 AliPMDCalibGain.cxx:502
 AliPMDCalibGain.cxx:503
 AliPMDCalibGain.cxx:504
 AliPMDCalibGain.cxx:505
 AliPMDCalibGain.cxx:506
 AliPMDCalibGain.cxx:507
 AliPMDCalibGain.cxx:508
 AliPMDCalibGain.cxx:509
 AliPMDCalibGain.cxx:510
 AliPMDCalibGain.cxx:511
 AliPMDCalibGain.cxx:512
 AliPMDCalibGain.cxx:513
 AliPMDCalibGain.cxx:514
 AliPMDCalibGain.cxx:515
 AliPMDCalibGain.cxx:516
 AliPMDCalibGain.cxx:517
 AliPMDCalibGain.cxx:518
 AliPMDCalibGain.cxx:519
 AliPMDCalibGain.cxx:520
 AliPMDCalibGain.cxx:521
 AliPMDCalibGain.cxx:522
 AliPMDCalibGain.cxx:523
 AliPMDCalibGain.cxx:524
 AliPMDCalibGain.cxx:525
 AliPMDCalibGain.cxx:526
 AliPMDCalibGain.cxx:527
 AliPMDCalibGain.cxx:528
 AliPMDCalibGain.cxx:529
 AliPMDCalibGain.cxx:530
 AliPMDCalibGain.cxx:531
 AliPMDCalibGain.cxx:532
 AliPMDCalibGain.cxx:533
 AliPMDCalibGain.cxx:534
 AliPMDCalibGain.cxx:535
 AliPMDCalibGain.cxx:536
 AliPMDCalibGain.cxx:537
 AliPMDCalibGain.cxx:538
 AliPMDCalibGain.cxx:539
 AliPMDCalibGain.cxx:540
 AliPMDCalibGain.cxx:541
 AliPMDCalibGain.cxx:542
 AliPMDCalibGain.cxx:543
 AliPMDCalibGain.cxx:544
 AliPMDCalibGain.cxx:545
 AliPMDCalibGain.cxx:546
 AliPMDCalibGain.cxx:547
 AliPMDCalibGain.cxx:548
 AliPMDCalibGain.cxx:549
 AliPMDCalibGain.cxx:550
 AliPMDCalibGain.cxx:551
 AliPMDCalibGain.cxx:552
 AliPMDCalibGain.cxx:553
 AliPMDCalibGain.cxx:554
 AliPMDCalibGain.cxx:555
 AliPMDCalibGain.cxx:556
 AliPMDCalibGain.cxx:557
 AliPMDCalibGain.cxx:558
 AliPMDCalibGain.cxx:559
 AliPMDCalibGain.cxx:560
 AliPMDCalibGain.cxx:561
 AliPMDCalibGain.cxx:562
 AliPMDCalibGain.cxx:563
 AliPMDCalibGain.cxx:564
 AliPMDCalibGain.cxx:565
 AliPMDCalibGain.cxx:566
 AliPMDCalibGain.cxx:567
 AliPMDCalibGain.cxx:568
 AliPMDCalibGain.cxx:569
 AliPMDCalibGain.cxx:570
 AliPMDCalibGain.cxx:571
 AliPMDCalibGain.cxx:572
 AliPMDCalibGain.cxx:573
 AliPMDCalibGain.cxx:574
 AliPMDCalibGain.cxx:575
 AliPMDCalibGain.cxx:576
 AliPMDCalibGain.cxx:577
 AliPMDCalibGain.cxx:578
 AliPMDCalibGain.cxx:579
 AliPMDCalibGain.cxx:580
 AliPMDCalibGain.cxx:581
 AliPMDCalibGain.cxx:582
 AliPMDCalibGain.cxx:583
 AliPMDCalibGain.cxx:584
 AliPMDCalibGain.cxx:585
 AliPMDCalibGain.cxx:586
 AliPMDCalibGain.cxx:587
 AliPMDCalibGain.cxx:588
 AliPMDCalibGain.cxx:589
 AliPMDCalibGain.cxx:590
 AliPMDCalibGain.cxx:591
 AliPMDCalibGain.cxx:592
 AliPMDCalibGain.cxx:593
 AliPMDCalibGain.cxx:594
 AliPMDCalibGain.cxx:595
 AliPMDCalibGain.cxx:596
 AliPMDCalibGain.cxx:597
 AliPMDCalibGain.cxx:598
 AliPMDCalibGain.cxx:599
 AliPMDCalibGain.cxx:600
 AliPMDCalibGain.cxx:601
 AliPMDCalibGain.cxx:602
 AliPMDCalibGain.cxx:603
 AliPMDCalibGain.cxx:604
 AliPMDCalibGain.cxx:605
 AliPMDCalibGain.cxx:606
 AliPMDCalibGain.cxx:607
 AliPMDCalibGain.cxx:608
 AliPMDCalibGain.cxx:609
 AliPMDCalibGain.cxx:610
 AliPMDCalibGain.cxx:611