ROOT logo
/**************************************************************************
 * Copyright(c) 2007-2009, 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 <TFile.h>
#include "AliITSOnlineSDDInjectors.h"
#include "AliLog.h"
#include <TH2F.h>
#include <TF1.h>
#include <TGraphErrors.h>
#include <TMath.h>
#include <TString.h>

/* $Id$ */

///////////////////////////////////////////////////////////////////
//                                                               //
// Implementation of the class used for SDD injector analysis    //
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//                                                               //
///////////////////////////////////////////////////////////////////

ClassImp(AliITSOnlineSDDInjectors)

const Float_t AliITSOnlineSDDInjectors::fgkSaturation = 1008.;
const Float_t AliITSOnlineSDDInjectors::fgkDefaultLThreshold1 = 8.;
const Float_t AliITSOnlineSDDInjectors::fgkDefaultLThreshold = 15.;
const Float_t AliITSOnlineSDDInjectors::fgkDefaultHThreshold1 =15.;
const Float_t AliITSOnlineSDDInjectors::fgkDefaultHThreshold = 30.;
const Float_t AliITSOnlineSDDInjectors::fgkDefaultMinSpeed = 5.5;
const Float_t AliITSOnlineSDDInjectors::fgkDefaultMaxSpeed = 9.0;
const Float_t AliITSOnlineSDDInjectors::fgkDefaultMaxErr = 1.5;
const Int_t   AliITSOnlineSDDInjectors::fgkDefaultPolDegree = 3;
const Float_t AliITSOnlineSDDInjectors::fgkDefaultTimeStep = 50.;
const UShort_t AliITSOnlineSDDInjectors::fgkDefaultTbMin[kInjLines] = {10,50,100};
const UShort_t AliITSOnlineSDDInjectors::fgkDefaultTbMax[kInjLines] = {20,70,120};

//______________________________________________________________________
AliITSOnlineSDDInjectors::AliITSOnlineSDDInjectors():
  AliITSOnlineSDD(),
  fHisto(),
  fTbZero(0.),
  fRMSTbZero(0.),
  fNEvents(0),
  fParam(),
  fPolDegree(0),
  fActualPolDegree(0),
  fMinDriftSpeed(0.),
  fMaxDriftSpeed(0.),
  fMaxDriftSpeedErr(0.),
  fFirstPadForFit(0),
  fLastPadForFit(0),
  fPadStatusCutForFit(0),
  fTimeStep(0.),
  fUseTimeZeroSignal(kFALSE),
  fMaxCellsAboveThreshold(40)
{
  // default constructor
  SetPositions();
  SetDefaults();
  SetTimeStep(fgkDefaultTimeStep);
  for(Int_t i=0;i<kInjPads;i++){ 
    fSumDriftSpeed[i]=0.;
    fSumSqDriftSpeed[i]=0.;
    fSumPadStatus[i]=0;
    fSumPadStatusCut[i]=0;
    fNEventsInPad[i]=0;
  }
  Reset();
}
//______________________________________________________________________
AliITSOnlineSDDInjectors::AliITSOnlineSDDInjectors(Int_t nddl, Int_t ncarlos, Int_t sid):
  AliITSOnlineSDD(nddl,ncarlos,sid),
  fHisto(),
  fTbZero(0.),
  fRMSTbZero(0.),
  fNEvents(0),
  fParam(),
  fPolDegree(0),
  fActualPolDegree(0),
  fMinDriftSpeed(0.),
  fMaxDriftSpeed(0.),
  fMaxDriftSpeedErr(0.),
  fFirstPadForFit(0),
  fLastPadForFit(0),
  fPadStatusCutForFit(0),
  fTimeStep(0.),
  fUseTimeZeroSignal(kFALSE),
  fMaxCellsAboveThreshold(40)
{ 
// standard constructor
  SetPositions();
  SetDefaults();
  SetTimeStep(fgkDefaultTimeStep);
  for(Int_t i=0;i<kInjPads;i++){ 
    fSumDriftSpeed[i]=0.;
    fSumSqDriftSpeed[i]=0.;
    fSumPadStatus[i]=0;
    fSumPadStatusCut[i]=0;
    fNEventsInPad[i]=0;
  }
  Reset();
}
//______________________________________________________________________
AliITSOnlineSDDInjectors::~AliITSOnlineSDDInjectors(){
  // Destructor
  // fHisto should not be deleted here because it points to an histo created 
  // by the external code which calls the method AnalyzeEvent
  // if(fHisto) delete fHisto;  
  if(fParam) delete [] fParam;
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::SetDefaults(){
  // Sets default values for parameters
  for(Int_t i=0;i<kInjLines;i++) {
    SetInjLineRange(i,fgkDefaultTbMin[i],fgkDefaultTbMax[i]);
    SetUseLine(i,kTRUE);
    SetThresholds(i,fgkDefaultLThreshold,fgkDefaultHThreshold);
  }
  SetThresholds(0,fgkDefaultLThreshold1,fgkDefaultHThreshold1);
  SetPolDegree(fgkDefaultPolDegree);
  SetMinDriftSpeed(fgkDefaultMinSpeed);
  SetMaxDriftSpeed(fgkDefaultMaxSpeed);
  SetMaxDriftSpeedErr(fgkDefaultMaxErr);
  SetFitLimits(1,kInjPads-2); // exclude first and last pad
  SetPadStatusCutForFit();
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::Set20MHzConfig(){
  // Sets specific parameters for 20 MHz running
  SetInjLineRange(0,10,20);
  SetInjLineRange(1,50,70);
  SetInjLineRange(2,100,120);
  SetTimeStep(50.);
  SetMaxNumberOfCellsPerAnode(40);
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::Set40MHzConfig(){
  // Sets specific parameters for 20 MHz running
  SetInjLineRange(0,20,50);
  SetInjLineRange(1,90,160);
  SetInjLineRange(2,170,240);
  SetTimeStep(25.);
  SetMaxNumberOfCellsPerAnode(80);
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::SetPositions(){
  // Sets drift distances for the 3 injector lines
  Double_t xLinFromCenterUm[kInjLines]={31860.,17460.,660.};
  Double_t xAnodeFromCenterUm=35085;
  for(Int_t i=0;i<kInjLines;i++){
    fPosition[i]=xAnodeFromCenterUm-xLinFromCenterUm[i];
    fPosition[i]/=10000.; // from microns to cm
  }
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::Reset(){
  // Resets all counters
  for(Int_t i=0;i<kInjPads;i++){ 
    fDriftSpeed[i]=0.;
    fDriftSpeedErr[i]=0.;
  }
  for(Int_t i=0;i<kInjPads;i++){
    for(Int_t j=0;j<kInjLines;j++){
      fGoodInj[i][j]=0;
      fCentroid[i][j]=0.;
      fRMSCentroid[i][j]=0.;
    }
  }
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::AnalyzeEvent(TH2F* his){
  // Analyze the current event
  AddEvent(his);
  FitDriftSpeedVsAnode();
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::AddEvent(TH2F* his){
  // Add the drift speed from current event to the average value
  if(fNEvents==0){
    for(Int_t i=0;i<kInjPads;i++){ 
      fSumDriftSpeed[i]=0.;
      fSumSqDriftSpeed[i]=0.;
      fSumPadStatus[i]=0;
      fSumPadStatusCut[i]=0;
      fNEventsInPad[i]=0;
    }
  }
  Reset();
  fHisto=his;
  FindGoodInjectors();
  FindCentroids();
  CalcTimeBinZero();
  for(Int_t j=0;j<kInjPads;j++){ 
    CalcDriftSpeed(j);
    Int_t padStatus=GetInjPadStatus(j);
    fSumPadStatus[j]+=padStatus;
    if(padStatus>fPadStatusCutForFit){
      fSumDriftSpeed[j]+=fDriftSpeed[j];
      fSumSqDriftSpeed[j]+=fDriftSpeed[j]*fDriftSpeed[j];
      fSumPadStatusCut[j]+=padStatus;
      fNEventsInPad[j]++;
    }
  }
  ++fNEvents;
}
//______________________________________________________________________
Double_t AliITSOnlineSDDInjectors::GetRMSDriftSpeed(Int_t ipad) const {
  // Compute RMS of drift speed distribution on one anode
  if(fNEventsInPad[ipad]<=1) return 0.;
  Double_t mean=fSumDriftSpeed[ipad]/(Double_t)fNEventsInPad[ipad];
  Double_t diff=fSumSqDriftSpeed[ipad]/(Double_t)fNEventsInPad[ipad]-mean*mean;
  if(diff<0.) diff=0.;
  return TMath::Sqrt(diff);
}

//______________________________________________________________________
void AliITSOnlineSDDInjectors::FitMeanDriftSpeedVsAnode(){
  // Fits the average drift speed vs.anode number
  if(fNEvents==0) return;
  for(Int_t i=0;i<kInjPads;i++){ 
    fDriftSpeed[i]=GetMeanDriftSpeed(i);
    Int_t padStatusCut=(Int_t)(GetMeanPadStatusCut(i)+0.5);
    for(Int_t ilin=0; ilin<kInjLines ; ilin++) fGoodInj[i][ilin]=(padStatusCut&1<<ilin)>>ilin;
    if(fNEventsInPad[i]>1){
      Double_t rms=GetRMSDriftSpeed(i);
      if(rms>0.) fDriftSpeedErr[i]=rms/TMath::Sqrt(fNEventsInPad[i]);
    }else{
      for(Int_t ilin=0; ilin<kInjLines ; ilin++) fGoodInj[i][ilin]=0;
    }
  }
  FitDriftSpeedVsAnode();
  for(Int_t i=0;i<kInjPads;i++){ 
    Int_t padStatus=(Int_t)(GetMeanPadStatusCut(i)+0.5);
    for(Int_t ilin=0; ilin<kInjLines ; ilin++) fGoodInj[i][ilin]=(padStatus&1<<ilin)>>ilin;
  }
}
//______________________________________________________________________
TGraphErrors* AliITSOnlineSDDInjectors::GetTimeVsDistGraph(Int_t jpad) const{
  // Builds the graph of drift time vs. drift distance
  const Int_t kPts=kInjLines+1;
  Float_t x[kPts],y[kPts],ex[kPts],ey[kPts];
  x[0]=0.;
  ex[0]=0.;
  y[0]=fTbZero;
  ey[0]=0.;
  for(Int_t i=0;i<kInjLines;i++){
    x[i+1]=fPosition[i];
    ex[i+1]=0.;
    y[i+1]=fCentroid[jpad][i];
    ey[i+1]=fRMSCentroid[jpad][i];
  }
  TGraphErrors *g=new TGraphErrors(4,x,y,ex,ey);
  return g;
}

//______________________________________________________________________
TGraphErrors* AliITSOnlineSDDInjectors::GetDriftSpeedGraph() const{
  // Builds the graph of drift speed vs. anode number
  Int_t ipt=0;
  TGraphErrors *g=new TGraphErrors(0);
  for(Int_t i=0;i<kInjPads;i++){
    if(fDriftSpeed[i]>0){ 
      g->SetPoint(ipt,GetAnodeNumber(i),fDriftSpeed[i]);
      g->SetPointError(ipt,0,fDriftSpeedErr[i]);
      ipt++;
    }
  }
  return g;
}
//______________________________________________________________________
TGraphErrors* AliITSOnlineSDDInjectors::GetSelectedDriftSpeedGraph(Int_t minAcceptStatus) const{
  // TGraphErrors with only pads with status of injector >= minAcceptStatus
  Int_t ipt=0;
  TGraphErrors *g=new TGraphErrors(0);
  for(Int_t i=0;i<kInjPads;i++){
    Int_t padStatus = GetInjPadStatus(i);
    if(fDriftSpeed[i]>0 && padStatus >= minAcceptStatus ){
      g->SetPoint(ipt,GetAnodeNumber(i),fDriftSpeed[i]);
      g->SetPointError(ipt,0,fDriftSpeedErr[i]);
      ipt++;
    }
  }
  return g;
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::CalcTimeBinZero(){
  // Get time zero from trigger signal
  Double_t tzero=0.,intCont=0.,rmsPeak=0.;
  Bool_t isTbUsed[256];
  Int_t nTbUsed=0;
  for(Int_t i=0;i<256;i++) isTbUsed[i]=0;
  for(Int_t ian=0;ian<fgkNAnodes;ian++){
    for(Int_t itb=1;itb<fTbMin[0];itb++){
      Double_t cont=fHisto->GetBinContent(itb,ian+1);
      Double_t contm1=fHisto->GetBinContent(itb+1,ian+1);
      Double_t contp1=fHisto->GetBinContent(itb-1,ian+1);
      if(cont>fLowThreshold[0]){
	if(cont>fHighThreshold[0] &&(contm1>fLowThreshold[0] || contp1>fLowThreshold[0])){
	  tzero+=cont*float(itb);
	  rmsPeak+=cont*float(itb)*float(itb);
	  intCont+=cont;
	  if(!isTbUsed[itb]){
	    isTbUsed[itb]=1;
	    ++nTbUsed;
	  }
	}
      }
    }
  }
  if(intCont>0){ 
    fTbZero=tzero/intCont;
    fRMSTbZero=TMath::Sqrt(rmsPeak/intCont-fTbZero*fTbZero);
  }
  if(nTbUsed==1) fRMSTbZero=0.5; 
}

//______________________________________________________________________
void AliITSOnlineSDDInjectors::FitDriftSpeedVsAnode(){
  // fits the anode dependence of drift speed

  Float_t rangeForMax[2]={78.,178.};
  PolyFit(fPolDegree);
  fActualPolDegree=fPolDegree;
  if(fPolDegree==3){
    Double_t deltasq=fParam[2]*fParam[2]-3*fParam[1]*fParam[3];
    Double_t zero1=-999.;
    Double_t zero2=-999.;
    if(deltasq>=0. && TMath::Abs(fParam[3])>0.){
      Double_t delta=TMath::Sqrt(deltasq);
      zero1=(-fParam[2]+delta)/3./fParam[3];
      zero2=(-fParam[2]-delta)/3./fParam[3];
    }
    Bool_t twoZeroes=kFALSE;
    Bool_t oneZero=kFALSE;
    if(zero1>0. && zero1<256. && zero2>0. && zero2<256.) twoZeroes=kTRUE;
    if(zero1>rangeForMax[0] && zero1<rangeForMax[1]) oneZero=kTRUE;
    if(zero2>rangeForMax[0] && zero2<rangeForMax[1]) oneZero=kTRUE;
    if(!oneZero || twoZeroes){
      PolyFit(2);
      Double_t xmax=-999.;
      if(fParam[2]<0.) xmax=-fParam[1]/2./fParam[2];
      if(xmax>rangeForMax[0] && xmax<rangeForMax[1]){
	fActualPolDegree=2;
      }else{
	Double_t averSpeed=0.;
	Double_t sumWei=0.;
	Int_t nUsedPts=0;
	for(Int_t jpad=fFirstPadForFit; jpad<=fLastPadForFit; jpad++){
	  if(fDriftSpeed[jpad]>0 && GetInjPadStatus(jpad)>fPadStatusCutForFit){
	    Double_t wei=1./fDriftSpeedErr[jpad]/fDriftSpeedErr[jpad];
	    averSpeed+=wei*fDriftSpeed[jpad];
	    sumWei+=wei;
	    nUsedPts++;
	  }
	}
	if(sumWei>0.) averSpeed/=sumWei;
	if(nUsedPts<fPolDegree+1) averSpeed=0;
	fParam[0]=averSpeed;
	for(Int_t i=1; i < fPolDegree+1; i++) fParam[i]=0.;
	fActualPolDegree=0;
      }
    }
  }
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::PolyFit(Int_t degree){
  // fits the anode dependence of drift speed with a polynomial function
  const Int_t kNn=degree+1;
  const Int_t kDimens=fPolDegree+1;

  Double_t **mat = new Double_t*[kNn];
  for(Int_t i=0; i < kNn; i++) mat[i] = new Double_t[kNn];
  Double_t *vect = new Double_t[kNn];

  for(Int_t k1=0;k1<kNn;k1++){
    vect[k1]=0;
    for(Int_t k2=0;k2<kNn;k2++){
      mat[k1][k2]=0;
    }
  }
  Int_t npts = 0;
  for(Int_t k1=0;k1<kNn;k1++){
    for(Int_t jpad=fFirstPadForFit; jpad<=fLastPadForFit; jpad++){
      Double_t x=(Double_t)GetAnodeNumber(jpad);
      if(fDriftSpeed[jpad]>0 && GetInjPadStatus(jpad)>fPadStatusCutForFit){
	vect[k1]+=fDriftSpeed[jpad]*TMath::Power(x,k1)/TMath::Power(fDriftSpeedErr[jpad],2);	
	if(k1==0) npts++;
	for(Int_t k2=0;k2<kNn;k2++){
	  mat[k1][k2]+=TMath::Power(x,k1+k2)/TMath::Power(fDriftSpeedErr[jpad],2);
	}
      }
    }
  }
  if(npts<fPolDegree+1){ 
    if(fParam) delete [] fParam;
    fParam=new Double_t[kDimens];
    for(Int_t i=0; i<kDimens;i++)fParam[i]=0;
  }else{
    Int_t *iPivot = new Int_t[kNn];
    Int_t *indxR = new Int_t[kNn];
    Int_t *indxC = new Int_t[kNn];
    for(Int_t i=0;i<kNn;i++) iPivot[i]=0;
    Int_t iCol=-1,iRow=-1;
    for(Int_t i=0;i<kNn;i++){
      Double_t big=0.;
      for(Int_t j=0;j<kNn;j++){
	if(iPivot[j]!=1){
	  for(Int_t k=0;k<kNn;k++){
	    if(iPivot[k]==0){
	      if(TMath::Abs(mat[j][k])>=big){
		big=TMath::Abs(mat[j][k]);
		iRow=j;
		iCol=k;
	      }
	    }
	  }
	}
      }
      iPivot[iCol]++;
      Double_t aux;
      if(iRow!=iCol){
	for(Int_t l=0;l<kNn;l++){
	  aux=mat[iRow][l];
	  mat[iRow][l]=mat[iCol][l];
	  mat[iCol][l]=aux;
	}
	aux=vect[iRow];
	vect[iRow]=vect[iCol];
	vect[iCol]=aux;
      }
      indxR[i]=iRow;
      indxC[i]=iCol;
      if(mat[iCol][iCol]==0) break;
      Double_t pivinv=1./mat[iCol][iCol];
      mat[iCol][iCol]=1;
      for(Int_t l=0;l<kNn;l++) mat[iCol][l]*=pivinv;
      vect[iCol]*=pivinv;
      for(Int_t m=0;m<kNn;m++){
	if(m!=iCol){
	  aux=mat[m][iCol];
	  mat[m][iCol]=0;
	  for(Int_t n=0;n<kNn;n++) mat[m][n]-=mat[iCol][n]*aux;
	  vect[m]-=vect[iCol]*aux;
	}
      }    
    }
    delete [] iPivot;
    delete [] indxR;
    delete [] indxC;
    
  
    if(fParam) delete [] fParam;
    fParam=new Double_t[kDimens];
    for(Int_t i=0; i<kNn;i++)fParam[i]=vect[i];
    if(degree<fPolDegree) for(Int_t i=kNn; i<kDimens;i++)fParam[i]=0.;
  }

  for(Int_t i=0; i < kNn; i++) delete [] mat[i];
  delete [] mat;
  delete [] vect;
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::CalcDriftSpeed(Int_t jpad){
  // Computes the drift speed from the fit to the 3 injector lines for each anode
  Double_t sumY=0,sumX=0,sumXX=0,sumYY=0.,sumXY=0,sumWEI=0.;
  Int_t npt=0;
  Double_t y[kInjLines],ey[kInjLines];
  Double_t tzero=0,erry=0;
  for(Int_t i=0;i<kInjLines;i++){ 
    y[i]=fCentroid[jpad][i];
    ey[i]=fRMSCentroid[jpad][i];
  }
  for(Int_t i=0;i<kInjLines;i++){
    if(!fUseLine[i]) continue;
    if(fGoodInj[jpad][i] && ey[i]!=0){
      sumY+=y[i]/ey[i]/ey[i];
      sumX+=fPosition[i]/ey[i]/ey[i];
      sumXX+=fPosition[i]*fPosition[i]/ey[i]/ey[i];
      sumYY+=y[i]*y[i]/ey[i]/ey[i];
      sumXY+=fPosition[i]*y[i]/ey[i]/ey[i];
      sumWEI+=1./ey[i]/ey[i];
      tzero=fTbZero/ey[i]/ey[i];
      erry=ey[i]/ey[i]/ey[i];
      npt++;
    }
  }
  Double_t slope=0.,eslope=0.;
  if(npt==1){
    slope=(sumY-tzero)/sumX;
    eslope=erry/sumX;
  }
  if(npt>1){ 
    if(fUseTimeZeroSignal){
      sumY+=fTbZero/fRMSTbZero/fRMSTbZero;
      sumX+=0.;
      sumXX+=0.;
      sumYY+=fTbZero*fTbZero/fRMSTbZero/fRMSTbZero;
      sumXY+=0.;
      sumWEI+=1./fRMSTbZero/fRMSTbZero;
    }
    slope=(sumWEI*sumXY-sumY*sumX)/(sumWEI*sumXX-sumX*sumX);
    eslope=TMath::Sqrt(sumWEI/(sumWEI*sumXX-sumX*sumX));
  }

  Double_t vel=0,evel=0;
  if(slope!=0. && fTimeStep>0.){
    vel=1./slope*10000./fTimeStep;// micron/ns
    evel=eslope/slope/slope*10000./fTimeStep;// micron/ns
  }
  if(vel>fMaxDriftSpeed||vel<fMinDriftSpeed || evel>fMaxDriftSpeedErr){ 
    vel=0.;
    evel=0.;
  }
  fDriftSpeed[jpad]=vel;
  fDriftSpeedErr[jpad]=evel;
}
//______________________________________________________________________
Int_t AliITSOnlineSDDInjectors::GetAnodeNumber(Int_t iInjPad) const{
  // Injectors location along anodes:
  // Side left  (UP)   - channel 0: injectors on anodes 0,7,15,...,247,255 
  // Side right (DOWN) - channel 1: injectors on anodes 0,8,16,...,248,255 
  Int_t ian=-1;
  if(iInjPad>=kInjPads) return ian;
  if(fSide==1){  // right side
    ian=iInjPad*8;
    if(iInjPad==32) ian--;
  }else{         // left side
    ian=iInjPad*8-1;
    if(iInjPad==0) ian=0;
  }
  return ian;
}
//______________________________________________________________________
Int_t AliITSOnlineSDDInjectors::GetInjPadNumberFromAnode(Int_t nAnode) const{
  // Converts anode number into injector pad index
  Int_t iInjPad=-1;
  if(fSide==1){  // right side
    if(nAnode%8==0) iInjPad=nAnode/8;
    if(nAnode==255) iInjPad=32;
  }else{         // left side
    if(nAnode%8==7) iInjPad=1+nAnode/8;
    if(nAnode==0) iInjPad=0;
  }
  if(nAnode>=256) iInjPad=-1;
  return iInjPad;
}
//______________________________________________________________________
Int_t AliITSOnlineSDDInjectors::GetInjPadStatus(Int_t jpad) const{
  // returns an integer value with status of injector lines for given pad/anode
  // status=7  -->  111  all injector are good
  // status=6  -->  110  1st line (close to anodes) is bad, other two are good
  // ....
  // status=1  -->  001  only 1st line (close to anodes) good
  // status=0  -->  000  all lines are bad
  Int_t istatus=0;
  if(jpad>=0 && jpad<kInjPads){
    for(Int_t jlin=0;jlin<kInjLines;jlin++) istatus+=fGoodInj[jpad][jlin]<<jlin;
  }
  return istatus;
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::FindGoodInjectors(){
  // Mark good injector pads
  // good = 1 cell above high threshold + 1 neighbour above low threshold
  for(Int_t jpad=0;jpad<kInjPads;jpad++){
    Int_t ian=GetAnodeNumber(jpad);
    Int_t countAbove=0;
    for(Int_t jjj=0; jjj<fHisto->GetNbinsX(); jjj++){
      Float_t c=fHisto->GetBinContent(jjj+1,ian+1);
      if(c>0.5) countAbove++;
    }
    if(countAbove>fMaxCellsAboveThreshold){
      for(Int_t jlin=0;jlin<kInjLines;jlin++) fGoodInj[jpad][jlin]=0;           
    }else{
      for(Int_t jlin=0;jlin<kInjLines;jlin++){
	for(Int_t jjj=fTbMin[jlin];jjj<fTbMax[jlin];jjj++){
	  Float_t c1=fHisto->GetBinContent(jjj,ian+1);
	  Float_t c2=fHisto->GetBinContent(jjj+1,ian+1);
	  //	Float_t c3=fHisto->GetBinContent(jjj+2,ian+1);
	  if(c1>fLowThreshold[jlin] && c2>fLowThreshold[jlin]){ 
	    if(c1>fHighThreshold[jlin] || c2>fHighThreshold[jlin]){
	      fGoodInj[jpad][jlin]=1;
	      break;
	    }
	  }
	}
      }
    }
  }
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::FindCentroids(){
  // Computes the centroids (weighted mean) of teh injector pads
  for(Int_t jpad=0;jpad<kInjPads;jpad++){
    Int_t ian=GetAnodeNumber(jpad);
    for(Int_t jlin=0;jlin<kInjLines;jlin++){
      if(!fGoodInj[jpad][jlin]) continue;
      Double_t maxcont=0;
      Int_t ilmax=-1;
      for(Int_t jjj=fTbMin[jlin];jjj<fTbMax[jlin];jjj++){
	Double_t cont=fHisto->GetBinContent(jjj,ian+1);
	if(cont>maxcont){
	  maxcont=cont;
	  ilmax=jjj;
	}
      }
      Double_t intCont=0;
      Int_t jjj=ilmax;
      while(1){
	Double_t cont=fHisto->GetBinContent(jjj,ian+1);
	if(cont<fLowThreshold[jlin]) break;
	if(cont<fgkSaturation){
	  fCentroid[jpad][jlin]+=cont*(Double_t)jjj;
	  fRMSCentroid[jpad][jlin]+=cont*(Double_t)jjj*(Double_t)jjj;
	  intCont+=cont;
	}
	jjj--;
      }
      jjj=ilmax+1;
      while(1){
	Double_t cont=fHisto->GetBinContent(jjj,ian+1);
	if(cont<fLowThreshold[jlin]) break;
	if(cont<fgkSaturation){
	  fCentroid[jpad][jlin]+=cont*float(jjj);
	  fRMSCentroid[jpad][jlin]+=cont*(Double_t)jjj*(Double_t)jjj;
	  intCont+=cont;
	}
	jjj++;
      }
      if(intCont>0){ 
	fCentroid[jpad][jlin]/=intCont;
	fRMSCentroid[jpad][jlin]=TMath::Sqrt(fRMSCentroid[jpad][jlin]/intCont-fCentroid[jpad][jlin]*fCentroid[jpad][jlin])/TMath::Sqrt(intCont);
      }
      else{ 
	fCentroid[jpad][jlin]=0.;
	fRMSCentroid[jpad][jlin]=0.;
	fGoodInj[jpad][jlin]=0;
      }
      if(fRMSCentroid[jpad][jlin]==0) fGoodInj[jpad][jlin]=0;
    }
  }
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::PrintInjectorStatus(){
  // Dumps the status bit of injector pads
  for(Int_t jpad=0;jpad<kInjPads;jpad++){
    printf("Line%d-Anode%d: %d %d %d\n",jpad,GetAnodeNumber(jpad),fGoodInj[jpad][0],fGoodInj[jpad][1],fGoodInj[jpad][2]);
  }
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::PrintCentroids(){
  // Dumps the drift time centroids of injector pads
  for(Int_t jpad=0;jpad<kInjPads;jpad++){
    printf("Line%d-Anode%d: %f+-%f %f+-%f %f+-%f\n",jpad,GetAnodeNumber(jpad),fCentroid[jpad][0],fRMSCentroid[jpad][0],fCentroid[jpad][1],fRMSCentroid[jpad][1],fCentroid[jpad][2],fRMSCentroid[jpad][2]);
  }
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::WriteToASCII(Int_t evNumb, UInt_t timeStamp, Int_t optAppend){
  // writes drift speed vs. anode fit parameters into an ASCII file 
  // to be sent to FXS by the DA and processed by the SHUTTLE

  TString outfilnam;
  outfilnam.Form("SDDinj_ddl%02dc%02d_sid%d.data",fDDL,fCarlos,fSide);  
  FILE* outf;
  if(optAppend==0){ 
    outf=fopen(outfilnam.Data(),"w");
    fprintf(outf,"%d\n",fActualPolDegree);
  }
  else outf=fopen(outfilnam.Data(),"a");
  fprintf(outf,"%d   %d   ",evNumb,timeStamp);
  for(Int_t ic=0;ic<fPolDegree+1;ic++){
    fprintf(outf,"%G ",fParam[ic]);
  }
  fprintf(outf,"\n");
  fclose(outf);  
}
//______________________________________________________________________
TH1F* AliITSOnlineSDDInjectors::GetMeanDriftSpeedVsPadHisto() const{
  // Builds histogram of average drift speed vs. pad number
  TString hisnam;
  hisnam.Form("hdrsp%02dc%02ds%d",fDDL,fCarlos,fSide);
  TH1F* h=new TH1F(hisnam.Data(),"",kInjPads,-0.5,kInjPads-0.5);
  if(fNEvents>0){
    for(Int_t i=0;i<kInjPads;i++){ 
      h->SetBinContent(i+1,GetMeanDriftSpeed(i));    
      Double_t rms=GetRMSDriftSpeed(i);
      Double_t err=0.;
      if(rms>0.) err=rms/TMath::Sqrt(fNEventsInPad[i]);
      h->SetBinError(i+1,err);
    }
  }
  return h;
}
//______________________________________________________________________
Bool_t AliITSOnlineSDDInjectors::WriteToROOT(TFile *fil) const {
  // Writes the output histograms into a root file
  if(fil==0){ 
    AliWarning("Invalid pointer to ROOT file");
    return kFALSE;    
  }  
  TString hisnam;
  fil->cd();
  hisnam.Form("hdrsp%02dc%02ds%d",fDDL,fCarlos,fSide);
  TH1F hdsp(hisnam.Data(),"",kInjPads,-0.5,kInjPads-0.5);
  if(fNEvents==0){
    AliWarning("Zero analyzed events");
    return kFALSE;    
  }  
    
  for(Int_t i=0;i<kInjPads;i++){ 
    hdsp.SetBinContent(i+1,GetMeanDriftSpeed(i));    
    Double_t rms=GetRMSDriftSpeed(i);
    Double_t err=0.;
    if(rms>0.) err=rms/TMath::Sqrt(fNEventsInPad[i]);
    hdsp.SetBinError(i+1,err);
  }
  hdsp.Write();
  return kTRUE;    
}
//______________________________________________________________________
void AliITSOnlineSDDInjectors::WriteInjectorStatusToASCII(){
  // dump status of injectors encoded into UInt_t
  // 5 bits (value 0-31) to store number of pads with given status
  TString outfilnam;
  outfilnam.Form("SDDinj_ddl%02dc%02d_sid%d.data",fDDL,fCarlos,fSide);  
  FILE* outf=fopen(outfilnam.Data(),"a");
  Int_t n[8]={0,0,0,0,0,0,0,0};
  for(Int_t jpad=fFirstPadForFit; jpad<=fLastPadForFit; jpad++){
    Int_t statusPad=GetInjPadStatus(jpad);
    ++n[statusPad];
  }
  UInt_t statusInj=0;
  statusInj+=(n[7]&0x1F)<<25; // bits 25-29: n. of pads with status 7
  statusInj+=(n[6]&0x1F)<<20; // bits 20-24: n. of pads with status 6
  statusInj+=(n[5]&0x1F)<<15; // bits 15-19: n. of pads with status 5
  statusInj+=(n[4]&0x1F)<<10; // bits 10-14: n. of pads with status 4
  statusInj+=(n[3]&0x1F)<<5;  // bits  5- 9: n. of pads with status 3
  statusInj+=(n[2]&0x1F);     // bits  0- 4: n. of pads with status 2

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