ROOT logo
////////////////////////////////////////////////////////////
// Author: Henrik Tydesjo                                 //
// Interface class to the containers of an online scan.   //
// Directly connected to a TFile with all containers.     //
// Handles reading and writing of this TFile.             //
// Hitmaps and information on nr of events with hits      //
// is stored in this file (AliITSOnlineSPDHitArray and    //
// AliITSOnlineSPDHitEvent). Also some general            //
// information is stored (AliITSOnlineSPDscanInfo).       //
// When switching between different steps of the scan,    //
// the previous step is automatically stored on the file. //
// With this scheme there is no risk of running out of    //
// memory.                                                //
////////////////////////////////////////////////////////////

#include <math.h>

#include <TFile.h>
#include "AliITSOnlineSPDscan.h"
#include "AliITSOnlineSPDscanInfo.h"
#include "AliITSOnlineSPDHitArray.h"
#include "AliITSOnlineSPDHitEvent.h"

AliITSOnlineSPDscan::AliITSOnlineSPDscan(const Char_t *fileName, Bool_t readFromGridFile) :
  fFile(NULL),
  fWrite(kFALSE),
  fCurrentStep(-1),
  fModified(kFALSE),
  fInfoModified(kFALSE),
  fScanInfo(NULL),
  fFileName(fileName)
{
  // constructor, open file for reading or writing
  // look for a previously saved info object 
  // (if file not found create a new one and return, else read)

  for(Int_t ihs=0; ihs<6; ihs++){
  fCurrentHitArray[ihs]=0x0; 
  fCurrentHitEvent[ihs]=0x0;
  }

  Bool_t bRead = readFromGridFile;

  if (!bRead) {
    FILE* fp0 = fopen(fFileName.Data(), "r");
    if (fp0 != NULL) {
      bRead=kTRUE;
      fclose(fp0);
    }
  }

  if (bRead) { // open file for reading
    fFile = TFile::Open(fFileName.Data(), "READ");
    if (fFile==NULL) { // grid file not found, create new local default file
      printf("ERROR: AliITSOnlineSPDscan: File %s not found! Creating 'test999.root' file instead\n",fFileName.Data());
      // create default empty file:
      fFileName = "test999.root";
      fScanInfo = new AliITSOnlineSPDscanInfo();
      fInfoModified=kTRUE;
      fFile = new TFile(fFileName.Data(), "RECREATE");
      fWrite=kTRUE;
    }
    else { // read from file (grid or local)
      fWrite=kFALSE;
      fFile->GetObject("AliITSOnlineSPDscanInfo", fScanInfo);
    }
  }
  else { // create new local file
    fScanInfo = new AliITSOnlineSPDscanInfo();
    fInfoModified=kTRUE;
    fFile = new TFile(fFileName.Data(), "RECREATE");
    fWrite=kTRUE;
  }

  Init();
}

AliITSOnlineSPDscan::AliITSOnlineSPDscan(const AliITSOnlineSPDscan& /*scan*/) :
  fFile(NULL),
  fWrite(kFALSE),
  fCurrentStep(-1),
  fModified(kFALSE),
  fInfoModified(kFALSE),
  fScanInfo(NULL),
  fFileName(".")
{

  for(Int_t ihs=0; ihs<6; ihs++){
  fCurrentHitArray[ihs]=0x0;
  fCurrentHitEvent[ihs]=0x0;
  }

  printf("This object should not be copied!");
}

AliITSOnlineSPDscan::~AliITSOnlineSPDscan() {
  // destructor
  if (fModified) {
    SaveCurrentStep();
  }
  for (UInt_t hs=0; hs<6; hs++) {
    if (fCurrentHitArray[hs]!=NULL) {
      delete fCurrentHitArray[hs];
      fCurrentHitArray[hs]=NULL;
    }
    if (fCurrentHitEvent[hs]!=NULL) {
      delete fCurrentHitEvent[hs];
      fCurrentHitEvent[hs]=NULL;
    }
  }
  if (fInfoModified) {
    if (!fWrite) {
      fFile->Close();
      delete fFile;
      fFile = new TFile(fFileName.Data(), "UPDATE");
      fWrite=kTRUE;
    }
    fFile->Delete("AliITSOnlineSPDscanInfo;*");
    fFile->WriteTObject(fScanInfo, "AliITSOnlineSPDscanInfo");
  }
  if (fFile!=NULL) {
    delete fFile;
  }
}

AliITSOnlineSPDscan& AliITSOnlineSPDscan::operator=(const AliITSOnlineSPDscan& scan) {
  // assignment operator (should not be used)
  printf("This object should not be copied!");
  if (this!=&scan) {
    // still do nothing...
  }
  return *this;
}

void AliITSOnlineSPDscan::ClearThis() {
  // clear this scan, close file and open new
  for (UInt_t hs=0; hs<6; hs++) {
    if (fCurrentHitArray[hs]!=NULL) {
      delete fCurrentHitArray[hs];
    }
    fCurrentHitArray[hs] = NULL;
    if (fCurrentHitEvent[hs]!=NULL) {
      delete fCurrentHitEvent[hs];
    }
    fCurrentHitEvent[hs] = NULL;
  }
  fScanInfo->ClearThis();
  fFile->Close();
  delete fFile;
  fFile = new TFile(fFileName.Data(), "RECREATE");
  fWrite=kTRUE;
  fFile->WriteTObject(fScanInfo, "AliITSOnlineSPDscanInfo");
  fInfoModified=kTRUE;
}

void AliITSOnlineSPDscan::Init() {
  // init hit arrays and hit events
  for (UInt_t hs=0; hs<6; hs++) {
    fCurrentHitArray[hs]=NULL;
    fCurrentHitEvent[hs]=NULL;
  }

}

UInt_t AliITSOnlineSPDscan::AddScanStep() {
  // add a new scan step
  CreateNewStep();
  return fScanInfo->AddScanStep();
}

void AliITSOnlineSPDscan::CreateNewStep() {
  // create a new step
  // save current step to file (if modified)
  if (fModified) {
    SaveCurrentStep();
  }
  // create new step
  for (UInt_t hs=0; hs<6; hs++) {
    if (fCurrentHitArray[hs]!=NULL) {
      delete fCurrentHitArray[hs];
    }
    fCurrentHitArray[hs] = new AliITSOnlineSPDHitArray();
    if (fCurrentHitEvent[hs]!=NULL) {
      delete fCurrentHitEvent[hs];
    }
    fCurrentHitEvent[hs] = new AliITSOnlineSPDHitEvent();
  }
  fCurrentStep = fScanInfo->GetNSteps();
  fModified=kTRUE;
  fInfoModified=kTRUE;
}

void AliITSOnlineSPDscan::SwitchToStep(UInt_t nsi) {
  // switch to step nsi (save current step first if needed)
  if ((Int_t)nsi!=fCurrentStep) {
    if (fModified) {
      SaveCurrentStep();
    }
    for (UInt_t hs=0; hs<6; hs++) {
      if (fCurrentHitArray[hs]!=NULL) {
	delete fCurrentHitArray[hs];
	fCurrentHitArray[hs]=NULL;
      }
      if (fCurrentHitEvent[hs]!=NULL) {
	delete fCurrentHitEvent[hs];
	fCurrentHitEvent[hs]=NULL;
      }
    }
    if (nsi>=GetNSteps()) {
      FillGap(nsi); // makes fCurrentStep = nsi
    }
    else {
      fCurrentStep=nsi;
      ReadCurrentStep();
    }
  }
}

void AliITSOnlineSPDscan::FillGap(UInt_t nsi) {
  //create new steps until nsi is reached
  while (nsi>=GetNSteps()) {
    fCurrentStep = AddScanStep();
  }
}

void AliITSOnlineSPDscan::ReadCurrentStep() {
  // read current step index into memory
  for (UInt_t hs=0; hs<6; hs++) {
    TString stepName = Form("HitArray_HS%d_Step%d",hs,fCurrentStep);
    fFile->GetObject(stepName.Data(), fCurrentHitArray[hs]);
    TString stepName2 = Form("HitEvent_HS%d_Step%d",hs,fCurrentStep);
    fFile->GetObject(stepName2, fCurrentHitEvent[hs]);
  }
}

void AliITSOnlineSPDscan::SaveCurrentStep() {
  // save current step to file
  if (!fWrite) {
    fFile->Close();
    delete fFile;
    fFile = new TFile(fFileName.Data(), "UPDATE");
    fWrite=kTRUE;
  }
  for (UInt_t hs=0; hs<6; hs++) {
    TString stepName = Form("HitArray_HS%d_Step%d",hs,fCurrentStep);
    TString stepDelete = Form("%s;*",stepName.Data());
    fFile->Delete(stepDelete.Data());
    fFile->WriteTObject(fCurrentHitArray[hs], stepName.Data());
    TString stepName2 = Form("HitEvent_HS%d_Step%d",hs,fCurrentStep);
    TString stepDelete2 = Form("%s;*",stepName2.Data());
    fFile->Delete(stepDelete2.Data());
    fFile->WriteTObject(fCurrentHitEvent[hs], stepName2.Data());
  }
  fModified=kFALSE;
}

void AliITSOnlineSPDscan::SetHits(UInt_t nsi, UInt_t hs, UInt_t chipi, UInt_t coli, UInt_t rowi, UInt_t val) {
  // set nr of hits for pixel
  SwitchToStep(nsi);
  fCurrentHitArray[hs]->SetHits(chipi,coli,rowi,val);
  fModified=kTRUE;
}
void AliITSOnlineSPDscan::IncrementHits(UInt_t nsi, UInt_t hs, UInt_t chipi, UInt_t coli, UInt_t rowi) {
  // increment nr of hits for pixel
  SwitchToStep(nsi);
  fCurrentHitArray[hs]->IncrementHits(chipi,coli,rowi);
  fModified=kTRUE;
}
void AliITSOnlineSPDscan::SetHitEvents(UInt_t nsi, UInt_t hs, UInt_t chipi, Int_t val) {
  // set nr of hit events for a chip
  SwitchToStep(nsi);
  fCurrentHitEvent[hs]->SetHitEvent(chipi,val);
  fModified=kTRUE;
}
void AliITSOnlineSPDscan::SetHitEventsTot(UInt_t nsi, UInt_t hs, Int_t val) {
  // set nr of hit events for 10 chips together
  SetHitEvents(nsi,hs,10,val);
}
void AliITSOnlineSPDscan::IncrementHitEvents(UInt_t nsi, UInt_t hs, UInt_t chipi) {
  // increment nr of hit events for a chip
  SwitchToStep(nsi);
  fCurrentHitEvent[hs]->IncrementHitEvent(chipi);
  fModified=kTRUE;
}
void AliITSOnlineSPDscan::IncrementHitEventsTot(UInt_t nsi, UInt_t hs) {
  // increment nr of hit events for 10 chips
  IncrementHitEvents(nsi,hs,10);
}


UInt_t AliITSOnlineSPDscan::GetHits(UInt_t nsi, UInt_t hs, UInt_t chipi, UInt_t coli, UInt_t rowi) {
  // get nr of hits for pixel
  if (nsi<GetNSteps()) {
    SwitchToStep(nsi);
    return fCurrentHitArray[hs]->GetHits(chipi,coli,rowi);
  }
  else {
    return 0;
  }
}
Float_t AliITSOnlineSPDscan::GetHitsEfficiency(UInt_t nsi, UInt_t hs, UInt_t chipi, UInt_t coli, UInt_t rowi) {
  // get the hit efficiency for pixel
  UInt_t ntr = GetTriggers(nsi);
  if (ntr>0) {
    return ((Float_t)GetHits(nsi,hs,chipi,coli,rowi))/ntr;
  }
  else {
    return 0;
  }
}
Float_t AliITSOnlineSPDscan::GetHitsEfficiencyError(UInt_t nsi, UInt_t hs, UInt_t chipi, UInt_t coli, UInt_t rowi) {
  // get error in hit efficiency for pixel
  Float_t hits = GetHits(nsi,hs,chipi,coli,rowi);
  UInt_t ntr = GetTriggers(nsi);
  return sqrt(hits*(ntr-hits)/ntr)/ntr;
}
UInt_t AliITSOnlineSPDscan::GetHitEvents(UInt_t nsi, UInt_t hs, UInt_t chipi) {
  // get nr of hit events for a chip
  if (nsi<GetNSteps()) {
    SwitchToStep(nsi);
    return fCurrentHitEvent[hs]->GetHitEvent(chipi);
  }
  else {
    return 0;
  }
}
UInt_t AliITSOnlineSPDscan::GetHitEventsTot(UInt_t nsi, UInt_t hs) {
  // get nr of hit events for 10 chips
  return GetHitEvents(nsi,hs,10);
}
Float_t AliITSOnlineSPDscan::GetHitEventsEfficiency(UInt_t nsi, UInt_t hs, UInt_t chipi) {
  // get the hit events efficiency for a chip
  UInt_t ntr = GetTriggers(nsi);
  if (ntr>0) {
    return ((Float_t)GetHitEvents(nsi,hs,chipi))/ntr;
  }
  else {
    return 0;
  }
}
Float_t AliITSOnlineSPDscan::GetHitEventsTotEfficiency(UInt_t nsi, UInt_t hs) {
  // get the hit events efficiency for 10 chips
  return GetHitEventsEfficiency(nsi,hs,10);
}
Float_t AliITSOnlineSPDscan::GetHitEventsEfficiencyError(UInt_t nsi, UInt_t hs, UInt_t chipi) {
  // get error in hit events efficiency for a chip
  Float_t hitevents = (Float_t) GetHitEvents(nsi,hs,chipi);
  UInt_t ntr = GetTriggers(nsi);
  return sqrt(hitevents*(ntr-hitevents)/ntr)/ntr;
}
Float_t AliITSOnlineSPDscan::GetHitEventsTotEfficiencyError(UInt_t nsi, UInt_t hs) {
  // get error in hit events efficiency for 10 chips
  return GetHitEventsEfficiencyError(nsi,hs,10);
}
Float_t AliITSOnlineSPDscan::GetAverageMultiplicity(UInt_t nsi, UInt_t hs, UInt_t chipi) {
  // get average multiplicity for a chip
  Float_t nrhits = 0;
  for (UInt_t chip=0;chip<10;chip++) {
    if (chipi==10 || chip==chipi) {
      for (Int_t col=0; col<32; col++) {
	for (Int_t row=0; row<256; row++) {
	  nrhits+=GetHits(nsi,hs,chip,col,row);
	}
      }
    }
  }
  UInt_t ntr = GetTriggers(nsi);
  if (ntr>0) {
    return nrhits/ntr;
  }
  else {
    return 0;
  }
}
Float_t AliITSOnlineSPDscan::GetAverageMultiplicityTot(UInt_t nsi, UInt_t hs) {
  // get average multiplicity for 10 chips
  return GetAverageMultiplicity(nsi,hs,10);
}


void AliITSOnlineSPDscan::SetType(UInt_t val) {
  // set type
  fScanInfo->SetType(val);
  fInfoModified=kTRUE;
}
void AliITSOnlineSPDscan::SetRunNr(UInt_t val) {
  // set run nr
  fScanInfo->SetRunNr(val);
  fInfoModified=kTRUE;
}
void AliITSOnlineSPDscan::SetRouterNr(UInt_t val) {
  // set router nr
  fScanInfo->SetRouterNr(val);
  fInfoModified=kTRUE;
}
void AliITSOnlineSPDscan::SetHalfStaveScanned(UInt_t val, Bool_t b) {
  // set half stave scanned
  fScanInfo->SetHalfStaveScanned(val,b);
  fInfoModified=kTRUE;
}
void AliITSOnlineSPDscan::SetDataFormat(UInt_t val) {
  // set data format (0=normal 1=histogram)
  fScanInfo->SetDataFormat(val);
  fInfoModified=kTRUE;
}
void AliITSOnlineSPDscan::SetTriggers(UInt_t nsi, UInt_t val) {
  // set nr of triggers
  SwitchToStep(nsi);
  fScanInfo->SetTriggers(nsi,val);
  fInfoModified=kTRUE;
}
void AliITSOnlineSPDscan::SetChipPresent(UInt_t hs, UInt_t chipi, Bool_t val){
  // set chip present
  fScanInfo->SetChipPresent(hs,chipi,val); 
  fInfoModified=kTRUE;
}
void AliITSOnlineSPDscan::SetRowStart(UInt_t val){
  // set row start
  fScanInfo->SetRowStart(val); 
  fInfoModified=kTRUE;
}
void AliITSOnlineSPDscan::SetRowEnd(UInt_t val){
  // set row end
  fScanInfo->SetRowEnd(val); 
  fInfoModified=kTRUE;
}
void AliITSOnlineSPDscan::SetDacStart(UInt_t val){
  // set dac start
  fScanInfo->SetDacStart(val); 
  fInfoModified=kTRUE;
}
void AliITSOnlineSPDscan::SetDacEnd(UInt_t val){
  // set dac end
  fScanInfo->SetDacEnd(val); 
  fInfoModified=kTRUE;
}  
void AliITSOnlineSPDscan::SetDacStep(UInt_t val){
  // set dac step
  fScanInfo->SetDacStep(val); 
  fInfoModified=kTRUE;
}
void AliITSOnlineSPDscan::SetDCSVersion(UInt_t val){
  // set dcs db version
  fScanInfo->SetDCSVersion(val); 
  fInfoModified=kTRUE;
}
void AliITSOnlineSPDscan::IncrementTriggers(UInt_t nsi) {
  // increment nr of triggers
  SwitchToStep(nsi);
  fScanInfo->IncrementTriggers(nsi); 
  fInfoModified=kTRUE;
}



UInt_t AliITSOnlineSPDscan::GetNSteps() const {
  return fScanInfo->GetNSteps();
}
UInt_t AliITSOnlineSPDscan::GetType() const {
  return fScanInfo->GetType();
}
UInt_t AliITSOnlineSPDscan::GetRunNr() const {
  return fScanInfo->GetRunNr();
}
UInt_t AliITSOnlineSPDscan::GetRouterNr() const {
  return fScanInfo->GetRouterNr();
}
Bool_t AliITSOnlineSPDscan::GetHalfStaveScanned(UInt_t val) const {
  return fScanInfo->GetHalfStaveScanned(val);
}
UInt_t AliITSOnlineSPDscan::GetDataFormat() const {
  return fScanInfo->GetDataFormat();
}
UInt_t AliITSOnlineSPDscan::GetTriggers(UInt_t nsi) const {
  return fScanInfo->GetTriggers(nsi);
}
Bool_t AliITSOnlineSPDscan::GetChipPresent(UInt_t hs, UInt_t chipi) const {
  return fScanInfo->GetChipPresent(hs,chipi);
}
UInt_t AliITSOnlineSPDscan::GetRowStart() const {
  return fScanInfo->GetRowStart();
}
UInt_t AliITSOnlineSPDscan::GetRowEnd() const {
  return fScanInfo->GetRowEnd();
}
UInt_t AliITSOnlineSPDscan::GetDacStart() const {
  return fScanInfo->GetDacStart();
}
UInt_t AliITSOnlineSPDscan::GetDacEnd() const {
  return fScanInfo->GetDacEnd();
}
UInt_t AliITSOnlineSPDscan::GetDacStep() const {
  return fScanInfo->GetDacStep();
}
UInt_t AliITSOnlineSPDscan::GetDCSVersion() const {
  return fScanInfo->GetDCSVersion();
}
 AliITSOnlineSPDscan.cxx:1
 AliITSOnlineSPDscan.cxx:2
 AliITSOnlineSPDscan.cxx:3
 AliITSOnlineSPDscan.cxx:4
 AliITSOnlineSPDscan.cxx:5
 AliITSOnlineSPDscan.cxx:6
 AliITSOnlineSPDscan.cxx:7
 AliITSOnlineSPDscan.cxx:8
 AliITSOnlineSPDscan.cxx:9
 AliITSOnlineSPDscan.cxx:10
 AliITSOnlineSPDscan.cxx:11
 AliITSOnlineSPDscan.cxx:12
 AliITSOnlineSPDscan.cxx:13
 AliITSOnlineSPDscan.cxx:14
 AliITSOnlineSPDscan.cxx:15
 AliITSOnlineSPDscan.cxx:16
 AliITSOnlineSPDscan.cxx:17
 AliITSOnlineSPDscan.cxx:18
 AliITSOnlineSPDscan.cxx:19
 AliITSOnlineSPDscan.cxx:20
 AliITSOnlineSPDscan.cxx:21
 AliITSOnlineSPDscan.cxx:22
 AliITSOnlineSPDscan.cxx:23
 AliITSOnlineSPDscan.cxx:24
 AliITSOnlineSPDscan.cxx:25
 AliITSOnlineSPDscan.cxx:26
 AliITSOnlineSPDscan.cxx:27
 AliITSOnlineSPDscan.cxx:28
 AliITSOnlineSPDscan.cxx:29
 AliITSOnlineSPDscan.cxx:30
 AliITSOnlineSPDscan.cxx:31
 AliITSOnlineSPDscan.cxx:32
 AliITSOnlineSPDscan.cxx:33
 AliITSOnlineSPDscan.cxx:34
 AliITSOnlineSPDscan.cxx:35
 AliITSOnlineSPDscan.cxx:36
 AliITSOnlineSPDscan.cxx:37
 AliITSOnlineSPDscan.cxx:38
 AliITSOnlineSPDscan.cxx:39
 AliITSOnlineSPDscan.cxx:40
 AliITSOnlineSPDscan.cxx:41
 AliITSOnlineSPDscan.cxx:42
 AliITSOnlineSPDscan.cxx:43
 AliITSOnlineSPDscan.cxx:44
 AliITSOnlineSPDscan.cxx:45
 AliITSOnlineSPDscan.cxx:46
 AliITSOnlineSPDscan.cxx:47
 AliITSOnlineSPDscan.cxx:48
 AliITSOnlineSPDscan.cxx:49
 AliITSOnlineSPDscan.cxx:50
 AliITSOnlineSPDscan.cxx:51
 AliITSOnlineSPDscan.cxx:52
 AliITSOnlineSPDscan.cxx:53
 AliITSOnlineSPDscan.cxx:54
 AliITSOnlineSPDscan.cxx:55
 AliITSOnlineSPDscan.cxx:56
 AliITSOnlineSPDscan.cxx:57
 AliITSOnlineSPDscan.cxx:58
 AliITSOnlineSPDscan.cxx:59
 AliITSOnlineSPDscan.cxx:60
 AliITSOnlineSPDscan.cxx:61
 AliITSOnlineSPDscan.cxx:62
 AliITSOnlineSPDscan.cxx:63
 AliITSOnlineSPDscan.cxx:64
 AliITSOnlineSPDscan.cxx:65
 AliITSOnlineSPDscan.cxx:66
 AliITSOnlineSPDscan.cxx:67
 AliITSOnlineSPDscan.cxx:68
 AliITSOnlineSPDscan.cxx:69
 AliITSOnlineSPDscan.cxx:70
 AliITSOnlineSPDscan.cxx:71
 AliITSOnlineSPDscan.cxx:72
 AliITSOnlineSPDscan.cxx:73
 AliITSOnlineSPDscan.cxx:74
 AliITSOnlineSPDscan.cxx:75
 AliITSOnlineSPDscan.cxx:76
 AliITSOnlineSPDscan.cxx:77
 AliITSOnlineSPDscan.cxx:78
 AliITSOnlineSPDscan.cxx:79
 AliITSOnlineSPDscan.cxx:80
 AliITSOnlineSPDscan.cxx:81
 AliITSOnlineSPDscan.cxx:82
 AliITSOnlineSPDscan.cxx:83
 AliITSOnlineSPDscan.cxx:84
 AliITSOnlineSPDscan.cxx:85
 AliITSOnlineSPDscan.cxx:86
 AliITSOnlineSPDscan.cxx:87
 AliITSOnlineSPDscan.cxx:88
 AliITSOnlineSPDscan.cxx:89
 AliITSOnlineSPDscan.cxx:90
 AliITSOnlineSPDscan.cxx:91
 AliITSOnlineSPDscan.cxx:92
 AliITSOnlineSPDscan.cxx:93
 AliITSOnlineSPDscan.cxx:94
 AliITSOnlineSPDscan.cxx:95
 AliITSOnlineSPDscan.cxx:96
 AliITSOnlineSPDscan.cxx:97
 AliITSOnlineSPDscan.cxx:98
 AliITSOnlineSPDscan.cxx:99
 AliITSOnlineSPDscan.cxx:100
 AliITSOnlineSPDscan.cxx:101
 AliITSOnlineSPDscan.cxx:102
 AliITSOnlineSPDscan.cxx:103
 AliITSOnlineSPDscan.cxx:104
 AliITSOnlineSPDscan.cxx:105
 AliITSOnlineSPDscan.cxx:106
 AliITSOnlineSPDscan.cxx:107
 AliITSOnlineSPDscan.cxx:108
 AliITSOnlineSPDscan.cxx:109
 AliITSOnlineSPDscan.cxx:110
 AliITSOnlineSPDscan.cxx:111
 AliITSOnlineSPDscan.cxx:112
 AliITSOnlineSPDscan.cxx:113
 AliITSOnlineSPDscan.cxx:114
 AliITSOnlineSPDscan.cxx:115
 AliITSOnlineSPDscan.cxx:116
 AliITSOnlineSPDscan.cxx:117
 AliITSOnlineSPDscan.cxx:118
 AliITSOnlineSPDscan.cxx:119
 AliITSOnlineSPDscan.cxx:120
 AliITSOnlineSPDscan.cxx:121
 AliITSOnlineSPDscan.cxx:122
 AliITSOnlineSPDscan.cxx:123
 AliITSOnlineSPDscan.cxx:124
 AliITSOnlineSPDscan.cxx:125
 AliITSOnlineSPDscan.cxx:126
 AliITSOnlineSPDscan.cxx:127
 AliITSOnlineSPDscan.cxx:128
 AliITSOnlineSPDscan.cxx:129
 AliITSOnlineSPDscan.cxx:130
 AliITSOnlineSPDscan.cxx:131
 AliITSOnlineSPDscan.cxx:132
 AliITSOnlineSPDscan.cxx:133
 AliITSOnlineSPDscan.cxx:134
 AliITSOnlineSPDscan.cxx:135
 AliITSOnlineSPDscan.cxx:136
 AliITSOnlineSPDscan.cxx:137
 AliITSOnlineSPDscan.cxx:138
 AliITSOnlineSPDscan.cxx:139
 AliITSOnlineSPDscan.cxx:140
 AliITSOnlineSPDscan.cxx:141
 AliITSOnlineSPDscan.cxx:142
 AliITSOnlineSPDscan.cxx:143
 AliITSOnlineSPDscan.cxx:144
 AliITSOnlineSPDscan.cxx:145
 AliITSOnlineSPDscan.cxx:146
 AliITSOnlineSPDscan.cxx:147
 AliITSOnlineSPDscan.cxx:148
 AliITSOnlineSPDscan.cxx:149
 AliITSOnlineSPDscan.cxx:150
 AliITSOnlineSPDscan.cxx:151
 AliITSOnlineSPDscan.cxx:152
 AliITSOnlineSPDscan.cxx:153
 AliITSOnlineSPDscan.cxx:154
 AliITSOnlineSPDscan.cxx:155
 AliITSOnlineSPDscan.cxx:156
 AliITSOnlineSPDscan.cxx:157
 AliITSOnlineSPDscan.cxx:158
 AliITSOnlineSPDscan.cxx:159
 AliITSOnlineSPDscan.cxx:160
 AliITSOnlineSPDscan.cxx:161
 AliITSOnlineSPDscan.cxx:162
 AliITSOnlineSPDscan.cxx:163
 AliITSOnlineSPDscan.cxx:164
 AliITSOnlineSPDscan.cxx:165
 AliITSOnlineSPDscan.cxx:166
 AliITSOnlineSPDscan.cxx:167
 AliITSOnlineSPDscan.cxx:168
 AliITSOnlineSPDscan.cxx:169
 AliITSOnlineSPDscan.cxx:170
 AliITSOnlineSPDscan.cxx:171
 AliITSOnlineSPDscan.cxx:172
 AliITSOnlineSPDscan.cxx:173
 AliITSOnlineSPDscan.cxx:174
 AliITSOnlineSPDscan.cxx:175
 AliITSOnlineSPDscan.cxx:176
 AliITSOnlineSPDscan.cxx:177
 AliITSOnlineSPDscan.cxx:178
 AliITSOnlineSPDscan.cxx:179
 AliITSOnlineSPDscan.cxx:180
 AliITSOnlineSPDscan.cxx:181
 AliITSOnlineSPDscan.cxx:182
 AliITSOnlineSPDscan.cxx:183
 AliITSOnlineSPDscan.cxx:184
 AliITSOnlineSPDscan.cxx:185
 AliITSOnlineSPDscan.cxx:186
 AliITSOnlineSPDscan.cxx:187
 AliITSOnlineSPDscan.cxx:188
 AliITSOnlineSPDscan.cxx:189
 AliITSOnlineSPDscan.cxx:190
 AliITSOnlineSPDscan.cxx:191
 AliITSOnlineSPDscan.cxx:192
 AliITSOnlineSPDscan.cxx:193
 AliITSOnlineSPDscan.cxx:194
 AliITSOnlineSPDscan.cxx:195
 AliITSOnlineSPDscan.cxx:196
 AliITSOnlineSPDscan.cxx:197
 AliITSOnlineSPDscan.cxx:198
 AliITSOnlineSPDscan.cxx:199
 AliITSOnlineSPDscan.cxx:200
 AliITSOnlineSPDscan.cxx:201
 AliITSOnlineSPDscan.cxx:202
 AliITSOnlineSPDscan.cxx:203
 AliITSOnlineSPDscan.cxx:204
 AliITSOnlineSPDscan.cxx:205
 AliITSOnlineSPDscan.cxx:206
 AliITSOnlineSPDscan.cxx:207
 AliITSOnlineSPDscan.cxx:208
 AliITSOnlineSPDscan.cxx:209
 AliITSOnlineSPDscan.cxx:210
 AliITSOnlineSPDscan.cxx:211
 AliITSOnlineSPDscan.cxx:212
 AliITSOnlineSPDscan.cxx:213
 AliITSOnlineSPDscan.cxx:214
 AliITSOnlineSPDscan.cxx:215
 AliITSOnlineSPDscan.cxx:216
 AliITSOnlineSPDscan.cxx:217
 AliITSOnlineSPDscan.cxx:218
 AliITSOnlineSPDscan.cxx:219
 AliITSOnlineSPDscan.cxx:220
 AliITSOnlineSPDscan.cxx:221
 AliITSOnlineSPDscan.cxx:222
 AliITSOnlineSPDscan.cxx:223
 AliITSOnlineSPDscan.cxx:224
 AliITSOnlineSPDscan.cxx:225
 AliITSOnlineSPDscan.cxx:226
 AliITSOnlineSPDscan.cxx:227
 AliITSOnlineSPDscan.cxx:228
 AliITSOnlineSPDscan.cxx:229
 AliITSOnlineSPDscan.cxx:230
 AliITSOnlineSPDscan.cxx:231
 AliITSOnlineSPDscan.cxx:232
 AliITSOnlineSPDscan.cxx:233
 AliITSOnlineSPDscan.cxx:234
 AliITSOnlineSPDscan.cxx:235
 AliITSOnlineSPDscan.cxx:236
 AliITSOnlineSPDscan.cxx:237
 AliITSOnlineSPDscan.cxx:238
 AliITSOnlineSPDscan.cxx:239
 AliITSOnlineSPDscan.cxx:240
 AliITSOnlineSPDscan.cxx:241
 AliITSOnlineSPDscan.cxx:242
 AliITSOnlineSPDscan.cxx:243
 AliITSOnlineSPDscan.cxx:244
 AliITSOnlineSPDscan.cxx:245
 AliITSOnlineSPDscan.cxx:246
 AliITSOnlineSPDscan.cxx:247
 AliITSOnlineSPDscan.cxx:248
 AliITSOnlineSPDscan.cxx:249
 AliITSOnlineSPDscan.cxx:250
 AliITSOnlineSPDscan.cxx:251
 AliITSOnlineSPDscan.cxx:252
 AliITSOnlineSPDscan.cxx:253
 AliITSOnlineSPDscan.cxx:254
 AliITSOnlineSPDscan.cxx:255
 AliITSOnlineSPDscan.cxx:256
 AliITSOnlineSPDscan.cxx:257
 AliITSOnlineSPDscan.cxx:258
 AliITSOnlineSPDscan.cxx:259
 AliITSOnlineSPDscan.cxx:260
 AliITSOnlineSPDscan.cxx:261
 AliITSOnlineSPDscan.cxx:262
 AliITSOnlineSPDscan.cxx:263
 AliITSOnlineSPDscan.cxx:264
 AliITSOnlineSPDscan.cxx:265
 AliITSOnlineSPDscan.cxx:266
 AliITSOnlineSPDscan.cxx:267
 AliITSOnlineSPDscan.cxx:268
 AliITSOnlineSPDscan.cxx:269
 AliITSOnlineSPDscan.cxx:270
 AliITSOnlineSPDscan.cxx:271
 AliITSOnlineSPDscan.cxx:272
 AliITSOnlineSPDscan.cxx:273
 AliITSOnlineSPDscan.cxx:274
 AliITSOnlineSPDscan.cxx:275
 AliITSOnlineSPDscan.cxx:276
 AliITSOnlineSPDscan.cxx:277
 AliITSOnlineSPDscan.cxx:278
 AliITSOnlineSPDscan.cxx:279
 AliITSOnlineSPDscan.cxx:280
 AliITSOnlineSPDscan.cxx:281
 AliITSOnlineSPDscan.cxx:282
 AliITSOnlineSPDscan.cxx:283
 AliITSOnlineSPDscan.cxx:284
 AliITSOnlineSPDscan.cxx:285
 AliITSOnlineSPDscan.cxx:286
 AliITSOnlineSPDscan.cxx:287
 AliITSOnlineSPDscan.cxx:288
 AliITSOnlineSPDscan.cxx:289
 AliITSOnlineSPDscan.cxx:290
 AliITSOnlineSPDscan.cxx:291
 AliITSOnlineSPDscan.cxx:292
 AliITSOnlineSPDscan.cxx:293
 AliITSOnlineSPDscan.cxx:294
 AliITSOnlineSPDscan.cxx:295
 AliITSOnlineSPDscan.cxx:296
 AliITSOnlineSPDscan.cxx:297
 AliITSOnlineSPDscan.cxx:298
 AliITSOnlineSPDscan.cxx:299
 AliITSOnlineSPDscan.cxx:300
 AliITSOnlineSPDscan.cxx:301
 AliITSOnlineSPDscan.cxx:302
 AliITSOnlineSPDscan.cxx:303
 AliITSOnlineSPDscan.cxx:304
 AliITSOnlineSPDscan.cxx:305
 AliITSOnlineSPDscan.cxx:306
 AliITSOnlineSPDscan.cxx:307
 AliITSOnlineSPDscan.cxx:308
 AliITSOnlineSPDscan.cxx:309
 AliITSOnlineSPDscan.cxx:310
 AliITSOnlineSPDscan.cxx:311
 AliITSOnlineSPDscan.cxx:312
 AliITSOnlineSPDscan.cxx:313
 AliITSOnlineSPDscan.cxx:314
 AliITSOnlineSPDscan.cxx:315
 AliITSOnlineSPDscan.cxx:316
 AliITSOnlineSPDscan.cxx:317
 AliITSOnlineSPDscan.cxx:318
 AliITSOnlineSPDscan.cxx:319
 AliITSOnlineSPDscan.cxx:320
 AliITSOnlineSPDscan.cxx:321
 AliITSOnlineSPDscan.cxx:322
 AliITSOnlineSPDscan.cxx:323
 AliITSOnlineSPDscan.cxx:324
 AliITSOnlineSPDscan.cxx:325
 AliITSOnlineSPDscan.cxx:326
 AliITSOnlineSPDscan.cxx:327
 AliITSOnlineSPDscan.cxx:328
 AliITSOnlineSPDscan.cxx:329
 AliITSOnlineSPDscan.cxx:330
 AliITSOnlineSPDscan.cxx:331
 AliITSOnlineSPDscan.cxx:332
 AliITSOnlineSPDscan.cxx:333
 AliITSOnlineSPDscan.cxx:334
 AliITSOnlineSPDscan.cxx:335
 AliITSOnlineSPDscan.cxx:336
 AliITSOnlineSPDscan.cxx:337
 AliITSOnlineSPDscan.cxx:338
 AliITSOnlineSPDscan.cxx:339
 AliITSOnlineSPDscan.cxx:340
 AliITSOnlineSPDscan.cxx:341
 AliITSOnlineSPDscan.cxx:342
 AliITSOnlineSPDscan.cxx:343
 AliITSOnlineSPDscan.cxx:344
 AliITSOnlineSPDscan.cxx:345
 AliITSOnlineSPDscan.cxx:346
 AliITSOnlineSPDscan.cxx:347
 AliITSOnlineSPDscan.cxx:348
 AliITSOnlineSPDscan.cxx:349
 AliITSOnlineSPDscan.cxx:350
 AliITSOnlineSPDscan.cxx:351
 AliITSOnlineSPDscan.cxx:352
 AliITSOnlineSPDscan.cxx:353
 AliITSOnlineSPDscan.cxx:354
 AliITSOnlineSPDscan.cxx:355
 AliITSOnlineSPDscan.cxx:356
 AliITSOnlineSPDscan.cxx:357
 AliITSOnlineSPDscan.cxx:358
 AliITSOnlineSPDscan.cxx:359
 AliITSOnlineSPDscan.cxx:360
 AliITSOnlineSPDscan.cxx:361
 AliITSOnlineSPDscan.cxx:362
 AliITSOnlineSPDscan.cxx:363
 AliITSOnlineSPDscan.cxx:364
 AliITSOnlineSPDscan.cxx:365
 AliITSOnlineSPDscan.cxx:366
 AliITSOnlineSPDscan.cxx:367
 AliITSOnlineSPDscan.cxx:368
 AliITSOnlineSPDscan.cxx:369
 AliITSOnlineSPDscan.cxx:370
 AliITSOnlineSPDscan.cxx:371
 AliITSOnlineSPDscan.cxx:372
 AliITSOnlineSPDscan.cxx:373
 AliITSOnlineSPDscan.cxx:374
 AliITSOnlineSPDscan.cxx:375
 AliITSOnlineSPDscan.cxx:376
 AliITSOnlineSPDscan.cxx:377
 AliITSOnlineSPDscan.cxx:378
 AliITSOnlineSPDscan.cxx:379
 AliITSOnlineSPDscan.cxx:380
 AliITSOnlineSPDscan.cxx:381
 AliITSOnlineSPDscan.cxx:382
 AliITSOnlineSPDscan.cxx:383
 AliITSOnlineSPDscan.cxx:384
 AliITSOnlineSPDscan.cxx:385
 AliITSOnlineSPDscan.cxx:386
 AliITSOnlineSPDscan.cxx:387
 AliITSOnlineSPDscan.cxx:388
 AliITSOnlineSPDscan.cxx:389
 AliITSOnlineSPDscan.cxx:390
 AliITSOnlineSPDscan.cxx:391
 AliITSOnlineSPDscan.cxx:392
 AliITSOnlineSPDscan.cxx:393
 AliITSOnlineSPDscan.cxx:394
 AliITSOnlineSPDscan.cxx:395
 AliITSOnlineSPDscan.cxx:396
 AliITSOnlineSPDscan.cxx:397
 AliITSOnlineSPDscan.cxx:398
 AliITSOnlineSPDscan.cxx:399
 AliITSOnlineSPDscan.cxx:400
 AliITSOnlineSPDscan.cxx:401
 AliITSOnlineSPDscan.cxx:402
 AliITSOnlineSPDscan.cxx:403
 AliITSOnlineSPDscan.cxx:404
 AliITSOnlineSPDscan.cxx:405
 AliITSOnlineSPDscan.cxx:406
 AliITSOnlineSPDscan.cxx:407
 AliITSOnlineSPDscan.cxx:408
 AliITSOnlineSPDscan.cxx:409
 AliITSOnlineSPDscan.cxx:410
 AliITSOnlineSPDscan.cxx:411
 AliITSOnlineSPDscan.cxx:412
 AliITSOnlineSPDscan.cxx:413
 AliITSOnlineSPDscan.cxx:414
 AliITSOnlineSPDscan.cxx:415
 AliITSOnlineSPDscan.cxx:416
 AliITSOnlineSPDscan.cxx:417
 AliITSOnlineSPDscan.cxx:418
 AliITSOnlineSPDscan.cxx:419
 AliITSOnlineSPDscan.cxx:420
 AliITSOnlineSPDscan.cxx:421
 AliITSOnlineSPDscan.cxx:422
 AliITSOnlineSPDscan.cxx:423
 AliITSOnlineSPDscan.cxx:424
 AliITSOnlineSPDscan.cxx:425
 AliITSOnlineSPDscan.cxx:426
 AliITSOnlineSPDscan.cxx:427
 AliITSOnlineSPDscan.cxx:428
 AliITSOnlineSPDscan.cxx:429
 AliITSOnlineSPDscan.cxx:430
 AliITSOnlineSPDscan.cxx:431
 AliITSOnlineSPDscan.cxx:432
 AliITSOnlineSPDscan.cxx:433
 AliITSOnlineSPDscan.cxx:434
 AliITSOnlineSPDscan.cxx:435
 AliITSOnlineSPDscan.cxx:436
 AliITSOnlineSPDscan.cxx:437
 AliITSOnlineSPDscan.cxx:438
 AliITSOnlineSPDscan.cxx:439
 AliITSOnlineSPDscan.cxx:440
 AliITSOnlineSPDscan.cxx:441
 AliITSOnlineSPDscan.cxx:442
 AliITSOnlineSPDscan.cxx:443
 AliITSOnlineSPDscan.cxx:444
 AliITSOnlineSPDscan.cxx:445
 AliITSOnlineSPDscan.cxx:446
 AliITSOnlineSPDscan.cxx:447
 AliITSOnlineSPDscan.cxx:448
 AliITSOnlineSPDscan.cxx:449
 AliITSOnlineSPDscan.cxx:450
 AliITSOnlineSPDscan.cxx:451
 AliITSOnlineSPDscan.cxx:452
 AliITSOnlineSPDscan.cxx:453
 AliITSOnlineSPDscan.cxx:454
 AliITSOnlineSPDscan.cxx:455
 AliITSOnlineSPDscan.cxx:456
 AliITSOnlineSPDscan.cxx:457
 AliITSOnlineSPDscan.cxx:458
 AliITSOnlineSPDscan.cxx:459
 AliITSOnlineSPDscan.cxx:460
 AliITSOnlineSPDscan.cxx:461
 AliITSOnlineSPDscan.cxx:462
 AliITSOnlineSPDscan.cxx:463
 AliITSOnlineSPDscan.cxx:464
 AliITSOnlineSPDscan.cxx:465
 AliITSOnlineSPDscan.cxx:466
 AliITSOnlineSPDscan.cxx:467
 AliITSOnlineSPDscan.cxx:468
 AliITSOnlineSPDscan.cxx:469
 AliITSOnlineSPDscan.cxx:470
 AliITSOnlineSPDscan.cxx:471
 AliITSOnlineSPDscan.cxx:472
 AliITSOnlineSPDscan.cxx:473
 AliITSOnlineSPDscan.cxx:474
 AliITSOnlineSPDscan.cxx:475
 AliITSOnlineSPDscan.cxx:476
 AliITSOnlineSPDscan.cxx:477
 AliITSOnlineSPDscan.cxx:478
 AliITSOnlineSPDscan.cxx:479
 AliITSOnlineSPDscan.cxx:480
 AliITSOnlineSPDscan.cxx:481
 AliITSOnlineSPDscan.cxx:482
 AliITSOnlineSPDscan.cxx:483
 AliITSOnlineSPDscan.cxx:484
 AliITSOnlineSPDscan.cxx:485
 AliITSOnlineSPDscan.cxx:486
 AliITSOnlineSPDscan.cxx:487
 AliITSOnlineSPDscan.cxx:488
 AliITSOnlineSPDscan.cxx:489
 AliITSOnlineSPDscan.cxx:490
 AliITSOnlineSPDscan.cxx:491
 AliITSOnlineSPDscan.cxx:492
 AliITSOnlineSPDscan.cxx:493
 AliITSOnlineSPDscan.cxx:494
 AliITSOnlineSPDscan.cxx:495
 AliITSOnlineSPDscan.cxx:496
 AliITSOnlineSPDscan.cxx:497