ROOT logo
/**************************************************************************
 * Copyright(c) 2008-2010, 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.                  *
 **************************************************************************/

/* $Id$ */

////////////////////////////////////////////////////////////////
// Author: A. Mastroserio                                     // 
// This class is used within the detector algorithm framework //
// to write and read FO scan data.                            //
////////////////////////////////////////////////////////////////

#include <TFile.h>
#include <Riostream.h>
#include <TSystem.h>
#include <TObjArray.h>
#include <TObjString.h>
#include <TArrayI.h>
#include <TIterator.h>
#include <TKey.h>
#include <TMath.h>
#include <TList.h>
#include "AliLog.h"
#include "AliITSOnlineSPDfoChipConfig.h"
#include "AliITSOnlineSPDfoChip.h"
#include "AliITSOnlineSPDfoInfo.h"
#include "AliITSOnlineSPDfo.h"


ClassImp(AliITSOnlineSPDfo)
//-----------------------------------------------
AliITSOnlineSPDfo::AliITSOnlineSPDfo():
fRunNr(0),
fNdacs(0),
fFileName(""),
fFile(0x0),
fInfo(0x0),
fDACnames(0x0),
fArray(0x0),
fCheckIndex(-1),
fIndex(-1),
fInitialConfiguration("")
{
// default constructor
} 

//-------------------------------------------------
AliITSOnlineSPDfo::AliITSOnlineSPDfo(TString inputfile, Int_t runNr, Int_t eqId):
fRunNr(runNr),
fNdacs(0),
fFileName(""),
fFile(0x0),
fInfo(0x0),
fDACnames(0x0),
fArray(0x0),
fCheckIndex(-1),
fIndex(-1),
fInitialConfiguration("")
{
 //
 // constructor 
 //   
    fFileName=Form("%i_%s%02i.root",runNr,inputfile.Data(),eqId);
    fFile = TFile::Open(fFileName.Data());
    fArray = new TObjArray();
    fDACnames = new THashList();
}
//--------------------------------------------------
AliITSOnlineSPDfo::AliITSOnlineSPDfo(const AliITSOnlineSPDfo &c):
fRunNr(c.fRunNr),
fNdacs(c.fNdacs),
fFileName(c.fFileName),
fFile(c.fFile),
fInfo(c.fInfo),
fDACnames(c.fDACnames),
fArray(c.fArray),
fCheckIndex(c.fCheckIndex),
fIndex(c.fIndex),
fInitialConfiguration(c.fInitialConfiguration)
{
  //
  //copy constructor
  //
}    
//--------------------------------------------------
void AliITSOnlineSPDfo::SetFile(TString inputfile)
{
  //
  // open the file where the data are
  //
  
 if(fFile) {
   fInfo = (AliITSOnlineSPDfoInfo *)fFile->Get("generalinfo");
   return; 
 } else {
   fFile = TFile::Open(inputfile.Data());
   if(!fFile) {
     Info("AliITSOnlineSPDfo::SetFile"," %s  not existing.... The scan info are not available....crash is expected \n",inputfile.Data());
     return;
    } else {
     fInfo = (AliITSOnlineSPDfoInfo *)fFile->Get("generalinfo");
     fNdacs = fInfo->GetNumDACindex();
   }
}

}

//------------------------------------------------------
void AliITSOnlineSPDfo::CreateOutputFile()
{
  //
  // Create the file (needed only in the DA ), will delete the previous one!
  //  
  if(fFile) Info("AliITSOnlineSPDfo::CreateOutputFile","removing previous file....\n");
   fFile = TFile::Open(fFileName.Data(),"RECREATE"); 
  
}
//------------------------------------------------------
void AliITSOnlineSPDfo::AddMeasurement(const TArrayS dac, Short_t measure[4], Int_t hs, Int_t chipId)
{
  /*
  // Here a single measurement is added to the chip container. 
  // A single measurement corresponds to a specific pixel-configuration output
  // in the Fast-OR chip. If N configurations are considered, then
  // the data structure is the following:
  //
  //                                          -> HS0_CHIP0 -> measure0[4]
  //                                         /                measure1[4]
  //                                        /                   ...
  //  fArray->At(i) =  DAC1-DAC2-DAC3-DAC4                    measureN[4]
  //                                        \
  //                                         \ 
  //                                          -> HS0_CHIP1 -> measure0[4]
  //                                                          measure1[4]
  //                                                             ....
  //                                                          measureN[4]
  //
  */

  AliITSOnlineSPDfoChipConfig *counts = new AliITSOnlineSPDfoChipConfig(measure);
  Int_t arrayelement = CheckDACEntry(dac);
  
  if(arrayelement< 0){
    TString dacname = CreateDACEntry(dac);
    TObjString *string = new TObjString(dacname.Data());
    fDACnames->Add(string);
     
    TObjArray *array = new TObjArray(60);
    AliITSOnlineSPDfoChip * chip = new AliITSOnlineSPDfoChip(dac.GetSize());
    chip->SetActiveHS(hs);
    chip->SetChipId(chipId); 
    for(Int_t i=0; i< dac.GetSize() ; i++) chip->SetDACParameter(i,dac.At(i));               
    chip->AddMeasurement(counts);
    array->AddAt(chip,hs*10+chipId);  
    fArray->AddLast(array); 
     
  } else {
    
    TObjArray *arr = (TObjArray*)fArray->At(arrayelement);  
    if(!arr->At(hs*10+chipId)){
      AliITSOnlineSPDfoChip * chip = new AliITSOnlineSPDfoChip(dac.GetSize());
      chip->SetActiveHS(hs);
      chip->SetChipId(chipId); 
      for(Int_t i=0; i< dac.GetSize() ; i++) chip->SetDACParameter(i,dac.At(i));               
      chip->AddMeasurement(counts);
      arr->AddAt(chip,hs*10+chipId);     
      
      } else {
      
      AliITSOnlineSPDfoChip *c = (AliITSOnlineSPDfoChip *)arr->At(hs*10+chipId);
      if(c)c->AddMeasurement(counts);    
    }   
  }
}
//---------------------------------------
Int_t AliITSOnlineSPDfo::CheckDACEntry(const TArrayS dac)
{
  //
  // Check if the set of dacs has been already added to the array
  // 
  
   
  TString name = CreateDACEntry(dac);
  
  if(!fDACnames) {
    Info("AliITSOnlineSPDfo::CheckDACEntry"," NO DAC name array is present, exiting.... \n");
    return -1;
  }
  
   Double_t c = 0;
  for(Int_t i=0; i< fNdacs; i++)  c+=dac.At(i)*TMath::Power(10,3*i);
  if(c==fCheckIndex) return fIndex;
   
  
 
   Int_t idx = -1;
   
  if(fDACnames->FindObject( name.Data() )) {
    idx = fDACnames->IndexOf( fDACnames->FindObject( name.Data() )  );
    fCheckIndex=0;
    for(Int_t i=0; i< fNdacs; i++) fCheckIndex+=dac.At(i)*TMath::Power(10,3*i);
    fIndex=idx;

  }
  return idx;

}
//_________________________________________________________
void AliITSOnlineSPDfo::WriteToFile()
{
  //
  //The array of DACS and all its content is written to file.
  // Here the general info on the FO calibration scan are 
  // written in the same file
  
  if(fDACnames->GetEntries() != fArray->GetEntries()) {
   printf("mismatch names-array. Exiting....");   
    return;
  }
  
  for(Int_t i=0; i< fDACnames->GetEntries(); i++){
  fFile->WriteObject(fArray->At(i),fDACnames->At(i)->GetName());
  }
  fFile->WriteTObject(fInfo,"generalinfo"); 
  fFile->Close();
  
}
//______________________________________________________

TString AliITSOnlineSPDfo::CreateDACEntry(const TArrayS dacs) const
{
  //
  // The string of DACs is build
  // 
  
  TString dacvalues;
  for(Int_t i=0; i<dacs.GetSize(); i++) dacvalues+=Form("-%i",dacs.At(i));
  dacvalues.Remove(0,1);
  return dacvalues;
 
}
//_____________________________________________________
TArrayI AliITSOnlineSPDfo::GetDACscanParams() const
{ 
  //
  // this method retrieves the DAC value range and its steps
  //
  TFile *f =0x0;
  if(fFile->IsOpen()) f = fFile;
  else f = TFile::Open(fFileName.Data());
  
  TArrayI dacs;
  if(f->GetNkeys() < 2) return dacs;
  dacs.Set(fNdacs*3);
  
  TArrayI min(fNdacs), max(fNdacs),step(fNdacs), check(fNdacs), refvalues(fNdacs);
  
  for(Int_t i=0; i< fNdacs ; i++) {
    min.AddAt(9999,i);
    max.AddAt(0,i);
    step.AddAt(0,i);
    check.AddAt(0,i);
  }
  
  
  TKey *key;
  TIter iter(f->GetListOfKeys());  
  while ((key = (TKey*)(iter.Next()))) {
    TString classname = key->GetClassName();
    if(classname.Contains("OnlineSPD")) break;
    
    TString values = key->GetName();
    Int_t *val = GetDACvalues(values,fNdacs); // the user has to delete it!
      
    for(Int_t i=0; i< fNdacs; i++) {
      if(val[i]<=min.At(i)) min.AddAt(val[i],i);
      if(val[i] >= max.At(i)) max.AddAt(val[i],i);
      // procedure to get the step size;
      if(!check.At(i)) { 
	refvalues.AddAt(val[i],i);
	check.AddAt(1,i);
      }
      if(step.At(i) ==0 && check.At(i)){
        if(val[i]!=refvalues.At(i)) step.AddAt(TMath::Abs(refvalues.At(i) - val[i]),i);
      }  
      // end procedure to get the step size 
    }   
    delete [] val;
  }

 
 
  for(Int_t i=0; i<fNdacs; i++) {
    dacs.AddAt(min.At(i),3*i);    
    dacs.AddAt(max.At(i),3*i+1); 
    dacs.AddAt(step.At(i),3*i+2); 
  }
 
  
  return dacs;     
}
//___________________________________________________________________
Int_t* AliITSOnlineSPDfo::GetDACvalues(TString s, const Int_t ndacs) const
{
  //
  // Translates the string of DACS values into an array of integers
  //
  
   Int_t *val = new Int_t[ndacs]; 
   
   s.ReplaceAll("-"," ");
   char *pEnd = Form("%s",s.Data());
   for(Int_t i=0; i< ndacs; i++) {
     val[i] = strtol(pEnd,&pEnd,10); // conversion from string to long
   }  
   return val;   
}

//___________________________________________________________________
Double_t* AliITSOnlineSPDfo::GetDACvaluesD(TString s, const Int_t ndacs) const 
{  
  //
  // Translates the string of DACS values into an array of doubles
  // (needed to fill the thnsparse)
  //
   Double_t *val = new Double_t[ndacs];
   Int_t *values =  GetDACvalues(s,ndacs);
   for(Int_t i=0; i< ndacs; i++) val[i] = (Double_t)values[i];
   delete [] values;
   
   return val;   
}
//-------------------------------------------------------------------
TArrayS AliITSOnlineSPDfo::CreateDACArray(const TArrayS dacs, const TArrayS dacId) const
{
  //
  // method to order the data according to the DAC index
  //
  
  TArrayS dacarray(dacs.GetSize());
  for(Int_t i=0; i<dacs.GetSize(); i++) {
    if(dacId.At(i)==kIdFOPOL) dacarray.AddAt(dacs.At(i),kFOPOL);
    else if(dacId.At(i)==kIdCONVPOL) dacarray.AddAt(dacs.At(i),kCONVPOL);
    else if(dacId.At(i)==kIdCOMPREF) dacarray.AddAt(dacs.At(i),kCOMPREF);
    else if(dacId.At(i)==kIdPreVTH) dacarray.AddAt(dacs.At(i),kPreVTH);
    else if(dacId.At(i)==kIdCGPOL) dacarray.AddAt(dacs.At(i),kCGPOL);
    else printf("new DAC included in the scan??\n");
    
  }
 
  return dacarray;
  
}
  
  
 AliITSOnlineSPDfo.cxx:1
 AliITSOnlineSPDfo.cxx:2
 AliITSOnlineSPDfo.cxx:3
 AliITSOnlineSPDfo.cxx:4
 AliITSOnlineSPDfo.cxx:5
 AliITSOnlineSPDfo.cxx:6
 AliITSOnlineSPDfo.cxx:7
 AliITSOnlineSPDfo.cxx:8
 AliITSOnlineSPDfo.cxx:9
 AliITSOnlineSPDfo.cxx:10
 AliITSOnlineSPDfo.cxx:11
 AliITSOnlineSPDfo.cxx:12
 AliITSOnlineSPDfo.cxx:13
 AliITSOnlineSPDfo.cxx:14
 AliITSOnlineSPDfo.cxx:15
 AliITSOnlineSPDfo.cxx:16
 AliITSOnlineSPDfo.cxx:17
 AliITSOnlineSPDfo.cxx:18
 AliITSOnlineSPDfo.cxx:19
 AliITSOnlineSPDfo.cxx:20
 AliITSOnlineSPDfo.cxx:21
 AliITSOnlineSPDfo.cxx:22
 AliITSOnlineSPDfo.cxx:23
 AliITSOnlineSPDfo.cxx:24
 AliITSOnlineSPDfo.cxx:25
 AliITSOnlineSPDfo.cxx:26
 AliITSOnlineSPDfo.cxx:27
 AliITSOnlineSPDfo.cxx:28
 AliITSOnlineSPDfo.cxx:29
 AliITSOnlineSPDfo.cxx:30
 AliITSOnlineSPDfo.cxx:31
 AliITSOnlineSPDfo.cxx:32
 AliITSOnlineSPDfo.cxx:33
 AliITSOnlineSPDfo.cxx:34
 AliITSOnlineSPDfo.cxx:35
 AliITSOnlineSPDfo.cxx:36
 AliITSOnlineSPDfo.cxx:37
 AliITSOnlineSPDfo.cxx:38
 AliITSOnlineSPDfo.cxx:39
 AliITSOnlineSPDfo.cxx:40
 AliITSOnlineSPDfo.cxx:41
 AliITSOnlineSPDfo.cxx:42
 AliITSOnlineSPDfo.cxx:43
 AliITSOnlineSPDfo.cxx:44
 AliITSOnlineSPDfo.cxx:45
 AliITSOnlineSPDfo.cxx:46
 AliITSOnlineSPDfo.cxx:47
 AliITSOnlineSPDfo.cxx:48
 AliITSOnlineSPDfo.cxx:49
 AliITSOnlineSPDfo.cxx:50
 AliITSOnlineSPDfo.cxx:51
 AliITSOnlineSPDfo.cxx:52
 AliITSOnlineSPDfo.cxx:53
 AliITSOnlineSPDfo.cxx:54
 AliITSOnlineSPDfo.cxx:55
 AliITSOnlineSPDfo.cxx:56
 AliITSOnlineSPDfo.cxx:57
 AliITSOnlineSPDfo.cxx:58
 AliITSOnlineSPDfo.cxx:59
 AliITSOnlineSPDfo.cxx:60
 AliITSOnlineSPDfo.cxx:61
 AliITSOnlineSPDfo.cxx:62
 AliITSOnlineSPDfo.cxx:63
 AliITSOnlineSPDfo.cxx:64
 AliITSOnlineSPDfo.cxx:65
 AliITSOnlineSPDfo.cxx:66
 AliITSOnlineSPDfo.cxx:67
 AliITSOnlineSPDfo.cxx:68
 AliITSOnlineSPDfo.cxx:69
 AliITSOnlineSPDfo.cxx:70
 AliITSOnlineSPDfo.cxx:71
 AliITSOnlineSPDfo.cxx:72
 AliITSOnlineSPDfo.cxx:73
 AliITSOnlineSPDfo.cxx:74
 AliITSOnlineSPDfo.cxx:75
 AliITSOnlineSPDfo.cxx:76
 AliITSOnlineSPDfo.cxx:77
 AliITSOnlineSPDfo.cxx:78
 AliITSOnlineSPDfo.cxx:79
 AliITSOnlineSPDfo.cxx:80
 AliITSOnlineSPDfo.cxx:81
 AliITSOnlineSPDfo.cxx:82
 AliITSOnlineSPDfo.cxx:83
 AliITSOnlineSPDfo.cxx:84
 AliITSOnlineSPDfo.cxx:85
 AliITSOnlineSPDfo.cxx:86
 AliITSOnlineSPDfo.cxx:87
 AliITSOnlineSPDfo.cxx:88
 AliITSOnlineSPDfo.cxx:89
 AliITSOnlineSPDfo.cxx:90
 AliITSOnlineSPDfo.cxx:91
 AliITSOnlineSPDfo.cxx:92
 AliITSOnlineSPDfo.cxx:93
 AliITSOnlineSPDfo.cxx:94
 AliITSOnlineSPDfo.cxx:95
 AliITSOnlineSPDfo.cxx:96
 AliITSOnlineSPDfo.cxx:97
 AliITSOnlineSPDfo.cxx:98
 AliITSOnlineSPDfo.cxx:99
 AliITSOnlineSPDfo.cxx:100
 AliITSOnlineSPDfo.cxx:101
 AliITSOnlineSPDfo.cxx:102
 AliITSOnlineSPDfo.cxx:103
 AliITSOnlineSPDfo.cxx:104
 AliITSOnlineSPDfo.cxx:105
 AliITSOnlineSPDfo.cxx:106
 AliITSOnlineSPDfo.cxx:107
 AliITSOnlineSPDfo.cxx:108
 AliITSOnlineSPDfo.cxx:109
 AliITSOnlineSPDfo.cxx:110
 AliITSOnlineSPDfo.cxx:111
 AliITSOnlineSPDfo.cxx:112
 AliITSOnlineSPDfo.cxx:113
 AliITSOnlineSPDfo.cxx:114
 AliITSOnlineSPDfo.cxx:115
 AliITSOnlineSPDfo.cxx:116
 AliITSOnlineSPDfo.cxx:117
 AliITSOnlineSPDfo.cxx:118
 AliITSOnlineSPDfo.cxx:119
 AliITSOnlineSPDfo.cxx:120
 AliITSOnlineSPDfo.cxx:121
 AliITSOnlineSPDfo.cxx:122
 AliITSOnlineSPDfo.cxx:123
 AliITSOnlineSPDfo.cxx:124
 AliITSOnlineSPDfo.cxx:125
 AliITSOnlineSPDfo.cxx:126
 AliITSOnlineSPDfo.cxx:127
 AliITSOnlineSPDfo.cxx:128
 AliITSOnlineSPDfo.cxx:129
 AliITSOnlineSPDfo.cxx:130
 AliITSOnlineSPDfo.cxx:131
 AliITSOnlineSPDfo.cxx:132
 AliITSOnlineSPDfo.cxx:133
 AliITSOnlineSPDfo.cxx:134
 AliITSOnlineSPDfo.cxx:135
 AliITSOnlineSPDfo.cxx:136
 AliITSOnlineSPDfo.cxx:137
 AliITSOnlineSPDfo.cxx:138
 AliITSOnlineSPDfo.cxx:139
 AliITSOnlineSPDfo.cxx:140
 AliITSOnlineSPDfo.cxx:141
 AliITSOnlineSPDfo.cxx:142
 AliITSOnlineSPDfo.cxx:143
 AliITSOnlineSPDfo.cxx:144
 AliITSOnlineSPDfo.cxx:145
 AliITSOnlineSPDfo.cxx:146
 AliITSOnlineSPDfo.cxx:147
 AliITSOnlineSPDfo.cxx:148
 AliITSOnlineSPDfo.cxx:149
 AliITSOnlineSPDfo.cxx:150
 AliITSOnlineSPDfo.cxx:151
 AliITSOnlineSPDfo.cxx:152
 AliITSOnlineSPDfo.cxx:153
 AliITSOnlineSPDfo.cxx:154
 AliITSOnlineSPDfo.cxx:155
 AliITSOnlineSPDfo.cxx:156
 AliITSOnlineSPDfo.cxx:157
 AliITSOnlineSPDfo.cxx:158
 AliITSOnlineSPDfo.cxx:159
 AliITSOnlineSPDfo.cxx:160
 AliITSOnlineSPDfo.cxx:161
 AliITSOnlineSPDfo.cxx:162
 AliITSOnlineSPDfo.cxx:163
 AliITSOnlineSPDfo.cxx:164
 AliITSOnlineSPDfo.cxx:165
 AliITSOnlineSPDfo.cxx:166
 AliITSOnlineSPDfo.cxx:167
 AliITSOnlineSPDfo.cxx:168
 AliITSOnlineSPDfo.cxx:169
 AliITSOnlineSPDfo.cxx:170
 AliITSOnlineSPDfo.cxx:171
 AliITSOnlineSPDfo.cxx:172
 AliITSOnlineSPDfo.cxx:173
 AliITSOnlineSPDfo.cxx:174
 AliITSOnlineSPDfo.cxx:175
 AliITSOnlineSPDfo.cxx:176
 AliITSOnlineSPDfo.cxx:177
 AliITSOnlineSPDfo.cxx:178
 AliITSOnlineSPDfo.cxx:179
 AliITSOnlineSPDfo.cxx:180
 AliITSOnlineSPDfo.cxx:181
 AliITSOnlineSPDfo.cxx:182
 AliITSOnlineSPDfo.cxx:183
 AliITSOnlineSPDfo.cxx:184
 AliITSOnlineSPDfo.cxx:185
 AliITSOnlineSPDfo.cxx:186
 AliITSOnlineSPDfo.cxx:187
 AliITSOnlineSPDfo.cxx:188
 AliITSOnlineSPDfo.cxx:189
 AliITSOnlineSPDfo.cxx:190
 AliITSOnlineSPDfo.cxx:191
 AliITSOnlineSPDfo.cxx:192
 AliITSOnlineSPDfo.cxx:193
 AliITSOnlineSPDfo.cxx:194
 AliITSOnlineSPDfo.cxx:195
 AliITSOnlineSPDfo.cxx:196
 AliITSOnlineSPDfo.cxx:197
 AliITSOnlineSPDfo.cxx:198
 AliITSOnlineSPDfo.cxx:199
 AliITSOnlineSPDfo.cxx:200
 AliITSOnlineSPDfo.cxx:201
 AliITSOnlineSPDfo.cxx:202
 AliITSOnlineSPDfo.cxx:203
 AliITSOnlineSPDfo.cxx:204
 AliITSOnlineSPDfo.cxx:205
 AliITSOnlineSPDfo.cxx:206
 AliITSOnlineSPDfo.cxx:207
 AliITSOnlineSPDfo.cxx:208
 AliITSOnlineSPDfo.cxx:209
 AliITSOnlineSPDfo.cxx:210
 AliITSOnlineSPDfo.cxx:211
 AliITSOnlineSPDfo.cxx:212
 AliITSOnlineSPDfo.cxx:213
 AliITSOnlineSPDfo.cxx:214
 AliITSOnlineSPDfo.cxx:215
 AliITSOnlineSPDfo.cxx:216
 AliITSOnlineSPDfo.cxx:217
 AliITSOnlineSPDfo.cxx:218
 AliITSOnlineSPDfo.cxx:219
 AliITSOnlineSPDfo.cxx:220
 AliITSOnlineSPDfo.cxx:221
 AliITSOnlineSPDfo.cxx:222
 AliITSOnlineSPDfo.cxx:223
 AliITSOnlineSPDfo.cxx:224
 AliITSOnlineSPDfo.cxx:225
 AliITSOnlineSPDfo.cxx:226
 AliITSOnlineSPDfo.cxx:227
 AliITSOnlineSPDfo.cxx:228
 AliITSOnlineSPDfo.cxx:229
 AliITSOnlineSPDfo.cxx:230
 AliITSOnlineSPDfo.cxx:231
 AliITSOnlineSPDfo.cxx:232
 AliITSOnlineSPDfo.cxx:233
 AliITSOnlineSPDfo.cxx:234
 AliITSOnlineSPDfo.cxx:235
 AliITSOnlineSPDfo.cxx:236
 AliITSOnlineSPDfo.cxx:237
 AliITSOnlineSPDfo.cxx:238
 AliITSOnlineSPDfo.cxx:239
 AliITSOnlineSPDfo.cxx:240
 AliITSOnlineSPDfo.cxx:241
 AliITSOnlineSPDfo.cxx:242
 AliITSOnlineSPDfo.cxx:243
 AliITSOnlineSPDfo.cxx:244
 AliITSOnlineSPDfo.cxx:245
 AliITSOnlineSPDfo.cxx:246
 AliITSOnlineSPDfo.cxx:247
 AliITSOnlineSPDfo.cxx:248
 AliITSOnlineSPDfo.cxx:249
 AliITSOnlineSPDfo.cxx:250
 AliITSOnlineSPDfo.cxx:251
 AliITSOnlineSPDfo.cxx:252
 AliITSOnlineSPDfo.cxx:253
 AliITSOnlineSPDfo.cxx:254
 AliITSOnlineSPDfo.cxx:255
 AliITSOnlineSPDfo.cxx:256
 AliITSOnlineSPDfo.cxx:257
 AliITSOnlineSPDfo.cxx:258
 AliITSOnlineSPDfo.cxx:259
 AliITSOnlineSPDfo.cxx:260
 AliITSOnlineSPDfo.cxx:261
 AliITSOnlineSPDfo.cxx:262
 AliITSOnlineSPDfo.cxx:263
 AliITSOnlineSPDfo.cxx:264
 AliITSOnlineSPDfo.cxx:265
 AliITSOnlineSPDfo.cxx:266
 AliITSOnlineSPDfo.cxx:267
 AliITSOnlineSPDfo.cxx:268
 AliITSOnlineSPDfo.cxx:269
 AliITSOnlineSPDfo.cxx:270
 AliITSOnlineSPDfo.cxx:271
 AliITSOnlineSPDfo.cxx:272
 AliITSOnlineSPDfo.cxx:273
 AliITSOnlineSPDfo.cxx:274
 AliITSOnlineSPDfo.cxx:275
 AliITSOnlineSPDfo.cxx:276
 AliITSOnlineSPDfo.cxx:277
 AliITSOnlineSPDfo.cxx:278
 AliITSOnlineSPDfo.cxx:279
 AliITSOnlineSPDfo.cxx:280
 AliITSOnlineSPDfo.cxx:281
 AliITSOnlineSPDfo.cxx:282
 AliITSOnlineSPDfo.cxx:283
 AliITSOnlineSPDfo.cxx:284
 AliITSOnlineSPDfo.cxx:285
 AliITSOnlineSPDfo.cxx:286
 AliITSOnlineSPDfo.cxx:287
 AliITSOnlineSPDfo.cxx:288
 AliITSOnlineSPDfo.cxx:289
 AliITSOnlineSPDfo.cxx:290
 AliITSOnlineSPDfo.cxx:291
 AliITSOnlineSPDfo.cxx:292
 AliITSOnlineSPDfo.cxx:293
 AliITSOnlineSPDfo.cxx:294
 AliITSOnlineSPDfo.cxx:295
 AliITSOnlineSPDfo.cxx:296
 AliITSOnlineSPDfo.cxx:297
 AliITSOnlineSPDfo.cxx:298
 AliITSOnlineSPDfo.cxx:299
 AliITSOnlineSPDfo.cxx:300
 AliITSOnlineSPDfo.cxx:301
 AliITSOnlineSPDfo.cxx:302
 AliITSOnlineSPDfo.cxx:303
 AliITSOnlineSPDfo.cxx:304
 AliITSOnlineSPDfo.cxx:305
 AliITSOnlineSPDfo.cxx:306
 AliITSOnlineSPDfo.cxx:307
 AliITSOnlineSPDfo.cxx:308
 AliITSOnlineSPDfo.cxx:309
 AliITSOnlineSPDfo.cxx:310
 AliITSOnlineSPDfo.cxx:311
 AliITSOnlineSPDfo.cxx:312
 AliITSOnlineSPDfo.cxx:313
 AliITSOnlineSPDfo.cxx:314
 AliITSOnlineSPDfo.cxx:315
 AliITSOnlineSPDfo.cxx:316
 AliITSOnlineSPDfo.cxx:317
 AliITSOnlineSPDfo.cxx:318
 AliITSOnlineSPDfo.cxx:319
 AliITSOnlineSPDfo.cxx:320
 AliITSOnlineSPDfo.cxx:321
 AliITSOnlineSPDfo.cxx:322
 AliITSOnlineSPDfo.cxx:323
 AliITSOnlineSPDfo.cxx:324
 AliITSOnlineSPDfo.cxx:325
 AliITSOnlineSPDfo.cxx:326
 AliITSOnlineSPDfo.cxx:327
 AliITSOnlineSPDfo.cxx:328
 AliITSOnlineSPDfo.cxx:329
 AliITSOnlineSPDfo.cxx:330
 AliITSOnlineSPDfo.cxx:331
 AliITSOnlineSPDfo.cxx:332
 AliITSOnlineSPDfo.cxx:333
 AliITSOnlineSPDfo.cxx:334
 AliITSOnlineSPDfo.cxx:335
 AliITSOnlineSPDfo.cxx:336
 AliITSOnlineSPDfo.cxx:337
 AliITSOnlineSPDfo.cxx:338
 AliITSOnlineSPDfo.cxx:339
 AliITSOnlineSPDfo.cxx:340
 AliITSOnlineSPDfo.cxx:341
 AliITSOnlineSPDfo.cxx:342
 AliITSOnlineSPDfo.cxx:343
 AliITSOnlineSPDfo.cxx:344
 AliITSOnlineSPDfo.cxx:345
 AliITSOnlineSPDfo.cxx:346
 AliITSOnlineSPDfo.cxx:347
 AliITSOnlineSPDfo.cxx:348
 AliITSOnlineSPDfo.cxx:349
 AliITSOnlineSPDfo.cxx:350
 AliITSOnlineSPDfo.cxx:351
 AliITSOnlineSPDfo.cxx:352
 AliITSOnlineSPDfo.cxx:353
 AliITSOnlineSPDfo.cxx:354
 AliITSOnlineSPDfo.cxx:355
 AliITSOnlineSPDfo.cxx:356
 AliITSOnlineSPDfo.cxx:357
 AliITSOnlineSPDfo.cxx:358
 AliITSOnlineSPDfo.cxx:359
 AliITSOnlineSPDfo.cxx:360
 AliITSOnlineSPDfo.cxx:361
 AliITSOnlineSPDfo.cxx:362
 AliITSOnlineSPDfo.cxx:363
 AliITSOnlineSPDfo.cxx:364
 AliITSOnlineSPDfo.cxx:365
 AliITSOnlineSPDfo.cxx:366