ROOT logo
/**************************************************************************
 * Author: Panos Christakoglou.                                           *
 * 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$ */

//-----------------------------------------------------------------
//           AliTagCreator class
//   This is the class to deal with the tag creation (post process)
//   Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
//-----------------------------------------------------------------

//ROOT
#include <Riostream.h>
#include <TFile.h>
#include <TString.h>
#include <TTree.h>
#include <TSystem.h>
#include <TChain.h>
#include <TLorentzVector.h>

//ROOT-AliEn
#include <TGrid.h>
#include <TGridResult.h>

//AliRoot
#include "AliRunTag.h"
#include "AliEventTag.h"
#include "AliLog.h"

#include "AliTagCreator.h"


using std::ifstream;
ClassImp(AliTagCreator)


//______________________________________________________________________________
  AliTagCreator::AliTagCreator() :
    TObject(),
    fSE("ALICE::CERN::se"),
    fgridpath(""),
    fStorage(0)
{
  //==============Default constructor for a AliTagCreator==================
}

//______________________________________________________________________________
AliTagCreator::~AliTagCreator() {
//================Default destructor for a AliTagCreator=======================
}

//______________________________________________________________________________
void AliTagCreator::SetStorage(Int_t storage) {
  // Sets correctly the storage: 0 for local, 1 for GRID
  fStorage = storage;
  if(fStorage == 0)
    AliInfo(Form("Tags will be stored locally...."));
  if(fStorage == 1)
    AliInfo(Form("Tags will be stored in the grid...."));
  if((fStorage != 0)&&(fStorage != 1))
    {
      AliInfo(Form("Storage was not properly set!!!"));
      abort();
    }  
}

//__________________________________________________________________________
Bool_t AliTagCreator::MergeTags(const char *type) {
  //Merges the tags and stores the merged tag file 
  //locally if fStorage=0 or in the grid if fStorage=1
  AliInfo(Form("Merging tags....."));
  TChain *fgChain = new TChain("T");
  TString tagPattern = type; tagPattern += ".tag.root"; 

  if(fStorage == 0) {
    // Open the working directory
    void * dirp = gSystem->OpenDirectory(gSystem->pwd());
    const char * name = 0x0;
    // Add all files matching *pattern* to the chain
    while((name = gSystem->GetDirEntry(dirp))) {
      if (strstr(name,tagPattern)) fgChain->Add(name);  
    }//directory loop
    AliInfo(Form("Chained tag files: %lld",fgChain->GetEntries()));
  }//local mode

  else if(fStorage == 1) {
    TString alienLocation = gGrid->Pwd();
    alienLocation += fgridpath.Data();
    alienLocation += "/";
    TString queryPattern = "*."; queryPattern += tagPattern;
    TGridResult *tagresult = gGrid->Query(alienLocation,queryPattern.Data(),"","");
    Int_t nEntries = tagresult->GetEntries();
    for(Int_t i = 0; i < nEntries; i++) {
      TString alienUrl = tagresult->GetKey(i,"turl");
      fgChain->Add(alienUrl);
    }//grid result loop      
    AliInfo(Form("Chained tag files: %lld",fgChain->GetEntries()));
  }//grid mode
 
  AliRunTag *tag = new AliRunTag;
  fgChain->SetBranchAddress("AliTAG",&tag);
  fgChain->GetEntry(0);
  TString localFileName = "Run"; localFileName += tag->GetRunId(); 
  localFileName += ".Merged."; localFileName += tagPattern.Data();
     
  TString filename;
  
  if(fStorage == 0) {
    filename = localFileName.Data();      
    AliInfo(Form("Writing merged tags to local file: %s",filename.Data()));
  } 
  else if(fStorage == 1) {
    TString alienFileName = "/alien";
    alienFileName += gGrid->Pwd();
    alienFileName += fgridpath.Data();
    alienFileName += "/";
    alienFileName +=  localFileName;
    alienFileName += "?se=";
    alienFileName += fSE.Data();
    filename = alienFileName.Data();
    AliInfo(Form("Writing merged tags to grid file: %s",filename.Data()));     
  }

  fgChain->Merge(filename);
  gSystem->Exec("rm Run*.Event*");

  return kTRUE;
}


//__________________________________________________________________________
Bool_t AliTagCreator::MergeTags(const char *type, const char *inflist) {
  //Merges the tags and stores the merged tag file 
  //locally if fStorage=0 or in the grid if fStorage=1
  AliInfo(Form("Merging tags....."));
  TChain *fgChain = new TChain("T");
  TString tagPattern = type; tagPattern += ".tag.root"; 

//   if(fStorage == 0) {
//     // Open the working directory
//     void * dirp = gSystem->OpenDirectory(gSystem->pwd());
//     const char * name = 0x0;
//     // Add all files matching *pattern* to the chain
//     while((name = gSystem->GetDirEntry(dirp))) {
//       if (strstr(name,tagPattern)) fgChain->Add(name);  
//     }//directory loop
//     AliInfo(Form("Chained tag files: %d",fgChain->GetEntries()));
//   }//local mode

//   else if(fStorage == 1) {
//     TString alienLocation = gGrid->Pwd();
//     alienLocation += fgridpath.Data();
//     alienLocation += "/";
//     TString queryPattern = "*."; queryPattern += tagPattern;
//     TGridResult *tagresult = gGrid->Query(alienLocation,queryPattern.Data(),"","");
//     Int_t nEntries = tagresult->GetEntries();
//     for(Int_t i = 0; i < nEntries; i++) {
//       TString alienUrl = tagresult->GetKey(i,"turl");
//       fgChain->Add(alienUrl);
//     }//grid result loop      
//     AliInfo(Form("Chained tag files: %d",fgChain->GetEntries()));
//   }//grid mode

  if (fStorage == 0) {
    ifstream *istr = new ifstream(inflist);
    char fname[200];
    while (!(istr->eof())) {
      (*istr) >> fname;
      if (strstr(fname, tagPattern)) fgChain->Add(fname);
    }
    AliInfo(Form("Chained tag files: %lld",fgChain->GetEntries()));
  }
 
  AliRunTag *tag = new AliRunTag;
  fgChain->SetBranchAddress("AliTAG",&tag);
  fgChain->GetEntry(0);
  TString localFileName = "Run"; localFileName += tag->GetRunId(); 
  localFileName += ".Merged."; localFileName += tagPattern.Data();
     
  TString filename;
  
  if(fStorage == 0) {
    filename = localFileName.Data();      
    AliInfo(Form("Writing merged tags to local file: %s",filename.Data()));
  } 
  else if(fStorage == 1) {
    TString alienFileName = "/alien";
    alienFileName += gGrid->Pwd();
    alienFileName += fgridpath.Data();
    alienFileName += "/";
    alienFileName +=  localFileName;
    alienFileName += "?se=";
    alienFileName += fSE.Data();
    filename = alienFileName.Data();
    AliInfo(Form("Writing merged tags to grid file: %s",filename.Data()));     
  }

  fgChain->Merge(filename);
  gSystem->Exec("rm Run*.Event*");

  return kTRUE;
}

//__________________________________________________________________________
Bool_t AliTagCreator::MergeTags(const char *type, TGridResult *result) {
  //Merges the tags that are listed in the TGridResult 
  AliInfo(Form("Merging tags....."));
  TChain *fgChain = new TChain("T");
  TString tagPattern = "."; tagPattern += type; tagPattern += ".tag.root";

  Int_t nEntries = result->GetEntries();

  TString alienUrl;
  for(Int_t i = 0; i < nEntries; i++) {
    alienUrl = result->GetKey(i,"turl");
    fgChain->Add(alienUrl);  
  }
  AliInfo(Form("Chained tag files: %lld",fgChain->GetEntries()));
  AliRunTag *tag = new AliRunTag;
  fgChain->SetBranchAddress("AliTAG",&tag);
  fgChain->GetEntry(0);
    
  TString localFileName = "Run"; localFileName += tag->GetRunId(); 
  localFileName += ".Merged"; localFileName += tagPattern.Data();
     
  TString filename;
  
  if(fStorage == 0) {
    filename = localFileName.Data();      
    AliInfo(Form("Writing merged tags to local file: %s",filename.Data()));
  } 
  else if(fStorage == 1) {
    TString alienFileName = "/alien";
    alienFileName += gGrid->Pwd();
    alienFileName += fgridpath.Data();
    alienFileName += "/";
    alienFileName +=  localFileName;
    alienFileName += "?se=";
    alienFileName += fSE.Data();
    filename = alienFileName.Data();
    AliInfo(Form("Writing merged tags to grid file: %s",filename.Data()));     
  }
  
  fgChain->Merge(filename);

  return kTRUE;
}

Bool_t AliTagCreator::MergeTagsForRun(const char* type) {
  //Merges the tags and stores the merged tag file 
  //locally if fStorage=0 or in the grid if fStorage=1
  AliInfo(Form("Merging tags....."));
  TChain *fgChain = new TChain("T");
  TString tagPattern = type; tagPattern += ".tag.root"; 

  if(fStorage == 0) {
    // Open the working directory
    void * dirp = gSystem->OpenDirectory(gSystem->pwd());
    const char * name = 0x0;
    // Add all files matching *pattern* to the chain
    while((name = gSystem->GetDirEntry(dirp))) {
      if (strstr(name,tagPattern)) fgChain->Add(name);  
    }//directory loop
    AliInfo(Form("Chained tag files: %lld",fgChain->GetEntries()));
  }//local mode

  else if(fStorage == 1) {
    TString alienLocation = gGrid->Pwd();
    alienLocation += fgridpath.Data();
    alienLocation += "/";
    TString queryPattern = "*."; queryPattern += tagPattern;
    TGridResult *tagresult = gGrid->Query(alienLocation,queryPattern.Data(),"","");
    Int_t nEntries = tagresult->GetEntries();
    for(Int_t i = 0; i < nEntries; i++) {
      TString alienUrl = tagresult->GetKey(i,"turl");
      fgChain->Add(alienUrl);
    }//grid result loop      
    AliInfo(Form("Chained tag files: %lld",fgChain->GetEntries()));
  }//grid mode
 
  AliRunTag *tag = new AliRunTag;
  fgChain->SetBranchAddress("AliTAG",&tag);
  fgChain->GetEntry(0);
  TString localFileName = "Run"; localFileName += tag->GetRunId(); 
  localFileName += ".Merged."; localFileName += tagPattern.Data();
     
  TString filename;
  
  if(fStorage == 0) {
    filename = localFileName.Data();      
    AliInfo(Form("Writing merged tags to local file: %s",filename.Data()));
  } 
  else if(fStorage == 1) {
    TString alienFileName = "/alien";
    alienFileName += gGrid->Pwd();
    alienFileName += fgridpath.Data();
    alienFileName += "/";
    alienFileName +=  localFileName;
    alienFileName += "?se=";
    alienFileName += fSE.Data();
    filename = alienFileName.Data();
    AliInfo(Form("Writing merged tags to grid file: %s",filename.Data()));     
  }

  //  fgChain->Merge(filename);
  MergeToSingleRunTag(fgChain, filename);

  gSystem->Exec("rm Run*.Event*");

  return kTRUE;
}

Bool_t AliTagCreator::MergeTagsForRun(const char* type, TGridResult *result) {
  //Merges the tags that are listed in the TGridResult 
  AliInfo(Form("Merging tags....."));
  TChain *fgChain = new TChain("T");
  TString tagPattern = "."; tagPattern += type; tagPattern += ".tag.root";

  Int_t nEntries = result->GetEntries();

  TString alienUrl;
  for(Int_t i = 0; i < nEntries; i++) {
    alienUrl = result->GetKey(i,"turl");
    fgChain->Add(alienUrl);  
  }
  AliInfo(Form("Chained tag files: %lld",fgChain->GetEntries()));
  AliRunTag *tag = new AliRunTag;
  fgChain->SetBranchAddress("AliTAG",&tag);
  fgChain->GetEntry(0);
    
  TString localFileName = "Run"; localFileName += tag->GetRunId(); 
  localFileName += ".Merged"; localFileName += tagPattern.Data();
     
  TString filename;
  
  if(fStorage == 0) {
    filename = localFileName.Data();      
    AliInfo(Form("Writing merged tags to local file: %s",filename.Data()));
  } 
  else if(fStorage == 1) {
    TString alienFileName = "/alien";
    alienFileName += gGrid->Pwd();
    alienFileName += fgridpath.Data();
    alienFileName += "/";
    alienFileName +=  localFileName;
    alienFileName += "?se=";
    alienFileName += fSE.Data();
    filename = alienFileName.Data();
    AliInfo(Form("Writing merged tags to grid file: %s",filename.Data()));     
  }
  
  //  fgChain->Merge(filename);
  MergeToSingleRunTag(fgChain, filename);

  return kTRUE;
}

Bool_t AliTagCreator::MergeTagsForRun(const char* type, const char *inflist) {
  //Merges the tags and stores the merged tag file 
  //locally if fStorage=0 or in the grid if fStorage=1
  AliInfo(Form("Merging tags....."));
  TChain *fgChain = new TChain("T");
  TString tagPattern = type; tagPattern += ".tag.root"; 

//   if(fStorage == 0) {
//     // Open the working directory
//     void * dirp = gSystem->OpenDirectory(gSystem->pwd());
//     const char * name = 0x0;
//     // Add all files matching *pattern* to the chain
//     while((name = gSystem->GetDirEntry(dirp))) {
//       if (strstr(name,tagPattern)) fgChain->Add(name);  
//     }//directory loop
//     AliInfo(Form("Chained tag files: %d",fgChain->GetEntries()));
//   }//local mode

//   else if(fStorage == 1) {
//     TString alienLocation = gGrid->Pwd();
//     alienLocation += fgridpath.Data();
//     alienLocation += "/";
//     TString queryPattern = "*."; queryPattern += tagPattern;
//     TGridResult *tagresult = gGrid->Query(alienLocation,queryPattern.Data(),"","");
//     Int_t nEntries = tagresult->GetEntries();
//     for(Int_t i = 0; i < nEntries; i++) {
//       TString alienUrl = tagresult->GetKey(i,"turl");
//       fgChain->Add(alienUrl);
//     }//grid result loop      
//     AliInfo(Form("Chained tag files: %d",fgChain->GetEntries()));
//   }//grid mode

  if (fStorage == 0) {
    ifstream *istr = new ifstream(inflist);
    char fname[200];
    while (!(istr->eof())) {
      (*istr) >> fname;
      if (strstr(fname, tagPattern)) fgChain->Add(fname);
    }
    AliInfo(Form("Chained tag files: %lld",fgChain->GetEntries()));
  }
 
  AliRunTag *tag = new AliRunTag;
  fgChain->SetBranchAddress("AliTAG",&tag);
  fgChain->GetEntry(0);
  TString localFileName = "Run"; localFileName += tag->GetRunId(); 
  localFileName += ".Merged."; localFileName += tagPattern.Data();
     
  TString filename;
  
  if(fStorage == 0) {
    filename = localFileName.Data();      
    AliInfo(Form("Writing merged tags to local file: %s",filename.Data()));
  } 
  else if(fStorage == 1) {
    TString alienFileName = "/alien";
    alienFileName += gGrid->Pwd();
    alienFileName += fgridpath.Data();
    alienFileName += "/";
    alienFileName +=  localFileName;
    alienFileName += "?se=";
    alienFileName += fSE.Data();
    filename = alienFileName.Data();
    AliInfo(Form("Writing merged tags to grid file: %s",filename.Data()));     
  }

  //  fgChain->Merge(filename);
  MergeToSingleRunTag(fgChain, filename);

  gSystem->Exec("rm Run*.Event*");

  return kTRUE;
}


Bool_t AliTagCreator::MergeToSingleRunTag(TChain *chain, const char *filename)
{
  // Merge all tags for a given run into a single RunTag
  TFile* ftag = TFile::Open(filename, "recreate");

  AliRunTag *tag = new AliRunTag;
  TTree * ttag = new TTree("T","A Tree with event tags");
  TBranch * btag = ttag->Branch("AliTAG", &tag, 1000000);
  btag->SetCompressionLevel(9);
  ttag->AutoSave("10000");

  AliRunTag *rtag = new AliRunTag();
  chain->SetBranchAddress("AliTAG", &rtag);

  AliFileTag *evt;

  if (chain->GetEntries()) {
    chain->GetEntry(0);
    tag->CopyStandardContent(rtag);
    tag->Clear();

    int runno = rtag->GetRunId();

    for (int iter=0; iter<chain->GetEntries(); iter++) {
      chain->GetEntry(iter);
      if (runno != rtag->GetRunId()) {
	AliInfo(Form("Run tag ID %i is different from the Run ID for the merged run: %i\n", rtag->GetRunId(), runno));
	continue;
      }

      for (int iev=0; iev<rtag->GetNFiles(); iev++) {
	evt = (AliFileTag *) rtag->GetFileTag(iev);
	tag->AddFileTag(new AliFileTag(*evt));
      }
    }
  }
  else {
    AliInfo("Found no tag files to merge.");
    return kFALSE;
  }

  ttag->Fill();

  ftag->cd();
  tag->Clear();
  ttag->Write();
  ftag->Close();
  
  return kTRUE;
}


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