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

//-----------------------------------------------------------------
//           AliTagAnalysis class
//   This is the class to deal with the tag analysis
//   Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
//-----------------------------------------------------------------

//ROOT
#include <Riostream.h>
#include <TSystem.h>
#include <TChain.h>
#include <TFile.h>
#include <TEventList.h>
#include <TEntryList.h>
#include <TTreeFormula.h>
#include <TMap.h>

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

#include "AliLog.h"

#include "AliRunTag.h"
#include "AliEventTag.h"
#include "AliTagAnalysis.h"
#include "AliEventTagCuts.h"
#include "AliDetectorTagCuts.h"
#include "AliLHCTagCuts.h"
#include "AliRunTagCuts.h"
#include "AliXMLCollection.h"

class TTree;

ClassImp(AliTagAnalysis)

//___________________________________________________________________________
AliTagAnalysis::AliTagAnalysis(): 
  TObject(),
  ftagresult(0x0),
  fTagDirName(),
  fChain(0x0),
  fAnalysisType(),
  fGlobalList(0) {
  //Default constructor for a AliTagAnalysis
}

//___________________________________________________________________________
AliTagAnalysis::AliTagAnalysis(const char* type): 
  TObject(),
  ftagresult(0x0),
  fTagDirName(),
  fChain(0x0),
  fAnalysisType(type),
  fGlobalList(0) {
  //constructor for a AliTagAnalysis
}

//___________________________________________________________________________
AliTagAnalysis::~AliTagAnalysis() {
  //Default destructor for a AliTagAnalysis
  if(ftagresult) delete ftagresult;
  if(fChain) delete fChain;
  if(fGlobalList) delete fGlobalList;
}

//___________________________________________________________________________
Bool_t  
AliTagAnalysis::AddTagsFile(const char* alienUrl, Bool_t checkFile) 
{
  /// Add a single tags file to the chain
  ///
  /// If checkFile=kTRUE (default) the file is opened to check
  /// it can be and that it contains data.
  /// It's safer but a lot longer...
  
  if (!fChain) fChain = new TChain("T");

  if ( checkFile )
  {
    return ( fChain->AddFile(alienUrl,-1) > 0 );
  }
  else
  {
    return ( fChain->AddFile(alienUrl) > 0 );
  }

}

//___________________________________________________________________________
void AliTagAnalysis::ChainLocalTags(const char *dirname) {
  //Searches the entries of the provided direcory
  //Chains the tags that are stored locally
  fTagDirName = dirname;
  TString fTagFilename;
  
  if (! fChain)  fChain = new TChain("T");
  const char * tagPattern = 0x0;
  if(fAnalysisType == "ESD") tagPattern = "ESD.tag.root";
  else if(fAnalysisType == "AOD") tagPattern = "AOD.tag.root";
  else AliFatal("Only ESD and AOD type is implemented!!!");

  // Open the working directory
  void * dirp = gSystem->OpenDirectory(fTagDirName);
  const char * name = 0x0;
  // Add all files matching *pattern* to the chain
  while((name = gSystem->GetDirEntry(dirp))) {
    if (tagPattern && strstr(name,tagPattern)) { 
      fTagFilename = fTagDirName;
      fTagFilename += "/";
      fTagFilename += name;
	  	
      fChain->Add(fTagFilename);  
      printf("Tag file %s\n", fTagFilename.Data());
      
    }//pattern check
  }//directory loop
  //AliInfo(Form("Chained tag files: %d ",fChain->GetEntries()));
 // AliDebug(Form("Chained tag files: %d ",fChain->GetEntries()));
  fChain->ls();
  
}


//___________________________________________________________________________
TChain * AliTagAnalysis::ChainGridTags(TGridResult *res) {
  //Loops overs the entries of the TGridResult
   //Chains the tags that are stored in the GRID
  ftagresult = res;
  Int_t nEntries = ftagresult->GetEntries();
 
  if (! fChain)  fChain = new TChain("T");

  TString gridname = "alien://";
  TString alienUrl;
 
  for(Int_t i = 0; i < nEntries; i++) {
    alienUrl = ftagresult->GetKey(i,"turl");
    fChain->Add(alienUrl);
  }//grid result loop
  return fChain;
}


//___________________________________________________________________________
TChain *AliTagAnalysis::QueryTags(AliRunTagCuts *runTagCuts, 
				  AliLHCTagCuts *lhcTagCuts, 
				  AliDetectorTagCuts *detTagCuts, 
				  AliEventTagCuts *evTagCuts) {
  //Queries the tag chain using the defined 
  //event tag cuts from the AliEventTagCuts object
  //and returns a TChain along with the associated TEventList
  AliInfo(Form("Querying the tags........"));

  TString aliceFile;
  if(fAnalysisType == "ESD") aliceFile = "esdTree";
  else if(fAnalysisType == "AOD") aliceFile = "aodTree";
  else AliFatal("Only ESD and AOD type is implemented!!!");

  //ESD file chain
  TChain *esdChain = new TChain(aliceFile.Data());
  //global entry list
  fGlobalList = new TEntryList();
  
  //Defining tag objects
  AliRunTag   *tag     = new AliRunTag;
  //  AliEventTag *evTag   = 0x0;
  AliFileTag  *flTag   = 0x0;

  fChain->SetBranchAddress("AliTAG",&tag);

  TString guid;
  TString turl;
  TString path;

  TEntryList* localList = new TEntryList();

  Int_t iAccepted = 0;
  
  for(Int_t iEntry = 0; iEntry < fChain->GetEntries(); iEntry++) {
    fChain->GetEntry(iEntry);
    evTagCuts->InitializeTriggerClasses(tag->GetActiveTriggerClasses());

    if(runTagCuts->IsAccepted(tag)) {
      if(lhcTagCuts->IsAccepted(tag->GetLHCTag())) {
	if(detTagCuts->IsAccepted(tag->GetDetectorTags())) {
	  localList->Reset();
	  Int_t iEvents = tag->GetNEvents();
	  
	  for (int i = 0; i < iEvents; i++) {
	    //	    evTag = tag->GetEventTag(i);
	    flTag = tag->GetFileTagForEvent(i);
	    guid = flTag->GetGUID();
	    turl = flTag->GetTURL();
	    path = flTag->GetPath();
 	    localList->SetTreeName(aliceFile.Data());
 	    if(turl!="") localList->SetFileName(turl.Data());
 	    else localList->SetFileName(path.Data());

 	    if(evTagCuts->IsAccepted(tag->GetEventTag(i))) localList->Enter(i);
	  }

// 	  const TClonesArray *tagList = tag->GetEventTags();
// 	  for(Int_t i = 0; i < iEvents; i++) {
// 	    evTag = (AliEventTag *) tagList->At(i);
// 	    guid = evTag->GetGUID(); 
// 	    turl = evTag->GetTURL(); 
// 	    path = evTag->GetPath();
// 	    localList->SetTreeName(aliceFile.Data());
// 	    if(turl!="") localList->SetFileName(turl.Data());
// 	    else localList->SetFileName(path.Data());
	    
// 	    if(evTagCuts->IsAccepted(evTag)) localList->Enter(i);
// 	  }//event loop
	  iAccepted += localList->GetN();
	  if(turl != "")      esdChain->AddFile(turl);
	  else if(path != "") esdChain->AddFile(path);
	  fGlobalList->Add(localList);
	}//detector tag cuts
      }//lhc tag cuts
    }//run tags cut
    tag->Clear();
  }//tag file loop
  AliInfo(Form("Accepted events: %d", iAccepted));
  esdChain->ls();
  esdChain->SetEntryList(fGlobalList,"ne");
  delete tag;
  delete localList;
  
  return esdChain;
}

//___________________________________________________________________________
TChain *AliTagAnalysis::QueryTags(const char *fRunCut, 
				  const char *fLHCCut, 
				  const char *fDetectorCut, 
				  const char *fEventCut) { 	 
  //Queries the tag chain using the defined 	 
  //event tag cuts from the AliEventTagCuts object 	 
  //and returns a TChain along with the associated TEventList 	 
  AliInfo(Form("Querying the tags........")); 	 

  TString aliceFile;
  if(fAnalysisType == "ESD") aliceFile = "esdTree";
  else if(fAnalysisType == "AOD") aliceFile = "aodTree";
  else AliFatal("Only ESD and AOD type is implemented!!!");


  //ESD file chain
  TChain *esdChain = new TChain(aliceFile.Data());
  //global entry list
  fGlobalList = new TEntryList();
  
  //Defining tag objects 	 
  AliRunTag   *tag   = new AliRunTag; 	 
  //  AliEventTag *evTag = 0x0;
  fChain->SetBranchAddress("AliTAG",&tag); 	 
  
  TString guid; 	 
  TString turl; 	 
  TString path; 	 
  
  TTreeFormula *fRunFormula = new TTreeFormula("fRun",fRunCut,fChain); 	 
  TTreeFormula *fLHCFormula = new TTreeFormula("fLHC",fLHCCut,fChain); 	 
  TTreeFormula *fDetectorFormula = new TTreeFormula("fDetector",fDetectorCut,fChain);
  TTreeFormula *fEventFormula = new TTreeFormula("fEvent",fEventCut,fChain);
  
  TEntryList* localList = new TEntryList();

  Int_t current = -1; 
  Int_t iAccepted = 0; 	 
  
  for(Int_t iTagFiles = 0; iTagFiles < fChain->GetEntries(); iTagFiles++) {
    fChain->GetEntry(iTagFiles); 	 
    if (current != fChain->GetTreeNumber()) { 	 
      fRunFormula->UpdateFormulaLeaves(); 	 
      fLHCFormula->UpdateFormulaLeaves(); 	 
      fDetectorFormula->UpdateFormulaLeaves(); 	 
      fEventFormula->UpdateFormulaLeaves(); 	 
      current = fChain->GetTreeNumber(); 	 
    } 	 
    
    if(fRunFormula->EvalInstance(iTagFiles) == 1) { 	 
      if(fLHCFormula->EvalInstance(iTagFiles) == 1) { 	 
	if(fDetectorFormula->EvalInstance(iTagFiles) == 1) {
          localList->Reset(); 	 
	  //	  Int_t iEvents = fEventFormula->GetNdata(); 	 
	  // *** FIXME ***

// 	  const TClonesArray *tagList = tag->GetEventTags(); 	 
// 	  for(Int_t i = 0; i < iEvents; i++) { 	 
// 	    evTag = (AliEventTag *) tagList->At(i); 	 
// 	    guid = evTag->GetGUID(); 	 
// 	    turl = evTag->GetTURL(); 	 
// 	    path = evTag->GetPath(); 	 
// 	    localList->SetTreeName(aliceFile.Data());
// 	    localList->SetFileName(turl.Data());
// 	    if(fEventFormula->EvalInstance(i) == 1) localList->Enter(i);
// 	  }//event loop 	 

	  if(path != "")      esdChain->AddFile(path); 	 
	  else if(turl != "") esdChain->AddFile(turl); 	 
	  fGlobalList->Add(localList);
	  iAccepted += localList->GetN();
	}//detector tag cuts
      }//lhc tag cuts
    }//run tag cut 	 
    tag->Clear();
  }//tag file loop 	 
  AliInfo(Form("Accepted events: %d", iAccepted)); 	 
  esdChain->SetEntryList(fGlobalList,"ne"); 	 

  delete tag;
  delete localList;
  return esdChain; 	 
}

//___________________________________________________________________________
Bool_t 
AliTagAnalysis::CreateXMLCollection(const char* name, 
                                    AliRunTagCuts *runTagCuts, 
                                    AliLHCTagCuts *lhcTagCuts, 
                                    AliDetectorTagCuts *detTagCuts, 
                                    AliEventTagCuts *evTagCuts) 
{
  /// Queries the tag chain using the defined run, lhc, detector and event tag objects
  /// and create a XML collection named "name.xml"
  /// if any of the runTagCuts, lhcTagCuts, detTagCuts or evTagCuts is NULL
  /// check on that object will be skipped.
  
  AliInfo(Form("Creating the collection........"));
  
  if (!fChain) 
  {
    AliError("fChain is NULL. Cannot make a collection from that !");
    return kFALSE;
  }
  
  AliXMLCollection collection;
  collection.SetCollectionName(name);
  collection.WriteHeader();
  
  TString guid;
  TString turl;
  TString lfn;
  
  TEntryList localList;
  Int_t iAccepted = 0;
    
  Int_t iRejectedRun = 0;
  Int_t iRejectedLHC = 0;
  Int_t iRejectedDet = 0;
  Int_t iRejectedEvt = 0;
  
  Int_t iTotalEvents = 0;
  
  Int_t iAcceptedEvtInFile = 0;
  Int_t iRejectedEvtInFile = 0;
  
  //Defining tag objects
  AliRunTag* tag = new AliRunTag;
  fChain->SetBranchAddress("AliTAG",&tag);

  Int_t iTagFiles = 0;
  
  //  AliEventTag *evTag = 0x0;
  AliFileTag  *flTag = 0x0;

  //  for(Int_t iTagFiles = 0; iTagFiles < fChain->GetListOfFiles()->GetEntries(); ++iTagFiles) 
  for(Int_t iRunTags = 0; iRunTags < fChain->GetEntries(); ++iRunTags) 
  {
    fChain->GetEntry(iRunTags);
    //Event list
    iTotalEvents += tag->GetNEvents();
    localList.Reset();
    
    evTagCuts->InitializeTriggerClasses(tag->GetActiveTriggerClasses());
    
    if ( !runTagCuts || ( runTagCuts && runTagCuts->IsAccepted(tag) ) ) 
      {
	if ( !lhcTagCuts || ( lhcTagCuts && lhcTagCuts->IsAccepted(tag->GetLHCTag())) ) 
	  {
	    if ( !detTagCuts || ( detTagCuts && detTagCuts->IsAccepted(tag->GetDetectorTags())) )
	      {
		for (int iChunk = 0; iChunk < tag->GetNFiles(); iChunk++, iTagFiles++) 
		  {
		    iRejectedEvtInFile = 0;
		    iAcceptedEvtInFile = 0;

		    localList.Reset();
		    
		    flTag = tag->GetFileTag(iChunk);
		    guid = flTag->GetGUID();
		    turl = flTag->GetTURL();
		    lfn = turl(8,turl.Length());
		    
		    for (int i = 0; i<flTag->GetNEvents(); i++) 
		      {
			//			evTag = flTag->GetEventTag(i);
			
			if( !evTagCuts || ( evTagCuts && evTagCuts->IsAccepted(flTag->GetEventTag(i))) )
			  {
			    localList.Enter(i);
			    iAcceptedEvtInFile++;
			  }
			else 
			  {
			    ++iRejectedEvt;
			    ++iRejectedEvtInFile;
			  }
		      }
		    // *** FIXME ***
//		Int_t i(0);

// 		TIter next(tag->GetEventTags());
// 		AliEventTag* evTag(0x0);
// 		iRejectedEvtInFile = 0;
// 		iAcceptedEvtInFile = 0;
// 		while ( ( evTag = static_cast<AliEventTag*>(next()) ) )
// 		  {
// 		    guid = evTag->GetGUID(); 
// 		    turl = evTag->GetTURL(); 
// 		    lfn = turl(8,turl.Length());
// 		    if( !evTagCuts || ( evTagCuts && evTagCuts->IsAccepted(evTag)) )
// 		      {
// 			localList.Enter(i);
// 			iAcceptedEvtInFile++;
// 		      }
// 		    else 
// 		      {
// 			++iRejectedEvt;
// 			++iRejectedEvtInFile;
// 		      }
// 		    ++i;
// 		  }//event loop
		    iAccepted += localList.GetN();
		    collection.WriteBody(iTagFiles+1,guid,lfn,turl,&localList,iAcceptedEvtInFile,iRejectedEvtInFile);
		  } // chunk loop
	      }//detector tag cuts
	    else {
	      iRejectedDet += tag->GetNEvents();
	    }
	  }//lhc tag cuts 
	else {
	  iRejectedLHC += tag->GetNEvents();
	}
      }//run tag cuts
    else {
      iRejectedRun += tag->GetNEvents();
    }
    tag->Clear();
  } //tag file loop
  
  collection.WriteSummary(iTotalEvents, iAccepted, iRejectedRun, iRejectedLHC, iRejectedDet, iRejectedEvt);
  collection.Export();
  
  return kTRUE;
}

//___________________________________________________________________________
Bool_t AliTagAnalysis::CreateXMLCollection(const char* name, 
					   const char *fRunCut, 
					   const char *fLHCCut, 
					   const char *fDetectorCut, 
					   const char *fEventCut) {
  //Queries the tag chain using the defined 
  //event tag cuts from the AliEventTagCuts object
  //and returns a XML collection
  AliInfo(Form("Creating the collection........"));


  AliXMLCollection *collection = new AliXMLCollection();
  collection->SetCollectionName(name);
  collection->WriteHeader();

  TString guid;
  TString turl;
  TString lfn;
  TEntryList* localList = new TEntryList();
  
  Int_t iAccepted = 0;

  Int_t iRejectedRun = 0;
  Int_t iRejectedLHC = 0;
  Int_t iRejectedDet = 0;
  Int_t iRejectedEvt = 0;

  Int_t iTotalEvents = 0;

  Int_t iAcceptedEvtInFile = 0;
  Int_t iRejectedEvtInFile = 0;

  //Defining tag objects
  AliRunTag *tag     = new AliRunTag;
  //  AliEventTag *evTag = 0x0;
  fChain->SetBranchAddress("AliTAG",&tag);

  TTreeFormula *fRunFormula = new TTreeFormula("fRun",fRunCut,fChain);
  TTreeFormula *fLHCFormula = new TTreeFormula("fLHC",fLHCCut,fChain); 	 
  TTreeFormula *fDetectorFormula = new TTreeFormula("fDetector",fDetectorCut,fChain);
  TTreeFormula *fEventFormula = new TTreeFormula("fEvent",fEventCut,fChain);
  
  Int_t current = -1;

  for(Int_t iTagFiles = 0; iTagFiles < fChain->GetEntries(); iTagFiles++) {

    fChain->GetEntry(iTagFiles);
    if (current != fChain->GetTreeNumber()) {
      fRunFormula->UpdateFormulaLeaves();
      fLHCFormula->UpdateFormulaLeaves();
      fDetectorFormula->UpdateFormulaLeaves();
      fEventFormula->UpdateFormulaLeaves();
      current = fChain->GetTreeNumber();
     }
 
   //Event list
    iTotalEvents += tag->GetNEvents();
    localList->Reset();
    if(fRunFormula->EvalInstance(iTagFiles) == 1) {
      if(fLHCFormula->EvalInstance(iTagFiles) == 1) { 	 
	if(fDetectorFormula->EvalInstance(iTagFiles) == 1) { 	 
	  //	  Int_t iEvents = fEventFormula->GetNdata();
	  // *** FIXME ***


// 	  const TClonesArray *tagList = tag->GetEventTags();
// 	  iRejectedEvtInFile = 0;
// 	  iAcceptedEvtInFile = 0;
// 	  for(Int_t i = 0; i < iEvents; i++) {
// 	    evTag = (AliEventTag *) tagList->At(i);
// 	    guid = evTag->GetGUID(); 
// 	    turl = evTag->GetTURL(); 
// 	    lfn = turl(8,turl.Length());
// 	    if(fEventFormula->EvalInstance(i) == 1) {
// 	      localList->Enter(i);
// 	      iAcceptedEvtInFile++;
// 	    }
// 	    else {
// 	      iRejectedEvt++;
// 	      iRejectedEvtInFile++;
// 	    }
// 	  }//event loop

	  collection->WriteBody(iTagFiles+1,guid,lfn,turl,localList,iAcceptedEvtInFile, iRejectedEvtInFile);
	  iAccepted += localList->GetN();
	}//detector tag cuts
	else {
	  iRejectedDet += tag->GetNEvents();
	}
      }//lhc tag cuts 
      else {
	iRejectedLHC += tag->GetNEvents();
      }
    }//run tag cuts
    else {
      iRejectedRun += tag->GetNEvents();
    }
  }//tag file loop
  collection->WriteSummary(iTotalEvents, iAccepted, iRejectedRun, iRejectedLHC, iRejectedDet, iRejectedEvt);
  collection->Export();
  
  delete tag;
  return kTRUE;
}

//___________________________________________________________________________
TChain *AliTagAnalysis::GetInputChain(const char* system, const char *wn) {
  //returns the chain+event list - used in batch sessions
  // this function will be removed once the new root 
  // improvements are committed
  TString fsystem = system;
  Int_t iAccepted = 0;

  TChain *fAnalysisChain = 0;
  if(fAnalysisType == "ESD") fAnalysisChain = new TChain("esdTree");
  else if(fAnalysisType == "AOD") fAnalysisChain = new TChain("aodTree");
  else AliFatal("Only ESD and AOD type is implemented!!!");
  
  //Event list
  TEventList *fEventList = new TEventList();
  AliXMLCollection *collection = AliXMLCollection::Open(wn);

  collection->Reset();
  while (collection->Next()) {
    AliInfo(Form("Adding: %s",collection->GetTURL("")));
    if (fAnalysisChain) fAnalysisChain->Add(collection->GetTURL(""));
    TEntryList *list = (TEntryList *)collection->GetEventList("");
    for(Int_t i = 0; i < list->GetN(); i++) fEventList->Enter(iAccepted+list->GetEntry(i));

    if(fsystem == "pp") iAccepted += 100;
    else if(fsystem == "PbPb") iAccepted += 1;
  }

  if (fAnalysisChain) fAnalysisChain->SetEventList(fEventList);
  
  AliInfo(Form("Number of selected events: %d",fEventList->GetN()));

  return fAnalysisChain;
}

//___________________________________________________________________________
TChain*
AliTagAnalysis::CreateChainFromCollection(const char* collectionname, const char* treename)
{
  /// Build a TChain (with its TEntryList object attached) from an XML collection.
  /// Returned chain must be deleted by the client.

  TString streename(treename);
  if ( streename != "esdTree" && streename != "aodTree" )
  {
    AliErrorClass("Only esdTree and aodTree implemented so far...");
    return 0x0;
  }
  
  TChain* chain = new TChain(streename.Data());

  // create the event list for the chain. Will be attached to the chain
  // which thus becomes the owner of it.
  TEntryList* elist = new TEntryList; 
  
  AliXMLCollection* collection = AliXMLCollection::Open(collectionname);

  // Tag selection summary per file
  TMap* tagCutSummary = new TMap();
  tagCutSummary->SetName("TagCutSumm");

  Int_t iAccepted = 0;
  
  collection->Reset();
  
  while (collection->Next()) 
  {
    AliDebugClass(1,Form("Adding: %s",collection->GetTURL("")));
    chain->Add(collection->GetTURL(""));
    TEntryList *list = collection->GetEventList("");
    list->SetTreeName(streename.Data());
    list->SetFileName(collection->GetTURL(""));
    elist->Add(list);
    iAccepted += list->GetN();
    if (collection->GetCutSumm())
    {
      tagCutSummary->Add(new TObjString(collection->GetTURL("")), new TObjString(collection->GetCutSumm()));
    }
  }

  chain->SetEntryList(elist,"ne"); // ne => do not expand tree name and/or file names
  
  AliDebugClass(1,Form("Number of selected events: %d",iAccepted));

  TList *aUserInfo = chain->GetUserInfo();
  aUserInfo->Add(tagCutSummary);

  Int_t iAccEv;
  Int_t iTotalEvents;
  Int_t iRejRun;
  Int_t iRejLHC;
  Int_t iRejDet;
  Int_t iRejEvt;

  collection->GetCollectionSummary(&iTotalEvents, &iAccEv, &iRejRun, &iRejLHC, &iRejDet, &iRejEvt);
 
  char nstr[2000];

  snprintf(nstr, 2000, "TotalEvents=%i", iTotalEvents);
  TObjString *iTotStr = new TObjString(nstr);
  aUserInfo->Add(iTotStr);

  snprintf(nstr, 2000, "AcceptedEvents=%i", iAccepted);
  TObjString *iAccStr = new TObjString(nstr);
  aUserInfo->Add(iAccStr);

  snprintf(nstr, 2000, "RejectedRun=%i", iRejRun);
  TObjString *iRejRunStr = new TObjString(nstr);
  aUserInfo->Add(iRejRunStr);

  snprintf(nstr, 2000, "RejectedLHC=%i", iRejLHC);
  TObjString *iRejLHCStr = new TObjString(nstr);
  aUserInfo->Add(iRejLHCStr);

  snprintf(nstr, 2000, "RejectedDet=%i", iRejDet);
  TObjString *iRejDetStr = new TObjString(nstr);
  aUserInfo->Add(iRejDetStr);

  snprintf(nstr, 2000, "RejectedEvt=%i", iRejEvt);
  TObjString *iRejEvtStr = new TObjString(nstr);
  aUserInfo->Add(iRejEvtStr);

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