ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

//-----------------------------------------------------------------
//           Implementation of the RunTag class
//   This is the class to deal with the tags in the run level
//   Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
//-----------------------------------------------------------------

#include <stdlib.h>
#include "AliRunTag.h"
#include "AliDetectorTag.h"
#include "AliEventTag.h"

ClassImp(AliRunTag)

//___________________________________________________________________________
  AliRunTag::AliRunTag() :
    TObject(),
    fAliceRunId(-1),
    fAliceMagneticField(0.0),
    fAliceDipoleField(0.0),
    fAliceRunStartTime(0),
    fAliceRunStopTime(0),
    fAlirootVersion(0),
    fRootVersion(0),
    fGeant3Version(0),
    fLHCPeriod(0),
    fRecPass(0),
    fProductionName(0),
    fAliceRunValidated(0),
    fAliceRunGlobalQuality(0),
    fAliceBeamEnergy(0.0),
    fAliceBeamType(0),
    fAliceCalibrationVersion(0),
    fAliceDataType(0),
    //    fNumEvents(0),
    fNumFiles(0),
    fBeamTriggers(0),
    fCollisionTriggers(0),
    fEmptyTriggers(0),
    fASideTriggers(0),
    fCSideTriggers(0),
    fHMTriggers(0),
    fMuonTriggers(0),
    fCollisionRate(0.0),
    fMeanVertex(0.0),
    fVertexQuality(0.0),
    fNumDetectors(0),
    fFileTags(100),
    fDetectorTag(),
    fLHCTag(), 
    fActiveTriggerClasses(""),
    fQA(),  
    fQALength(0), 
    fQAArray(NULL), 
    fESLength(0), 
    fEventSpecies(NULL)
{
  //Default constructor
}

//___________________________________________________________________________
AliRunTag::~AliRunTag() {
  //Destructor
  //  fEventTag.Delete();
  if ( fQAArray ) 
    delete [] fQAArray ; 
  if ( fEventSpecies )
    delete [] fEventSpecies ; 
  fFileTags.Delete();
}

//___________________________________________________________________________
AliRunTag::AliRunTag(const AliRunTag& tag):
TObject(),
fAliceRunId(tag.fAliceRunId),
fAliceMagneticField(tag.fAliceMagneticField),
fAliceDipoleField(tag.fAliceDipoleField),
fAliceRunStartTime(tag.fAliceRunStartTime),
fAliceRunStopTime(tag.fAliceRunStopTime),
fAlirootVersion(tag.fAlirootVersion),
fRootVersion(tag.fRootVersion),
fGeant3Version(tag.fGeant3Version),
fLHCPeriod(tag.fLHCPeriod),
fRecPass(tag.fRecPass),
fProductionName(tag.fProductionName),
fAliceRunValidated(tag.fAliceRunValidated),
fAliceRunGlobalQuality(tag.fAliceRunGlobalQuality),
fAliceBeamEnergy(tag.fAliceBeamEnergy),
fAliceBeamType(tag.fAliceBeamType),
fAliceCalibrationVersion(tag.fAliceCalibrationVersion),
fAliceDataType(tag.fAliceDataType),
//fNumEvents(tag.fNumEvents),
fNumFiles(0),
fBeamTriggers(tag.fBeamTriggers),
fCollisionTriggers(tag.fCollisionTriggers),
fEmptyTriggers(tag.fEmptyTriggers),
fASideTriggers(tag.fASideTriggers),
fCSideTriggers(tag.fCSideTriggers),
fHMTriggers(tag.fHMTriggers),
fMuonTriggers(tag.fMuonTriggers),
fCollisionRate(tag.fCollisionRate),
fMeanVertex(tag.fMeanVertex),
fVertexQuality(tag.fVertexQuality),
fNumDetectors(tag.fNumDetectors),
fFileTags(100),
fDetectorTag(tag.fDetectorTag),
fLHCTag(tag.fLHCTag), 
fActiveTriggerClasses(tag.fActiveTriggerClasses),
fQA(tag.fQA),
fQALength(tag.fQALength),
fQAArray(NULL), 
fESLength(tag.fESLength),
fEventSpecies(NULL)
{
  //copy constructor
  if (fQALength == 0 ) 
    fQAArray = NULL ; 
  else {
    fQAArray = new ULong_t[fQALength] ; 
    memcpy(fQAArray, tag.fQAArray, fQALength*sizeof(ULong_t)) ;
  }
  if (fESLength == 0 ) 
    fEventSpecies = NULL ; 
  else {
    fEventSpecies = new Bool_t[fESLength] ; 
    memcpy(fEventSpecies, tag.fEventSpecies, fESLength*sizeof(Bool_t)) ;
  }
  for (int ifl=0; ifl<tag.fNumFiles; ifl++) {
    AddFileTag(new AliFileTag(*tag.GetFileTag(ifl)));
  }
    

}

//___________________________________________________________________________
AliRunTag& AliRunTag::operator = (const AliRunTag& tag) {
//assignment operator
  if(&tag != this) {
    fAliceRunId               = tag.fAliceRunId ; 
    fAliceMagneticField       = tag.fAliceMagneticField ;
    fAliceDipoleField         = tag.fAliceDipoleField ;
    fAliceRunStartTime        = tag.fAliceRunStartTime ; 
    fAliceRunStopTime         = tag.fAliceRunStopTime ; 
    fAlirootVersion           = tag.fAlirootVersion ; 
    fRootVersion              = tag.fRootVersion ;
    fGeant3Version            = tag.fGeant3Version ; 
    fLHCPeriod                = tag.fLHCPeriod ; 
    fRecPass                  = tag.fRecPass ; 
    fProductionName           = tag.fProductionName ; 
    fAliceRunValidated        = tag.fAliceRunValidated ; 
    fAliceRunGlobalQuality    = tag.fAliceRunGlobalQuality ; 
    fAliceBeamEnergy          = tag.fAliceBeamEnergy ;
    fAliceBeamType            = tag.fAliceBeamType ; 
    fAliceCalibrationVersion  = tag.fAliceCalibrationVersion ; 
    fAliceDataType            = tag.fAliceDataType ; 
    //    fNumEvents                = tag.fNumEvents ;
    fBeamTriggers             = tag.fBeamTriggers;
    fCollisionTriggers	      = tag.fCollisionTriggers;
    fEmptyTriggers	      = tag.fEmptyTriggers;
    fASideTriggers	      = tag.fASideTriggers;
    fCSideTriggers	      = tag.fCSideTriggers;
    fHMTriggers               = tag.fHMTriggers;
    fMuonTriggers             = tag.fMuonTriggers;
    fCollisionRate	      = tag.fCollisionRate;
    fMeanVertex		      = tag.fMeanVertex;
    fVertexQuality	      = tag.fVertexQuality;
    fNumDetectors             = tag.fNumDetectors ; 
    fDetectorTag              = tag.fDetectorTag ;
    fLHCTag                   = tag.fLHCTag ;  
    fActiveTriggerClasses     = tag.fActiveTriggerClasses;
    fQA                       = tag.fQA ;      
    fQALength                 = tag.fQALength ; 
    if (fQAArray) 
      delete [] fQAArray ; 
    if (fQALength == 0 ) 
      fQAArray = NULL ; 
    else {
      fQAArray = new ULong_t[fQALength] ; 
      memcpy(fQAArray, tag.fQAArray, fQALength*sizeof(ULong_t)) ;
    }
    fESLength                 = tag.fESLength ; 
    if (fEventSpecies)
      delete [] fEventSpecies ; 
    if (fESLength == 0 ) 
      fEventSpecies = NULL ; 
    else {
      fEventSpecies = new Bool_t[fESLength] ; 
      memcpy(fEventSpecies, tag.fEventSpecies, fESLength*sizeof(Bool_t)) ;
    }
    for (int ifl=0; ifl<tag.fNumFiles; ifl++) {
      AddFileTag(new AliFileTag(*tag.GetFileTag(ifl)));
    }
//     for (int ifile=0; ifile<tag.GetFileTags()->GetEntries(); ifile++)
//       AddFileTag(*((AliFileTag *) tag.GetFileTags()->At(ifile)));
  }
  return *this ; 
}

//___________________________________________________________________________
Bool_t AliRunTag::Add(const AliRunTag* tag) 
{
  // merge two pieces
  if (fAliceRunId==-1) { // empty
    *this = *tag;
    return kTRUE;
  }
  if (fAliceRunId != tag->fAliceRunId) {    
    AliWarning(Form("Run IDs are different: %d %d",fAliceRunId,tag->fAliceRunId)); 
    return kFALSE;
  }
  // real merging
  fBeamTriggers       += tag->fBeamTriggers;
  fCollisionTriggers  += tag->fCollisionTriggers;
  fEmptyTriggers      += tag->fEmptyTriggers;
  fASideTriggers      += tag->fASideTriggers;
  fCSideTriggers      += tag->fCSideTriggers;
  fHMTriggers         += tag->fHMTriggers;
  fMuonTriggers       += tag->fMuonTriggers;
  AliFileTag* eftag = 0;
  //
  for (int i=0;i<tag->fNumFiles;i++) {
    AliFileTag* tftag = (AliFileTag*)tag->GetFileTag(i);
    if (fNumFiles>0) eftag = (AliFileTag*)GetFileTag(fNumFiles-1);
    else { 
      eftag = new AliFileTag(); 
      eftag->SetMD5("");
      eftag->SetTURL("");
      eftag->SetSize(0);
      AddFileTag(eftag);
    }
    int nev = tftag->GetNEvents();
    for (int j=0;j<nev;j++) {
      AliEventTag* tge = (AliEventTag*)tftag->GetEventTag(j);
      if (tge) eftag->AddEventTag(*tge);
    }
  }
  
  return kTRUE; 
}

//___________________________________________________________________________
void AliRunTag::CopyStandardContent(AliRunTag *oldtag) {
  //function that copies the run, lhc and detector levels
  SetRunId(oldtag->GetRunId());
  SetMagneticField(oldtag->GetMagneticField());
  SetDipoleField(oldtag->GetDipoleField());
  SetRunStartTime(oldtag->GetRunStartTime());
  SetRunStopTime(oldtag->GetRunStopTime());
  SetAlirootVersion(oldtag->GetAlirootVersion());
  SetRootVersion(oldtag->GetRootVersion());
  SetGeant3Version(oldtag->GetGeant3Version());
  SetLHCPeriod(oldtag->GetLHCPeriod());
  SetReconstructionPass(oldtag->GetReconstructionPass());
  SetProductionName(oldtag->GetProductionName());
  SetRunValidation(oldtag->GetRunValidation());
  SetRunQuality(oldtag->GetRunQuality());
  SetBeamEnergy(oldtag->GetBeamEnergy());
  SetBeamType(oldtag->GetBeamType());
  SetCalibVersion(oldtag->GetCalibVersion());
  SetDataType(oldtag->GetDataType());
  SetBeamTriggers(oldtag->GetBeamTriggers());
  SetCollisionTriggers(oldtag->GetCollisionTriggers());
  SetEmptyTriggers(oldtag->GetEmptyTriggers());
  SetASideTriggers(oldtag->GetASideTriggers());
  SetCSideTriggers(oldtag->GetCSideTriggers());
  SetHMTriggers(oldtag->GetHMTriggers());
  SetMuonTriggers(oldtag->GetMuonTriggers());
  SetCollisionRate(oldtag->GetCollisionRate());
  SetMeanVertex(oldtag->GetMeanVertex());
  SetVertexQuality(oldtag->GetVertexQuality());
  SetLHCTag(oldtag->GetLHCTag()->GetLuminosity(),oldtag->GetLHCTag()->GetLHCState());
  SetDetectorTag(oldtag->GetDetectorTags()->GetIntDetectorMaskDAQ(), oldtag->GetDetectorTags()->GetIntDetectorMaskReco());
  SetActiveTriggerClasses(oldtag->GetActiveTriggerClasses());
  SetQA(*(oldtag->GetQA())) ;  	
  SetQAArray(oldtag->GetQAArray(), oldtag->GetQALength()) ;  
  SetEventSpecies(oldtag->GetEventSpecies(), oldtag->GetESLength()) ;  
  for (int ifile=0; ifile<oldtag->GetNFiles(); ifile++) {
    AliFileTag *ntag = new AliFileTag();
    ntag->CopyFileInfo((const AliFileTag &) *(oldtag->GetFileTag(ifile)));
    AddFileTag(ntag);
  }
}

void AliRunTag::UpdateFromRunTable(AliRunTag *tabtag)
{
  SetBeamTriggers(tabtag->GetBeamTriggers());
  SetCollisionTriggers(tabtag->GetCollisionTriggers());
  SetEmptyTriggers(tabtag->GetEmptyTriggers());
  SetASideTriggers(tabtag->GetASideTriggers());
  SetCSideTriggers(tabtag->GetCSideTriggers());
  SetHMTriggers(tabtag->GetHMTriggers());
  SetMuonTriggers(tabtag->GetMuonTriggers());
  SetCollisionRate(tabtag->GetCollisionRate());
  SetMeanVertex(tabtag->GetMeanVertex());
  SetVertexQuality(tabtag->GetVertexQuality());
  SetRunQuality(tabtag->GetRunQuality());
  fLHCTag.UpdateFromRunTable(*tabtag->GetLHCTag());
  fDetectorTag.UpdateFromRunTable(*tabtag->GetDetectorTags());
}

//___________________________________________________________________________
void AliRunTag::SetQAArray(ULong_t * qa, Int_t qalength) {
  //Setter for the qa bits 
  if (qa && qalength > 0) {
    fQALength = qalength ; 
    if (fQAArray) 
      delete [] fQAArray ; 
    fQAArray = new ULong_t[qalength] ; 
    memcpy(fQAArray, qa, qalength*sizeof(ULong_t)) ;
  }
}

//___________________________________________________________________________
void AliRunTag::SetEventSpecies(Bool_t * es, Int_t eslength) {
  //setter for the eventspecices 
  if (es && eslength >0 ) {
    fESLength = eslength ; 
    if (fEventSpecies) 
      delete [] fEventSpecies ; 
    fEventSpecies = new Bool_t[eslength] ;
    memcpy(fEventSpecies, es, eslength*sizeof(Bool_t)) ; 
  }
}


//___________________________________________________________________________
void AliRunTag::SetLHCTag(Float_t lumin, TString type) {
  //Setter for the LHC tags
  fLHCTag.SetLuminosity(lumin);
  fLHCTag.SetLHCState(type);
}

//___________________________________________________________________________
void AliRunTag::SetDetectorTag(UInt_t mask, UInt_t maskReco) {
  //Setter for the detector tags
  fDetectorTag.SetDetectorMaskDAQ(mask);
  if (maskReco == 0)
    fDetectorTag.SetDetectorMaskReco(mask);
  else
    fDetectorTag.SetDetectorMaskReco(maskReco);

  int ndet = 0;
  for (int iter=0; iter<32; iter++)  
    ndet += (mask & (1 << iter)) > 0;
  
  fNumDetectors = ndet;
}

//___________________________________________________________________________
void AliRunTag::AddEventTag(const AliEventTag & EvTag) {
  //Adds an entry to the event tag TClonesArray
  ((AliFileTag *) fFileTags[fNumFiles-1])->AddEventTag(EvTag);
  //  new(fEventTag[fNumEvents++]) AliEventTag(EvTag);
}

void AliRunTag::AddFileTag(AliFileTag *t) {
  //Adds an entry for each file tag
  if (fNumFiles == fFileTags.GetSize()-1) fFileTags.Expand(fFileTags.GetSize()*2);
  //  new(fFileTags[fNumFiles++]) AliFileTag(t);
  fFileTags[fNumFiles++] = t;
}

//___________________________________________________________________________
void AliRunTag::Clear(const char *) {
  //Resets the number of events and detectors
  //  fEventTag.Delete();
  //  fNumEvents = 0;
  fFileTags.Delete();
  fNumFiles = 0;
  if ( fQAArray ) {
    delete [] fQAArray ;
    fQAArray = 0x0;
  } 
  fQALength=0;
  if ( fEventSpecies ) {
    delete [] fEventSpecies ;
    fEventSpecies = 0x0;
  } 
  fESLength=0;
}

const AliEventTag* AliRunTag::GetEventTag(int evt) const
{
  int curev = evt;
  int curf = 0;

  if (evt >= GetNEvents()) return 0;
 
  while (curev >= ((AliFileTag *) fFileTags[curf])->GetNEvents()) {
    curev -= ((AliFileTag *) fFileTags[curf])->GetNEvents();
    curf++;
  }
  return ((AliFileTag *) fFileTags[curf])->GetEventTag(curev);
}

AliFileTag *AliRunTag::GetFileTagForEvent(int evt) 
{
  // Returns FileTag in which the given event is
  int curev = evt;
  int curf = 0;

  if (evt >= GetNEvents()) return 0;
 
  while (curev >= ((AliFileTag *) fFileTags[curf])->GetNEvents()) {
    curev -= ((AliFileTag *) fFileTags[curf])->GetNEvents();
    curf++;
  }
  return (AliFileTag *) fFileTags[curf];
}

Int_t       AliRunTag::GetNEvents() const
{
  Int_t evtot = 0;
  for (int iter=0; iter<fNumFiles; iter++)
    evtot += ((AliFileTag *) fFileTags[iter])->GetNEvents();

  return evtot;
}

Int_t      AliRunTag::GetFileId(const char *guid)
{
  for (int iter=0; iter<fNumFiles; iter++) {
    if (!strcmp(((AliFileTag *) fFileTags[iter])->GetGUID(), guid))
      return iter;
  }
  return -1;
}

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