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

////////////////////////////////////////////////////////////
// Author: Henrik Tydesjo                                 //
// This class is used in the detector algorithm framework //
// to process the data stored in special container files  //
// (see AliITSOnlineSPDphys).                             //
////////////////////////////////////////////////////////////

#include "AliITSOnlineSPDphysAnalyzer.h"
#include "AliITSOnlineSPDphys.h"
#include "AliITSOnlineCalibrationSPDhandler.h"
#include "AliITSRawStreamSPD.h"
#include "AliITSIntMap.h"
#include <TStyle.h>
#include <TMath.h>
#include <TF1.h>
#include <TGraph.h>
#include <TH2F.h>
#include <TError.h>
#include <iostream>
#include <fstream>

using std::ifstream;

AliITSOnlineSPDphysAnalyzer::AliITSOnlineSPDphysAnalyzer(const Char_t *fileName, AliITSOnlineCalibrationSPDhandler* handler, Bool_t readFromGridFile) :
  fFileName(fileName),fPhysObj(NULL),fHandler(handler),
  fNrEnoughStatChips(0),fNrDeadChips(0),fNrInefficientChips(0),
  fNrEqHits(0),fbDeadProcessed(kFALSE),
  fThreshNoisy(1e-9),fThreshDead(1e-9),
  fMinEventsForNoisy(10000),fMinEventsForDead(10000),
  fDefinitelyNoisyRatio(0.3),
  fMinNrEqHitsForDeadChips(60000),fRatioToMeanForInefficientChip(0.1)
{
  // constructor  
  Init(readFromGridFile);
}

AliITSOnlineSPDphysAnalyzer::AliITSOnlineSPDphysAnalyzer(AliITSOnlineSPDphys* physObj, AliITSOnlineCalibrationSPDhandler* handler) :
  fFileName("test.root"),fPhysObj(NULL),fHandler(handler),
  fNrEnoughStatChips(0),fNrDeadChips(0),fNrInefficientChips(0),
  fNrEqHits(0),fbDeadProcessed(kFALSE),
  fThreshNoisy(1e-9),fThreshDead(1e-9),
  fMinEventsForNoisy(10000),fMinEventsForDead(10000),
  fDefinitelyNoisyRatio(0.3),
  fMinNrEqHitsForDeadChips(60000),fRatioToMeanForInefficientChip(0.1)
{
  // alt constructor
  fPhysObj = physObj;
}

AliITSOnlineSPDphysAnalyzer::AliITSOnlineSPDphysAnalyzer(const AliITSOnlineSPDphysAnalyzer& handle) :
  fFileName("test.root"),fPhysObj(NULL),fHandler(NULL),
  fNrEnoughStatChips(0),fNrDeadChips(0),fNrInefficientChips(0),
  fNrEqHits(0),fbDeadProcessed(kFALSE),
  fThreshNoisy(1e-9),fThreshDead(1e-9),
  fMinEventsForNoisy(10000),fMinEventsForDead(10000),
  fDefinitelyNoisyRatio(0.3),
  fMinNrEqHitsForDeadChips(60000),fRatioToMeanForInefficientChip(0.1)
{
  // copy constructor, only copies the filename and params (not the processed data)
  fFileName=handle.fFileName;
  fThreshNoisy = handle.fThreshNoisy;
  fThreshDead = handle.fThreshDead;
  fMinEventsForNoisy = handle.fMinEventsForNoisy;
  fMinEventsForDead = handle.fMinEventsForDead;
  fDefinitelyNoisyRatio = handle.fDefinitelyNoisyRatio;
  fMinNrEqHitsForDeadChips = handle.fMinNrEqHitsForDeadChips;
  fRatioToMeanForInefficientChip = handle.fRatioToMeanForInefficientChip;

  Init();
}

AliITSOnlineSPDphysAnalyzer::~AliITSOnlineSPDphysAnalyzer() {
  // destructor
  if (fPhysObj!=NULL) delete fPhysObj;
}

AliITSOnlineSPDphysAnalyzer& AliITSOnlineSPDphysAnalyzer::operator=(const AliITSOnlineSPDphysAnalyzer& handle) {
  // assignment operator, only copies the filename and params (not the processed data)
  if (this!=&handle) {
    if (fPhysObj!=NULL) delete fPhysObj;
    
    fFileName=handle.fFileName;
    fThreshNoisy = handle.fThreshNoisy;
    fThreshDead = handle.fThreshDead;
    fMinEventsForNoisy = handle.fMinEventsForNoisy;
    fMinEventsForDead = handle.fMinEventsForDead;
    fDefinitelyNoisyRatio = handle.fDefinitelyNoisyRatio;
    fMinNrEqHitsForDeadChips = handle.fMinNrEqHitsForDeadChips;
    fRatioToMeanForInefficientChip = handle.fRatioToMeanForInefficientChip;

    fPhysObj = NULL;
    fHandler = NULL;
    fNrEnoughStatChips = 0;
    fNrDeadChips = 0;
    fNrInefficientChips = 0;
    fNrEqHits = 0;
    fbDeadProcessed = kFALSE;

    Init();    
  }
  return *this;
}

void AliITSOnlineSPDphysAnalyzer::Init(Bool_t readFromGridFile) {
  // initialize container obj
  if (!readFromGridFile) {
    FILE* fp0 = fopen(fFileName.Data(), "r");
    if (fp0 == NULL) {
      return;
    }
    else {
      fclose(fp0);
    }
  }
  fPhysObj = new AliITSOnlineSPDphys(fFileName.Data(), readFromGridFile);
}

void AliITSOnlineSPDphysAnalyzer::SetParam(const Char_t *pname, const Char_t *pval) {
  // set a parameter
  TString name = pname;
  TString val = pval;
  //  printf("Setting Param %s  to %s\n",name.Data(),val.Data());
  if (name.CompareTo("MistakeProbabilityNoisy")==0) {
    Double_t mistakeProbabilityNoisy = val.Atof();
    fThreshNoisy = mistakeProbabilityNoisy/(20*6*10*32*256);
  }
  else if (name.CompareTo("MistakeProbabilityDead")==0) {
    Double_t mistakeProbabilityDead = val.Atof();
    fThreshDead = mistakeProbabilityDead/(20*6*10*32*256);
  }
  else if (name.CompareTo("fMinEventsForNoisy")==0) {
    fMinEventsForNoisy = val.Atoi();
  }
  else if (name.CompareTo("fMinEventsForDead")==0) {
    fMinEventsForDead = val.Atoi();
  }
  else if (name.CompareTo("fDefinitelyNoisyRatio")==0) {
    fDefinitelyNoisyRatio = val.Atof();
  }
  else if (name.CompareTo("fMinNrEqHitsForDeadChips")==0) {
    fMinNrEqHitsForDeadChips = val.Atof();
  }
  else if (name.CompareTo("fRatioToMeanForInefficientChip")==0) {
    fRatioToMeanForInefficientChip = val.Atof();
  }
  else {
    Error("AliITSOnlineSPDphysAnalyzer::SetParam","Parameter %s in configuration file unknown.",name.Data());
  }
}

void AliITSOnlineSPDphysAnalyzer::ReadParamsFromLocation(const Char_t *dirName) {
  // opens file (default name) in dir dirName and reads parameters from it
  TString paramsFileName = Form("%s/physics_params.txt",dirName);
  ifstream paramsFile;
  paramsFile.open(paramsFileName, ifstream::in);
  if (paramsFile.fail()) {
    printf("No config file (%s) present. Using default tuning parameters.\n",paramsFileName.Data());
  }
  else {
    while(1) {
      Char_t paramN[50];
      Char_t paramV[50];
      paramsFile >> paramN;
      if (paramsFile.eof()) break;
      paramsFile >> paramV;
      SetParam(paramN,paramV);
      if (paramsFile.eof()) break;
    }
    paramsFile.close();
  }
}


UInt_t AliITSOnlineSPDphysAnalyzer::ProcessNoisyPixels() {
  // process noisy pixel data , returns number of chips with enough statistics
  if (fPhysObj==NULL) {
    Warning("AliITSOnlineSPDphysAnalyzer::ProcessNoisyPixels","No data!");
    return 0;
  }
  // do we have enough events to even try the algorithm?
  if (GetNrEvents() < fMinEventsForNoisy) {
    Warning("AliITSOnlineSPDphysAnalyzer::ProcessNoisyPixels","Nr events (%d) < fMinEventsForNoisy (%d)!",GetNrEvents(),fMinEventsForNoisy);
    return 0;
  }
  // handler should be initialized
  if (fHandler==NULL) {
    Error("AliITSOnlineSPDphysAnalyzer::ProcessNoisyPixels","Calibration handler is not initialized!");
    return 0;
  }
  
  UInt_t nrEnoughStatChips = 0;

  for (UInt_t hs=0; hs<6; hs++) {
    for (UInt_t chip=0; chip<10; chip++) {

      UInt_t nrPixels = 0;
      UInt_t nrChipHits = 0;
      UInt_t nrMostHits = 0;
      for (UInt_t col=0; col<32; col++) {
	for (UInt_t row=0; row<256; row++) {
	  UInt_t nrHits = fPhysObj->GetHits(hs,chip,col,row);
	  nrChipHits += nrHits;
	  //	  if (nrHits>0) nrPixels++; // don't include pixels that might be dead
	  nrPixels++;
	  if (nrHits>fDefinitelyNoisyRatio*GetNrEvents()) {
	    fHandler->SetNoisyPixel(GetEqNr(),hs,chip,col,row);
	    nrPixels--;
	    nrChipHits-=nrHits;
	  }
	  else {
	    if (nrMostHits<nrHits) nrMostHits=nrHits;
	  }
	}
      }

      if (nrChipHits>0) { // otherwise there are for sure no noisy
	// Binomial with n events and probability p for pixel hit
	UInt_t n = GetNrEvents();
	if (nrPixels>0 && n>0) {

	  Double_t p = (Double_t)nrChipHits/nrPixels/n;

	  // Bin(n,k=0):
	  Double_t bin = pow((Double_t)(1-p),(Double_t)n);
	  // Bin(n,k)
	  UInt_t k=1;
	  while ((bin>fThreshNoisy || k<n*p) && k<=n) {
	    k++;
	    bin = bin*(n-k+1)/k*p/(1-p);
	  }
	  
	  // can we find noisy pixels...?
	  if (k<=n) {
	    //	    printf("eq %d , hs %d , chip %d : Noisy level = %d\n",GetEqNr(),hs,chip,k);
	    nrEnoughStatChips++;
	    // add noisy pixels to handler
	    UInt_t noiseLimit=k;
	    if (nrMostHits>=noiseLimit) {
	      for (UInt_t col=0; col<32; col++) {
		for (UInt_t row=0; row<256; row++) {
		  UInt_t nrHits = fPhysObj->GetHits(hs,chip,col,row);
		  if (nrHits >= noiseLimit) {
		    fHandler->SetNoisyPixel(GetEqNr(),hs,chip,col,row);
		  }
		}
	      }
	    }
	  }
	}

      }

    } // for chip
  } // for hs

  return nrEnoughStatChips;
}

UInt_t AliITSOnlineSPDphysAnalyzer::ProcessNoisyPixels(UInt_t eq, UInt_t nrEvts) {
  // process noisy pixel data , returns number of chips with enough statistics
  if (fPhysObj==NULL) {
    Warning("AliITSOnlineSPDphysAnalyzer::ProcessNoisyPixels","No data!");
    return 0;
  }
  // do we have enough events to even try the algorithm?
  if (nrEvts < fMinEventsForNoisy) {
    Warning("AliITSOnlineSPDphysAnalyzer::ProcessNoisyPixels","Nr events (%d) < fMinEventsForNoisy (%d)!",nrEvts,fMinEventsForNoisy);
    return 0;
  }
  // handler should be initialized
  if (fHandler==NULL) {
    Error("AliITSOnlineSPDphysAnalyzer::ProcessNoisyPixels","Calibration handler is not initialized!");
    return 0;
  }
  
  UInt_t nrEnoughStatChips = 0;

  for (UInt_t hs=0; hs<6; hs++) {
    for (UInt_t chip=0; chip<10; chip++) {

      UInt_t nrPixels = 0;
      UInt_t nrChipHits = 0;
      UInt_t nrMostHits = 0;
      for (UInt_t col=0; col<32; col++) {
	for (UInt_t row=0; row<256; row++) {
	  UInt_t nrHits = fPhysObj->GetHits(hs,chip,col,row);
	  nrChipHits += nrHits;
	  //	  if (nrHits>0) nrPixels++; // don't include pixels that might be dead
	  nrPixels++;
	  if (nrHits>fDefinitelyNoisyRatio*nrEvts) {
	    fHandler->SetNoisyPixel(eq,hs,chip,col,row);
	    nrPixels--;
	    nrChipHits-=nrHits;
	  }
	  else {
	    if (nrMostHits<nrHits) nrMostHits=nrHits;
	  }
	}
      }

      if (nrChipHits>0) { // otherwise there are for sure no noisy
	// Binomial with n events and probability p for pixel hit
	UInt_t n = nrEvts;
	if (nrPixels>0 && n>0) {

	  Double_t p = (Double_t)nrChipHits/nrPixels/n;

	  // Bin(n,k=0):
	  Double_t bin = pow((Double_t)(1-p),(Double_t)n);
	  // Bin(n,k)
	  UInt_t k=1;
	  while ((bin>fThreshNoisy || k<n*p) && k<=n) {
	    k++;
	    bin = bin*(n-k+1)/k*p/(1-p);
	  }
	  
	  // can we find noisy pixels...?
	  if (k<=n) {
	    //	    printf("eq %d , hs %d , chip %d : Noisy level = %d\n",GetEqNr(),hs,chip,k);
	    nrEnoughStatChips++;
	    // add noisy pixels to handler
	    UInt_t noiseLimit=k;
	    if (nrMostHits>=noiseLimit) {
	      for (UInt_t col=0; col<32; col++) {
		for (UInt_t row=0; row<256; row++) {
		  UInt_t nrHits = fPhysObj->GetHits(hs,chip,col,row);
		  if (nrHits >= noiseLimit) {
		    fHandler->SetNoisyPixel(eq,hs,chip,col,row);
		  }
		}
	      }
	    }
	  }
	}

      }

    } // for chip
  } // for hs

  return nrEnoughStatChips;
}


UInt_t AliITSOnlineSPDphysAnalyzer::ProcessDeadPixels() {
  // process dead pixel data , returns number of chips with enough statistics
  if (fPhysObj==NULL) {
    Warning("AliITSOnlineSPDphysAnalyzer::ProcessDeadPixels","No data!");
    return 0;
  }

  // do we have enough events to even try the algorithm?
  if (GetNrEvents() < fMinEventsForDead) {
    Warning("AliITSOnlineSPDphysAnalyzer::ProcessDeadPixels","Nr events (%d) < fMinEventsForDead (%d)!",GetNrEvents(),fMinEventsForDead);
    return 0;
  }
  // handler should be initialized
  if (fHandler==NULL) {
    Error("AliITSOnlineSPDphysAnalyzer::ProcessDeadPixels","Calibration handler is not initialized!");
    return 0;
  }

  AliITSIntMap* possiblyDead  = new AliITSIntMap();
  AliITSIntMap* possiblyIneff = new AliITSIntMap();

  fNrEnoughStatChips = 0;
  fNrDeadChips = 0;
  fNrInefficientChips = 0;
  UInt_t nrPossiblyDeadChips = 0;
  fNrEqHits = 0;


  for (UInt_t hs=0; hs<6; hs++) {
    if (!fHandler->IsActiveHS(GetEqNr(),hs)) {
      fNrDeadChips+=10;
    }
    else {
      for (UInt_t chip=0; chip<10; chip++) {
	if (!fHandler->IsActiveChip(GetEqNr(),hs,chip)) {
	  fNrDeadChips++;
	}
	else {
	  // perform search for individual dead pixels...
	  Bool_t good=kFALSE;

	  UInt_t nrPossiblyDeadPixels = 0;
	  UInt_t nrPixels = 0;
	  UInt_t nrChipHits = 0;
	  for (UInt_t col=0; col<32; col++) {
	    for (UInt_t row=0; row<256; row++) {
	      UInt_t nrHits = fPhysObj->GetHits(hs,chip,col,row);
	      nrChipHits += nrHits;
	      if (!fHandler->IsPixelNoisy(GetEqNr(),hs,chip,col,row)) {
		// don't include noisy pixels
		nrPixels++;
		if (nrHits==0) {
		  nrPossiblyDeadPixels++;
		}
		else {
		  fHandler->UnSetDeadPixel(GetEqNr(),hs,chip,col,row); // unset (no action unless dead before)
		}
	      }
	      else {
		nrChipHits -= nrHits; // this is needed when running offline (online nrHits should be 0 already)
	      }
	    }
	  }
	  fNrEqHits+=nrChipHits;

	  if (nrChipHits>0) {
	    // make sure the chip is not flagged as dead
	    fHandler->SetDeadChip(GetEqNr(),hs,chip,kFALSE);
	  }

	  if (nrPossiblyDeadPixels==0) {
	    // no need to see if we have enough statistics...
	    fNrEnoughStatChips++;
	    good=kTRUE;
	    //	printf("%3d",good);
	    //	if (chip==9) printf("\n");
	    continue;
	  }

	  if (nrChipHits==0) {
	    nrPossiblyDeadChips++;
	    possiblyDead->Insert(hs,chip);
	    good=kFALSE;
	    //	printf("%3d",good);
	    //	if (chip==9) printf("\n");
	    continue;
	  }

	  // Binomial with n events and probability p for pixel hit
	  UInt_t n = GetNrEvents();
	  if (nrPixels>0 && n>0) {

	    Double_t p = (Double_t)nrChipHits/nrPixels/n;

	    // probability of falsely assigning a dead pixel
	    Double_t falselyDeadProb = pow((Double_t)(1-p),(Double_t)n);
	    //	    printf("falselyprob=%e\n",falselyDeadProb);

	    // can we find dead pixels...?
	    if (falselyDeadProb<fThreshDead) {
	      fNrEnoughStatChips++;
	      good=kTRUE;
	      // add dead pixels to handler
	      for (UInt_t col=0; col<32; col++) {
		for (UInt_t row=0; row<256; row++) {
		  UInt_t nrHits = fPhysObj->GetHits(hs,chip,col,row);
		  if (nrHits==0) {
		    if (!fHandler->IsPixelNoisy(GetEqNr(),hs,chip,col,row)) {
		      // don't include noisy pixels
		      fHandler->SetDeadPixel(GetEqNr(),hs,chip,col,row);
		    }
		  }
		}
	      }
	    }
	    if (!good) {
	      // this might be an inefficient chip
	      possiblyIneff->Insert(hs*10+chip,nrChipHits);
	    }

	  }
	  else {
	    if (n>0) {
	      // this is a completely noisy chip... put in category enough stat
	      fNrEnoughStatChips++;
	      good=kTRUE;
	    }
	  }

	  //      printf("%3d",good);
	  //      if (chip==9) printf("\n");

	}
      } // for chip
    }
  } // for hs
 

  Int_t key,val;

  // dead chips?
  if (fNrEqHits>fMinNrEqHitsForDeadChips) {
    while (possiblyDead->Pop(key,val)) {
      fHandler->SetDeadChip(GetEqNr(),key,val,kFALSE);
    }
    fNrDeadChips+=nrPossiblyDeadChips;
  }
  delete possiblyDead;

  // inefficient chips?
  while (possiblyIneff->Pop(key,val)) {
    if (val<fNrEqHits/60*fRatioToMeanForInefficientChip) {
      fNrInefficientChips++;
    }
  }
  delete possiblyIneff;


  fbDeadProcessed = kTRUE;

  return fNrEnoughStatChips;
}


UInt_t AliITSOnlineSPDphysAnalyzer::GetNrEnoughStatChips() {
  // returns nr of enough stat chips
  if (!fbDeadProcessed) ProcessDeadPixels();
  return fNrEnoughStatChips;
}
UInt_t AliITSOnlineSPDphysAnalyzer::GetNrDeadChips() {
  // returns nr of dead chips
  if (!fbDeadProcessed) ProcessDeadPixels();
  return fNrDeadChips;
}
UInt_t AliITSOnlineSPDphysAnalyzer::GetNrInefficientChips() {
  // returns nr of inefficient chips
  if (!fbDeadProcessed) ProcessDeadPixels();
  return fNrInefficientChips;
}
UInt_t AliITSOnlineSPDphysAnalyzer::GetNrNeedsMoreStatChips() {
  // returns nr of needs more stat chips
  if (!fbDeadProcessed) ProcessDeadPixels();
  return 60-fNrEnoughStatChips-fNrDeadChips-fNrInefficientChips;
}

UInt_t AliITSOnlineSPDphysAnalyzer::GetEqNr() const {
  // returns the eq nr of phys obj
  if (fPhysObj!=NULL) return fPhysObj->GetEqNr(); 
  else return 999;
}

UInt_t AliITSOnlineSPDphysAnalyzer::GetNrEvents() const {
  // returns the nr of events of phys obj
  if (fPhysObj!=NULL) return fPhysObj->GetNrEvents(); 
  else return 0;
}

void AliITSOnlineSPDphysAnalyzer::Exponent(Double_t &val, Int_t &valExp) const {
  // put double in format with val and exp so that 1<val<10 - The actual value is val*10e(valExp)
  while (val>10) {
    val/=10;
    valExp++;
  }
  while (val<1) {
    val*=10;
    valExp--;
  }
}
//____________________________________________________________________________________________________
TH2F* AliITSOnlineSPDphysAnalyzer::GetPhysicalHitMapTot() {
  // creates and returns a pointer to a hitmap histo (equipment opened up)
  // physical representation of the half stave hitmap.

  if (fPhysObj==NULL) {
    Error("AliITSOnlineSPDphysAnalyzer::GetPhysicalHitMapTot","No data!");
    return NULL;
  }
  TString histoname = Form("Eq %d",GetEqNr());
  TH2F* hPhysicalHitMapTot = new TH2F(histoname.Data(),histoname.Data(),32*10,-0.5,32*10-0.5,256*6,-0.5,256*6-0.5);
  hPhysicalHitMapTot->SetNdivisions(-10,"X");
  hPhysicalHitMapTot->SetNdivisions(-006,"Y");
  hPhysicalHitMapTot->SetTickLength(0,"X");
  hPhysicalHitMapTot->SetTickLength(0,"Y");
  hPhysicalHitMapTot->GetXaxis()->SetLabelColor(gStyle->GetCanvasColor());
  hPhysicalHitMapTot->GetYaxis()->SetLabelColor(gStyle->GetCanvasColor());
  Int_t correctChip=-1;
  for (UInt_t hs=0; hs<6; hs++) {
    for (UInt_t chipNr=0; chipNr<10; chipNr++) {
      if(GetEqNr()<10) correctChip=9-chipNr;
      else correctChip=chipNr;
      for (UInt_t col=0; col<32; col++) {
        for (UInt_t row=0; row<256; row++) {
          if(hs>1) hPhysicalHitMapTot->Fill(correctChip*32+(31-col),(5-hs)*256+row,fPhysObj->GetHits(hs,chipNr,col,row));
          else hPhysicalHitMapTot->Fill(correctChip*32+col,(5-hs)*256+row,fPhysObj->GetHits(hs,chipNr,col,row));
        }
      }
    }
  }
  return hPhysicalHitMapTot;
}
//_____________________________________________________________________________________________________
TH2F* AliITSOnlineSPDphysAnalyzer::GetHitMapTot() {
  // creates and returns a pointer to a hitmap histo (half sector style a la spdmood)
  // This histogram  shown the read out numbering pattern, it is not the physical one.
  if (fPhysObj==NULL) {
    Error("AliITSOnlineSPDphysAnalyzer::GetHitMapTot","No data!");
    return NULL;
  }
  TString histoname = Form("Eq %d",GetEqNr());
  TH2F* fHitMapTot = new TH2F(histoname.Data(),histoname.Data(),32*10,-0.5,32*10-0.5,256*6,-0.5,256*6-0.5);
  fHitMapTot->SetNdivisions(-10,"X");
  fHitMapTot->SetNdivisions(-006,"Y");
  fHitMapTot->SetTickLength(0,"X");
  fHitMapTot->SetTickLength(0,"Y");
  fHitMapTot->GetXaxis()->SetLabelColor(gStyle->GetCanvasColor());
  fHitMapTot->GetYaxis()->SetLabelColor(gStyle->GetCanvasColor());
  for (UInt_t hs=0; hs<6; hs++) {
    for (UInt_t chipNr=0; chipNr<10; chipNr++) {
      for (UInt_t col=0; col<32; col++) {
	for (UInt_t row=0; row<256; row++) {
	  fHitMapTot->Fill(chipNr*32+col,(5-hs)*256+row,fPhysObj->GetHits(hs,chipNr,col,row));
	}
      }
    }
  }
  return fHitMapTot;
}
//________________________________________________________________________________________________________
TH2F* AliITSOnlineSPDphysAnalyzer::GetHitMapChip(UInt_t hs, UInt_t chip) {
  // creates and returns a pointer to a hitmap histo (chip style a la spdmood)
  if (fPhysObj==NULL) {
    Error("AliITSOnlineSPDphysAnalyzer::GetHitMapChip","No data!");
    return NULL;
  }

  TString histoName;
  TString histoTitle;
  histoName = Form("fChipHisto_%d_%d_%d", GetEqNr(), hs, chip);
  histoTitle = Form("Eq ID %d, Half Stave %d, Chip %d", GetEqNr(), hs, chip);

  TH2F *returnHisto = new TH2F(histoName.Data(), histoTitle.Data(), 32, -0.5, 31.5, 256, -0.5, 255.5);
  returnHisto->SetMinimum(0);
  for (UInt_t col=0; col<32; col++) {
    for (UInt_t row=0; row<256; row++) {
      if(hs<2) returnHisto->Fill(31-col,row,fPhysObj->GetHits(hs,chip,col,row));
      else returnHisto->Fill(col,row,fPhysObj->GetHits(hs,chip,col,row));
    }
  }

  return returnHisto;
}

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