ROOT logo
// 
// This class inspects the event 
//
// Input:
//   - AliESDFMD object possibly corrected for sharing
//
// Output:
//   - A histogram of v_z of events with triggers. 
//   - A histogram of v_z of events with vertex and triggers 
//   - A histogram of trigger counters 
// 
// Note, that these are added to the master output list 
//
// Corrections used: 
//   - None
//
#include "AliFMDEventInspector.h"
#include "AliProdInfo.h"
#include "AliLog.h"
#include "AliESDEvent.h"
#include "AliMultiplicity.h"
#include "AliAnalysisManager.h"
#include "AliMCEventHandler.h"
#include "AliInputEventHandler.h"
#include "AliTriggerAnalysis.h"
#include "AliPhysicsSelection.h"
#include "AliOADBPhysicsSelection.h"
#include "AliAODForwardMult.h"
#include "AliForwardUtil.h"
#include "AliCentrality.h"
#include <TH1.h>
#include <TList.h>
#include <TDirectory.h>
#include <TROOT.h>
#include <TParameter.h>
#include <TMatrixDSym.h>
#include <TPRegexp.h>
#include <iostream>
#include <iomanip>
#include "AliMCEvent.h"
#include "AliHeader.h"
#include "AliGenEventHeader.h"
#include "AliCollisionGeometry.h"
#include "AliVVZERO.h"

//====================================================================
namespace {
  AliPhysicsSelection* GetPhysicsSelection()
  {
    AliAnalysisManager* am = AliAnalysisManager::GetAnalysisManager();

    // Get the input handler - should always be there 
    AliInputEventHandler* ih = 
      dynamic_cast<AliInputEventHandler*>(am->GetInputEventHandler());
    if (!ih) { 
      Warning("GetPhysicsSelection", "No input handler");
      return 0;
    }
    // Get the physics selection - should always be there 
    AliPhysicsSelection* ps = 
      dynamic_cast<AliPhysicsSelection*>(ih->GetEventSelection());
    if (!ps) {
      Warning("GetPhysicsSelection", "No physics selection");
      return 0;
    }
    return ps;
  }
}

//====================================================================
const char* AliFMDEventInspector::fgkFolderName = "fmdEventInspector";

//____________________________________________________________________
AliFMDEventInspector::AliFMDEventInspector()
  : TNamed(),
    fHEventsTr(0), 
    fHEventsTrVtx(0),
    fHEventsAccepted(0),
    fHEventsAcceptedXY(0),
    fHTriggers(0),
    fHTriggerCorr(0),
    fHType(0),
    fHWords(0),
    fHCent(0),
    fHCentVsQual(0),
    fHStatus(0),
    fHVtxStatus(0),
    fHTrgStatus(0), 
    fHPileup(0),
    fLowFluxCut(1000),
    fMaxVzErr(0.2),
    fList(0),
    fEnergy(0),
    fField(999), 
    fCollisionSystem(kUnknown),
    fDebug(0),
    fCentAxis(0),
    fVtxAxis(10,-10,10),
    fVtxMethod(kNormal),
    // fUseFirstPhysicsVertex(false),
    fUseV0AND(false),
  fPileupFlags(0x5),
    fMinPileupContrib(3), 
    fMinPileupDistance(0.8),
// fUseDisplacedVertices(false),
    fDisplacedVertex(),
    fCollWords(),
    fBgWords(),
    fCentMethod("default"),
    fMinCent(-1.0),
    fMaxCent(-1.0),
// fUsepA2012Vertex(false),
    fRunNumber(0),
    fMC(false),
  fProdYear(-1),
  fProdLetter('?'),
  fProdPass(-1),
  fProdSVN(-1),
  fProdMC(false)
{
  // 
  // Constructor 
  //
  DGUARD(fDebug,1,"Default CTOR of AliFMDEventInspector");
}

//____________________________________________________________________
AliFMDEventInspector::AliFMDEventInspector(const char* name)
  : TNamed(fgkFolderName, name),
    fHEventsTr(0), 
    fHEventsTrVtx(0), 
    fHEventsAccepted(0),
    fHEventsAcceptedXY(0),
    fHTriggers(0),
    fHTriggerCorr(0),
    fHType(0),
    fHWords(0),
    fHCent(0),
    fHCentVsQual(0),
    fHStatus(0),
    fHVtxStatus(0),
    fHTrgStatus(0),
    fHPileup(0),
    fLowFluxCut(1000),
    fMaxVzErr(0.2),
    fList(0),
    fEnergy(0),
    fField(999), 
    fCollisionSystem(kUnknown),
    fDebug(0),
    fCentAxis(0),
    fVtxAxis(10,-10,10),
    fVtxMethod(kNormal),
// fUseFirstPhysicsVertex(false),
    fUseV0AND(false),
    fPileupFlags(0x5),
    fMinPileupContrib(3), 
    fMinPileupDistance(0.8),
// fUseDisplacedVertices(false),
  fDisplacedVertex(),
  fCollWords(),
  fBgWords(),
  fCentMethod("default"),
  fMinCent(-1.0),
  fMaxCent(-1.0),
// fUsepA2012Vertex(false),
  fRunNumber(0),
  fMC(false),
  fProdYear(-1),
  fProdLetter('?'),
  fProdPass(-1),
  fProdSVN(-1),
  fProdMC(false)
{
  // 
  // Constructor 
  // 
  // Parameters:
  //   name Name of object
  //
  DGUARD(fDebug,1,"Named CTOR of AliFMDEventInspector: %s", name);
  if (!GetPhysicsSelection()) {
    AliFatal("No physics selection defined in manager\n"
	     "=======================================================\n"
	     " The use of AliFMDEventInspector _requires_ a valid\n"
	     " AliPhysicsSelection registered with the input handler.\n\n"
	     " Please check our train setup\n"
	     "=======================================================\n");
}
}

//____________________________________________________________________
AliFMDEventInspector::~AliFMDEventInspector()
{
  // 
  // Destructor 
  //
  DGUARD(fDebug,1,"DTOR of AliFMDEventInspector");
  // if (fList)         delete fList;
}

//____________________________________________________________________
void 
AliFMDEventInspector::SetCentralityMethod(ECentMethod m)
{
  switch (m) { 
  case kV0Multiplicity: fCentMethod = "VOM"; break; // VZERO multiplicity 
  case kV0Amplitude:	fCentMethod = "V0A"; break; // VZERO amplitude    
  case kV0Charge: 	fCentMethod = "V0C"; break; // VZERO charge	     
  case kFMDRough: 	fCentMethod = "FMD"; break; // FMD scaled energy l
  case kNTracks: 	fCentMethod = "TRK"; break; // Number of tracks   
  case kLTracks: 	fCentMethod = "TKL"; break; // Number of tracks   
  case kCL0: 		fCentMethod = "CL0"; break; // 		     
  case kCL1: 		fCentMethod = "CL1"; break; // 		     
  case kCND: 		fCentMethod = "CND"; break; // 		     
  case kNParticles:     fCentMethod = "NPA"; break; // Neutral particles  
  case kNeutrons:       fCentMethod = "ZNA"; break; // ZDC neutron amplitu
  case kV0vsFMD: 	fCentMethod = "V0MvsFMD"; break; // VZERO versus FMD   
  case kV0vsNTracks: 	fCentMethod = "TKLvsVOM"; break; // Tracks versus VZERO
  case kZEMvsZDC:	fCentMethod = "ZEMvsZDC"; break; // ZDC		     
  default:              fCentMethod = "default"; break;
  }
}

//____________________________________________________________________
void 
AliFMDEventInspector::SetMinCentrality(Double_t minCent)
{
  AliWarning("\n"
	     "*******************************************************\n"
	     "* Setting centrality cuts in this stage is deprecated *\n"
	     "*******************************************************");
  fMinCent = minCent;
}
//____________________________________________________________________
void 
AliFMDEventInspector::SetMaxCentrality(Double_t maxCent)
{
  AliWarning("\n"
	     "*******************************************************\n"
	     "* Setting centrality cuts in this stage is deprecated *\n"
	     "*******************************************************");
  fMaxCent = maxCent;
}

//____________________________________________________________________
Bool_t
AliFMDEventInspector::FetchHistograms(const TList* d, 
				      TH1I*& hEventsTr, 
				      TH1I*& hEventsTrVtx, 
				      TH1I*& hEventsAcc,
				      TH1I*& hTriggers) const
{
  // 
  // Fetch our histograms from the passed list 
  // 
  // Parameters:
  //   d             Input
  //   hEventsTr     On return, pointer to histogram, or null
  //   hEventsTrVtx  On return, pointer to histogram, or null
  //   hTriggers     On return, pointer to histogram, or null
  // 
  // Return:
  //    true on success, false otherwise 
  //
  DGUARD(fDebug,3,"Fetch histograms in AliFMDEventInspector");
  hEventsTr    = 0;
  hEventsTrVtx = 0;
  hEventsAcc   = 0;
  hTriggers    = 0;  
  TList* dd    = dynamic_cast<TList*>(d->FindObject(GetName()));
  if (!dd) return kFALSE;
  
  hEventsTr    = dynamic_cast<TH1I*>(dd->FindObject("nEventsTr"));
  hEventsTrVtx = dynamic_cast<TH1I*>(dd->FindObject("nEventsTrVtx"));
  hEventsAcc   = dynamic_cast<TH1I*>(dd->FindObject("nEventsAccepted"));
  hTriggers    = dynamic_cast<TH1I*>(dd->FindObject("triggers"));

  if (!hEventsTr    || 
      !hEventsTrVtx || 
      !hEventsAcc   ||
      !hTriggers) return kFALSE;
  return kTRUE;
}
//____________________________________________________________________
void
AliFMDEventInspector::CacheConfiguredTriggerClasses(TList& cache, 
						    const TList* classes,
						    AliOADBPhysicsSelection* o)
{
  TIter nextClass(classes);
  TObjString* trigClass = 0;
  // Loop over all trigger classes.  Trigger classes have the format 
  //
  //   class          := positive_words SPACE(s) negative_words 
  //   positive_words := 
  //                  |  '+' words
  //   negative_words := 
  //                  |  '-' words
  //   words          := word 
  //                  |  word ',' words 
  //   
  while ((trigClass = static_cast<TObjString*>(nextClass()))) {
    // Tokenize on space to get positive and negative parts 
    TString     side   = o->GetBeamSide(trigClass->String());
    TObjArray*  parts  = trigClass->String().Tokenize(" ");
    TObjString* part   = 0;
    TIter       nextPart(parts);
    while ((part = static_cast<TObjString*>(nextPart()))) {
      // We only care about the positive ones 
      if (part->GetName()[0] != '+') continue;
      part->String().Remove(0,1);
	
      // Tokenize on a comma to get the words 
      TObjArray*  words = part->String().Tokenize(",");
      TObjString* word  = 0;
      TIter       nextWord(words);
      while ((word = static_cast<TObjString*>(nextWord()))) {
	TNamed* store = new TNamed(word->String(), side);
	cache.Add(store);
	DMSG(fDebug,3,"Caching %s trigger word %s", 
	     store->GetTitle(), store->GetName());
      } // while (word)
      delete words;
    }
    delete parts;
  }
}

//____________________________________________________________________
void
AliFMDEventInspector::SetupForData(const TAxis& vtxAxis)
{
  // 
  // Initialize the object - this is called on the first seen event. 
  // 
  // Parameters:
  //   vtxAxis Vertex axis in use 
  //
  DGUARD(fDebug,1,"Initialize in AliFMDEventInspector");

  // Get the physics selection - should always be there 
  AliPhysicsSelection* ps = GetPhysicsSelection();
  if (!ps) {
    AliWarning("No physics selection");
    return;
  }
  // Get the configured triggers
  AliOADBPhysicsSelection* oadb = 
    const_cast<AliOADBPhysicsSelection*>(ps->GetOADBPhysicsSelection());
  if (!oadb) {
    AliWarning("No OADB physics selection object");
    return;
  }
  // Get the configured trigger words from the physics selection 
  const TList* collTriggClasses = ps->GetCollisionTriggerClasses();
  const TList* bgTriggClasses   = ps->GetBGTriggerClasses();
  if (!collTriggClasses) { 
    AliWarning("No configured collision trigger classes");
    return;
  }
  if (!bgTriggClasses) { 
    AliWarning("No configured background trigger classes");
    return;
  }
  CacheConfiguredTriggerClasses(fCollWords, collTriggClasses, oadb);
  CacheConfiguredTriggerClasses(fBgWords,   bgTriggClasses,   oadb);
  // fCollWords.ls();
  // fBgWords.ls();
  
  
  TArrayD limits;
  if ((fMinCent < 0 && fMaxCent < 0) || fMaxCent <= fMinCent) {
    // Was:
    // -1.5 -0.5 0.5 1.5 ... 89.5 ... 100.5
    // ----- 92 number --------- ---- 1 ---
    // Now:
    // -0.5 0.5 1.5 ... 89.5 ... 100.5
    // ----- 91 number ---- ---- 1 ---
    limits.Set(92);
    for (Int_t i = 0; i < 91; i++) limits[i] = -.5 + i;
    limits[91] = 100.5;
  }
  else {
    Int_t n = Int_t(fMaxCent-fMinCent+2);
    limits.Set(n);
    for (Int_t i = 0; i < n; i++) { 
      limits[i] = fMinCent + i - .5;
    }
  }
      
  fVtxAxis.Set(vtxAxis.GetNbins(), vtxAxis.GetXmin(), vtxAxis.GetXmax());
  
  fCentAxis  = new TAxis(limits.GetSize()-1, limits.GetArray());
  fHEventsTr = new TH1I("nEventsTr", "Number of events w/trigger", 
			4*vtxAxis.GetNbins(), 
			2*vtxAxis.GetXmin(), 
			2*vtxAxis.GetXmax());
  fHEventsTr->SetXTitle("v_{z} [cm]");
  fHEventsTr->SetYTitle("# of events");
  fHEventsTr->SetFillColor(kRed+1);
  fHEventsTr->SetFillStyle(3001);
  fHEventsTr->SetDirectory(0);
  // fHEventsTr->Sumw2();
  fList->Add(fHEventsTr);

  fHEventsTrVtx = static_cast<TH1I*>(fHEventsTr->Clone("nEventsTrVtx"));
  fHEventsTrVtx->SetTitle("Number of events w/trigger and vertex"); 
  fHEventsTrVtx->SetFillColor(kBlue+1);
  fHEventsTrVtx->SetDirectory(0);
  // fHEventsTrVtx->Sumw2();
  fList->Add(fHEventsTrVtx);

  fHEventsAccepted = new TH1I("nEventsAccepted", 
			      "Number of events  w/trigger and vertex in range",
			      2*vtxAxis.GetNbins(), 
			      2*vtxAxis.GetXmin(), 
			      2*vtxAxis.GetXmax());
  fHEventsAccepted->SetXTitle("v_{z} [cm]");
  fHEventsAccepted->SetYTitle("# of events");
  fHEventsAccepted->SetFillColor(kGreen+1);
  fHEventsAccepted->SetFillStyle(3001);
  fHEventsAccepted->SetDirectory(0);
  // fHEventsAccepted->Sumw2();
  fList->Add(fHEventsAccepted);
			      
  fHEventsAcceptedXY = new TH2D("nEventsAcceptedXY", 
			      "XY vertex w/trigger and Z vertex in range",
				1000,-1,1,1000,-1,1);
  
  fHEventsAcceptedXY->SetXTitle("v_{x} [cm]");
  fHEventsAcceptedXY->SetYTitle("v_{y} [cm]");
  fHEventsAcceptedXY->SetDirectory(0);
  // fHEventsAccepted->Sumw2();
  fList->Add(fHEventsAcceptedXY);

  
  fHTriggers = new TH1I("triggers", "Triggers", kOffline+1, 0, kOffline+1);
  fHTriggers->SetFillColor(kRed+1);
  fHTriggers->SetFillStyle(3001);
  fHTriggers->SetStats(0);
  fHTriggers->SetDirectory(0);

  fHTriggerCorr = new TH2I("triggerCorr", "Trigger correlation", 
			   kOffline+1, 0, kOffline+1, 
			   kOffline+1, 0, kOffline+1);
  fHTriggerCorr->SetStats(0);
  fHTriggerCorr->SetDirectory(0);
  fHTriggerCorr->SetXTitle("Requirement");
  fHTriggerCorr->SetYTitle("Companion");

  Int_t binNum[] = { kInel   +1,
		     kInelGt0+1,
		     kNSD    +1,
		     kV0AND  +1,
		     kEmpty  +1,
		     kA      +1,
		     kB      +1,
		     kC      +1,
		     kE      +1,
		     kPileUp +1,
		     kMCNSD  +1,
		     kSatellite+1,
		     kSpdOutlier+1,
		     kOffline+1 };
  const char* binLbl[] = { "INEL",	 
			   "INEL>0",
			   "NSD",	 
			   "VOAND",
			   "Empty",	 
			   "A",	 
			   "B",	 
			   "C",	 
			   "E",	 
			   "Pileup",
			   "NSD_{MC}", 
			   "Satellite",
			   "SPD outlier",
			   "Offline" };
  for (Int_t i = 0; i < kOffline+1; i++) {
    fHTriggers->GetXaxis()->SetBinLabel(binNum[i], binLbl[i]);
    fHTriggerCorr->GetXaxis()->SetBinLabel(binNum[i], binLbl[i]);
    fHTriggerCorr->GetYaxis()->SetBinLabel(binNum[i], binLbl[i]);
  }
  fList->Add(fHTriggers);
  fList->Add(fHTriggerCorr);
  

  fHType = new TH1I("type", Form("Event type (cut: SPD mult>%d)", 
				 fLowFluxCut), 2, -.5, 1.5);
  fHType->SetFillColor(kRed+1);
  fHType->SetFillStyle(3001);
  fHType->SetStats(0);
  fHType->SetDirectory(0);
  fHType->GetXaxis()->SetBinLabel(1,"Low-flux");
  fHType->GetXaxis()->SetBinLabel(2,"High-flux");
  fList->Add(fHType);

#if 0 
  // This histogram disabled as it causes problems in the merge 
  fHWords = new TH1I("words", "Trigger words seen", 1, 0, 0); 
  fHWords->SetFillColor(kBlue+1);
  fHWords->SetFillStyle(3001);
  fHWords->SetStats(0);
  fHWords->SetDirectory(0);
  fHWords->SetBit(TH1::kCanRebin);
  fList->Add(fHWords);
#endif

  fHCent = new TH1F("cent", "Centrality", limits.GetSize()-1,limits.GetArray());
  fHCent->SetFillColor(kBlue+1);
  fHCent->SetFillStyle(3001);
  fHCent->SetStats(0);
  fHCent->SetDirectory(0);
  fHCent->SetXTitle("Centrality [%]");
  fHCent->SetYTitle("Events");
  fList->Add(fHCent);

  fHCentVsQual = new TH2F("centVsQuality", "Quality vs Centrality", 
			  5, 0, 5, limits.GetSize()-1, limits.GetArray());
  fHCentVsQual->SetXTitle("Quality");
  fHCentVsQual->SetYTitle("Centrality [%]");
  fHCentVsQual->SetZTitle("Events");
  fHCentVsQual->GetXaxis()->SetBinLabel(1, "OK");
  fHCentVsQual->GetXaxis()->SetBinLabel(2, "Outside v_{z} cut");
  fHCentVsQual->GetXaxis()->SetBinLabel(3, "V0 vs SPD outlier");
  fHCentVsQual->GetXaxis()->SetBinLabel(4, "V0 vs TPC outlier");
  fHCentVsQual->GetXaxis()->SetBinLabel(5, "V0 vs ZDC outlier");
  fHCentVsQual->SetDirectory(0);
  fList->Add(fHCentVsQual);

  fHStatus = new TH1I("status", "Status", 8, 1, 9);
  fHStatus->SetFillColor(kBlue+1);
  fHStatus->SetFillStyle(3001);
  fHStatus->SetStats(0);
  fHStatus->SetDirectory(0);
  TAxis* xAxis = fHStatus->GetXaxis();
  xAxis->SetBinLabel(1, "OK");
  xAxis->SetBinLabel(2, "No event");
  xAxis->SetBinLabel(3, "No triggers");
  xAxis->SetBinLabel(4, "No SPD");
  xAxis->SetBinLabel(5, "No FMD");
  xAxis->SetBinLabel(6, "No vertex");
  xAxis->SetBinLabel(7, "Bad vertex");
  xAxis->SetBinLabel(8, "No centrality");
  fList->Add(fHStatus);

  fHVtxStatus = new TH1I("vtxStatus","Vertex Status",
			 kNotVtxZ,kVtxOK,kNotVtxZ+1);
  fHVtxStatus->SetFillColor(kGreen+1);
  fHVtxStatus->SetFillStyle(3001);
  fHVtxStatus->SetStats(0);
  fHVtxStatus->SetDirectory(0);
  xAxis = fHVtxStatus->GetXaxis();
  xAxis->SetBinLabel(kVtxOK,      "OK");
  xAxis->SetBinLabel(kNoVtx,      "None/bad status");
  xAxis->SetBinLabel(kNoSPDVtx,   "No SPD/bad status");
  xAxis->SetBinLabel(kFewContrib, "N_{contrib} <= 0");
  xAxis->SetBinLabel(kUncertain,  Form("#delta z > %4.2f", fMaxVzErr));
  xAxis->SetBinLabel(kNotVtxZ,    "Not Z vertexer");
  fList->Add(fHVtxStatus);

  fHTrgStatus = new TH1I("trgStatus", "Trigger Status", 
			 kOther, kNoTrgWords, kOther+1);
  fHTrgStatus->SetFillColor(kMagenta+1);
  fHTrgStatus->SetFillStyle(3001);
  fHTrgStatus->SetStats(0);
  fHTrgStatus->SetDirectory(0);
  xAxis = fHTrgStatus->GetXaxis();
  xAxis->SetBinLabel(kNoTrgWords,	"No words");
  xAxis->SetBinLabel(kPP2760Fast,	"FAST in pp@#sqrt{s}=2.76TeV"); 
  xAxis->SetBinLabel(kMUON,		"Muon trigger");
  xAxis->SetBinLabel(kTriggered,	"Triggered");
  xAxis->SetBinLabel(kMinBias,		"CINT1 (V0A||V0C||FASTOR)");
  xAxis->SetBinLabel(kMinBiasNoSPD,	"CINT5 (V0A||V0C)");
  xAxis->SetBinLabel(kV0AndTrg,		"CINT7 (V0A&&V0C)");
  xAxis->SetBinLabel(kHighMult,		"N>>0");
  xAxis->SetBinLabel(kCentral,	        "Central"); 
  xAxis->SetBinLabel(kSemiCentral,	"Semi-central"); 
  xAxis->SetBinLabel(kDiffractive,	"Diffractive");
  xAxis->SetBinLabel(kUser,	        "User");
  xAxis->SetBinLabel(kOther,	        "Other");
  fList->Add(fHTrgStatus);

  fHPileup = new TH1I("pileupStatus", "Pile-up status", 3, 0, 3);
  fHPileup->SetFillColor(kYellow+2);
  fHPileup->SetFillStyle(3001);
  fHPileup->SetStats(0);
  fHPileup->SetDirectory(0);
  xAxis = fHPileup->GetXaxis();
  xAxis->SetBinLabel(1,	"SPD tracklets");
  xAxis->SetBinLabel(2,	"Tracks"); 
  xAxis->SetBinLabel(3,	"Out-of-bunch");
  fList->Add(fHPileup);

  if (AllowDisplaced()) fDisplacedVertex.SetupForData(fList, "", false);
}

//____________________________________________________________________
void
AliFMDEventInspector::StoreInformation()
{
  // Write TNamed objects to output list containing information about
  // the running conditions 
  DGUARD(fDebug,2,"Store information from AliFMDEventInspector");
  if (!fList) return;

  
  fList->Add(AliForwardUtil::MakeParameter("sys", fCollisionSystem));
  fList->Add(AliForwardUtil::MakeParameter("sNN", fEnergy));
  fList->Add(AliForwardUtil::MakeParameter("field", fField));
  fList->Add(AliForwardUtil::MakeParameter("runNo", fRunNumber));
  fList->Add(AliForwardUtil::MakeParameter("lowFlux", fLowFluxCut));
  fList->Add(AliForwardUtil::MakeParameter("ipMethod", fVtxMethod));
  //fList->Add(AliForwardUtil::MakeParameter("fpVtx",fUseFirstPhysicsVertex));
  fList->Add(AliForwardUtil::MakeParameter("v0and",fUseV0AND));
  fList->Add(AliForwardUtil::MakeParameter("pileup",   fPileupFlags));
  fList->Add(AliForwardUtil::MakeParameter("nPileUp", fMinPileupContrib));
  fList->Add(AliForwardUtil::MakeParameter("dPileup", fMinPileupDistance));
  fList->Add(AliForwardUtil::MakeParameter("satellite", AllowDisplaced()));
  fList->Add(AliForwardUtil::MakeParameter("alirootRev", 
					   AliForwardUtil::AliROOTRevision()));
  fList->Add(AliForwardUtil::MakeParameter("alirootBranch", 
					   AliForwardUtil::AliROOTBranch()));
  fList->Add(AliForwardUtil::MakeParameter("mc", fMC));

}

//____________________________________________________________________
void
AliFMDEventInspector::StoreProduction()
{
  if (!fList) return;

  AliAnalysisManager *mgr=AliAnalysisManager::GetAnalysisManager();
  AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
  if (!inputHandler) {
    AliWarning("Got no input handler");
    return;
  }
  TList *uiList = inputHandler->GetUserInfo();
  if (!uiList) {
    AliWarning("Got no user list from input tree");
    return;
  }

  AliProdInfo p(uiList);
  p.List();
  if (p.GetAlirootSvnVersion() <= 0) return;

  // Make our output list 
  TList* out = new TList;
  out->SetOwner(true);
  out->SetName("production");
  // out->SetTitle("ESD production details");
  fList->Add(out);

  TString period            = p.GetLHCPeriod();
  // TString aliROOTVersion    = p.GetAlirootVersion();
  fProdSVN                  = p.GetAlirootSvnVersion();
  // TString rootVersion       = p.GetRootVersion();
  Int_t   rootSVN           = p.GetRootSvnVersion();
  fProdPass                 = p.GetRecoPass();
  fProdMC                   = p.IsMC();
  
  if (period.Length() > 0) {
    TObjArray* pp = TPRegexp("LHC([0-9]+)([a-z]+)").MatchS(period);
    fProdYear     = static_cast<TObjString*>(pp->At(1))->String().Atoi();
    fProdLetter   = static_cast<TObjString*>(pp->At(2))->String()[0];
    pp->Delete();
  }
  
  out->Add(AliForwardUtil::MakeParameter("year", fProdYear));
  out->Add(AliForwardUtil::MakeParameter("letter", Int_t(fProdLetter)));
  out->Add(AliForwardUtil::MakeParameter("alirootSVN", fProdSVN));
  out->Add(AliForwardUtil::MakeParameter("rootSVN", rootSVN));
  out->Add(AliForwardUtil::MakeParameter("pass", fProdPass));
  out->Add(AliForwardUtil::MakeParameter("mc", fProdMC));
}

  
  

//____________________________________________________________________
void
AliFMDEventInspector::CreateOutputObjects(TList* dir)
{
  // 
  // Define the output histograms.  These are put in a sub list of the
  // passed list.   The histograms are merged before the parent task calls 
  // AliAnalysisTaskSE::Terminate 
  // 
  //   dir Directory to add to 
  //
  DGUARD(fDebug,1,"Define output from AliFMDEventInspector");
  fList = new TList;
  fList->SetName(GetName());
  fList->SetOwner();
  dir->Add(fList);
}

//____________________________________________________________________
UInt_t
AliFMDEventInspector::Process(const AliESDEvent* event, 
			      UInt_t&            triggers,
			      Bool_t&            lowFlux,
			      UShort_t&          ivz, 
			      TVector3&          ip,
			      Double_t&          cent,
			      UShort_t&          nClusters)
{
  // 
  // Process the event 
  // 
  // Parameters:
  //   event     Input event 
  //   triggers  On return, the triggers fired 
  //   lowFlux   On return, true if the event is considered a low-flux 
  //                  event (according to the setting of fLowFluxCut) 
  //   ivz       On return, the found vertex bin (1-based).  A zero
  //                  means outside of the defined vertex range
  //   vz        On return, the z position of the interaction
  //   cent      On return, the centrality - if not available < 0
  // 
  // Return:
  //    0 (or kOk) on success, otherwise a bit mask of error codes 
  //
  DGUARD(fDebug,1,"Process event in AliFMDEventInspector"); 
  // --- Check that we have an event ---------------------------------
  if (!event) { 
    AliWarning("No ESD event found for input event");
    fHStatus->Fill(2);
    return kNoEvent;
  }

  // --- Process satellite event information is requested ------------
  if (AllowDisplaced()) { 
    if (!fDisplacedVertex.Process(event)) 
      AliWarning("Failed to process satellite event");
  }

  // --- Read trigger information from the ESD and store in AOD object
  if (!ReadTriggers(*event, triggers, nClusters)) { 
    if (fDebug > 2) {
      AliWarning("Failed to read triggers from ESD"); }
    fHStatus->Fill(3);
    return kNoTriggers;
  }

  // --- Check if this is a high-flux event --------------------------
  const AliMultiplicity* testmult = event->GetMultiplicity();
  if (!testmult) {
    if (fDebug > 3) {
      AliWarning("No central multiplicity object found"); }
  }
  else 
    lowFlux = testmult->GetNumberOfTracklets() < fLowFluxCut;

  fHType->Fill(lowFlux ? 0 : 1);
 
  // --- Get the interaction point -----------------------------------
  Bool_t vzOk = ReadVertex(*event, ip);
  fHEventsTr->Fill(ip.Z());
  if (!vzOk) { 
    if (fDebug > 3) {
      AliWarning("Failed to read vertex from ESD"); }
    fHStatus->Fill(6);
    return kNoVertex;
  }

   // --- Read centrality information 
  cent          = -10;
  UShort_t qual = 0;
  if (!ReadCentrality(*event, cent, qual)) {
    if (fDebug > 3) 
      AliWarning("Failed to get centrality");
  }
  // --- check centrality cut
 
  if(fMinCent > -0.0001 && cent < fMinCent) return  kNoEvent; 
  if(fMaxCent > -0.0001 && cent > fMaxCent) return  kNoEvent; 
  if (cent >= 0) fHCent->Fill(cent);
  if (qual == 0) fHCentVsQual->Fill(0., cent);
  else { 
    fHStatus->Fill(8);
    for (UShort_t i = 0; i < 4; i++) 
      if (qual & (1 << i)) fHCentVsQual->Fill(Double_t(i+1), cent);
  }
	

  fHEventsTrVtx->Fill(ip.Z());
  
  // --- Get the vertex bin ------------------------------------------
  ivz = fVtxAxis.FindBin(ip.Z());
  if (ivz <= 0 || ivz > fVtxAxis.GetNbins()) { 
    if (fDebug > 3) {
      AliWarning(Form("Vertex @ %f outside of range [%f,%f]", 
		      ip.Z(), fVtxAxis.GetXmin(), fVtxAxis.GetXmax())); 
    }
    ivz = 0;
    fHStatus->Fill(7);
    return kBadVertex;
  }
  fHEventsAccepted->Fill(ip.Z());
  fHEventsAcceptedXY->Fill(ip.X(),ip.Y());
  
  // --- Check the FMD ESD data --------------------------------------
  if (!event->GetFMDData()) { 
    if (fDebug > 3) {
      AliWarning("No FMD data found in ESD"); }
    fHStatus->Fill(5);
    return kNoFMD;
  }

  fHStatus->Fill(1);
  return kOk;
}

//____________________________________________________________________
Bool_t
AliFMDEventInspector::ReadCentrality(const AliESDEvent& esd, 
				     Double_t& cent, 
				     UShort_t& qual) const
{
  // 
  // Read centrality from event 
  // 
  // Parameters:
  //    esd  Event 
  //    cent On return, the centrality or negative if not found
  // 
  // Return:
  //    False on error, true otherwise 
  //
  DGUARD(fDebug,2,"Read the centrality in AliFMDEventInspector");

  cent = -1;
  qual = 1;
  AliCentrality* centObj = const_cast<AliESDEvent&>(esd).GetCentrality();
  if (centObj) {
    cent = centObj->GetCentralityPercentile(fCentMethod);  
    qual = centObj->GetQuality();
  }

  // We overwrite with satellite events, so we can be sure to get the
  // centrality determination from the satellite vertex selection
  if (AllowDisplaced() && fDisplacedVertex.IsSatellite()) {
    cent = fDisplacedVertex.GetCentralityPercentile();
    qual = 0;
  }

  return true;
}

//____________________________________________________________________
Bool_t
AliFMDEventInspector::CheckpAExtraV0(const AliESDEvent& esd) const
{
  if (fCollisionSystem != AliForwardUtil::kPPb) return true;

   AliVVZERO* esdV0 = esd.GetVZEROData();
   if ((esdV0->GetV0ADecision()!=1) || (esdV0->GetV0CDecision()!=1)) 
     return false;
   return true;
}

//____________________________________________________________________
Bool_t
AliFMDEventInspector::ReadTriggers(const AliESDEvent& esd, UInt_t& triggers,
				   UShort_t& nClusters)
{
  // 
  // Read the trigger information from the ESD event 
  // 
  // Parameters:
  //   esd        ESD event 
  //   triggers   On return, contains the trigger bits 
  // 
  // Return:
  //    @c true on success, @c false otherwise 
  //
  DGUARD(fDebug,2,"Read the triggers in AliFMDEventInspector");
  triggers = 0;

  // Get the analysis manager - should always be there 
  AliAnalysisManager* am = AliAnalysisManager::GetAnalysisManager();
  DMSG(fDebug,10,"Got analysis manager %p", am);
  if (!am) { 
    AliWarning("No analysis manager defined!");
    return kFALSE;
  }

  // Get the input handler - should always be there 
  AliInputEventHandler* ih = 
    static_cast<AliInputEventHandler*>(am->GetInputEventHandler());
  DMSG(fDebug,10,"Got input handler %p", ih);
  if (!ih) { 
    AliWarning("No input handler");
    return kFALSE;
  }

  // Check if this is a collision candidate (MB)
  ///
  // Historic remark: Note, that we should use the value cached in the
  //   input handler rather than calling IsCollisionCandiate directly
  //   on the AliPhysicsSelection obejct.  If we called the latter
  //   then the AliPhysicsSelection object would overcount by a factor
  //   of 2! :-(
  UInt_t  trgMask  = ih->IsEventSelected();
  Bool_t  offline  = trgMask;
  Bool_t  fastonly = (trgMask & AliVEvent::kFastOnly);
  TString trigStr  = esd.GetFiredTriggerClasses();

  if (trigStr.IsNull()) fHTrgStatus->Fill(kNoTrgWords);
  if (fHWords) fHWords->Fill(trigStr.Data(), 1);
  
  if(AllowDisplaced()) {
    DMSG(fDebug,3,"Using displaced vertex stuff");
    // if (TMath::Abs(fDisplacedVertex.GetVertexZ()) >= 999) offline = false;
    if (fDisplacedVertex.IsSatellite()) 
      triggers |= AliAODForwardMult::kSatellite;
  }
  
  if (CheckFastPartition(fastonly)) {
    fHTrgStatus->Fill(kPP2760Fast);
    offline = false;
  }
  
  if (offline && CheckCosmics(trigStr)) {
    fHTrgStatus->Fill(kMUON);
    offline = false;
  }
  if (offline) fHTrgStatus->Fill(kTriggered);
  Int_t f = 0;
  if (trgMask & AliVEvent::kMB)          f += fHTrgStatus->Fill(kMinBias);
  if (trgMask & AliVEvent::kCINT5)       f += fHTrgStatus->Fill(kMinBiasNoSPD);
  if (trgMask & AliVEvent::kINT7)        f += fHTrgStatus->Fill(kV0AndTrg);
  if (trgMask & AliVEvent::kHighMult)    f += fHTrgStatus->Fill(kHighMult);
  if (trgMask & AliVEvent::kCentral)     f += fHTrgStatus->Fill(kCentral);
  if (trgMask & AliVEvent::kSemiCentral) f += fHTrgStatus->Fill(kSemiCentral);
  if (trgMask & AliVEvent::kDG5)         f += fHTrgStatus->Fill(kDiffractive);
  if (trgMask & AliVEvent::kUserDefined) f += fHTrgStatus->Fill(kUser);
  if (f <= 0) fHTrgStatus->Fill(kOther);
  
  // if (!CheckpAExtraV0(esd))             offline = false;

  DMSG(fDebug,2,"Event is %striggered by off-line", offline ? "" : "NOT ");

  if (offline)  triggers |= AliAODForwardMult::kOffline;
  // Only flag as in-elastic if a min-bias trigger is here
  if (trgMask & AliVEvent::kMB) {
    triggers |= AliAODForwardMult::kInel;
    CheckINELGT0(esd, nClusters, triggers);
  }
  
  AliTriggerAnalysis ta;
  if (ta.IsSPDClusterVsTrackletBG(&esd, false)) 
    // SPD outlier 
    triggers |= AliAODForwardMult::kSPDOutlier;

  CheckNSD(esd,triggers);
  CheckPileup(esd, triggers);
  CheckEmpty(trigStr, triggers);
  // if (CheckPileup(esd, triggers)) fHTriggers->Fill(kPileUp+.5);
  // if (CheckEmpty(trigStr, triggers)) fHTriggers->Fill(kEmpty+.5);

  CheckWords(esd, triggers); 

#define TEST_TRIG_BIN(RET,BIN,TRIGGERS) \
  do { switch (BIN) { \
    case kInel:      RET = triggers & AliAODForwardMult::kInel;       break; \
    case kInelGt0:   RET = triggers & AliAODForwardMult::kInelGt0;    break; \
    case kNSD:       RET = triggers & AliAODForwardMult::kNSD;        break; \
    case kV0AND:     RET = triggers & AliAODForwardMult::kV0AND;      break; \
    case kEmpty:     RET = triggers & AliAODForwardMult::kEmpty;      break; \
    case kA:         RET = triggers & AliAODForwardMult::kA;          break; \
    case kB:         RET = triggers & AliAODForwardMult::kB;          break; \
    case kC:         RET = triggers & AliAODForwardMult::kC;          break; \
    case kE:         RET = triggers & AliAODForwardMult::kE;          break; \
    case kPileUp:    RET = triggers & AliAODForwardMult::kPileUp;     break; \
    case kMCNSD:     RET = triggers & AliAODForwardMult::kMCNSD;      break; \
    case kSatellite: RET = triggers & AliAODForwardMult::kSatellite;  break; \
    case kSpdOutlier:RET = triggers & AliAODForwardMult::kSPDOutlier; break; \
    case kOffline:   RET = triggers & AliAODForwardMult::kOffline;    break; \
    default:         RET = false; } } while(false)
      
  if (!fHTriggers) { 
    AliWarning("Histogram of triggers not defined - has init been called");
    return false;
  }
  
  for (Int_t i = 0; i < kOffline+1; i++) { 
    Bool_t hasX = false;
    TEST_TRIG_BIN(hasX, i, triggers);
    if (!hasX) continue;
    fHTriggers->Fill(i+.5);
    for (Int_t j = 0; j < kOffline+1; j++) { 
      Bool_t hasY = false;
      TEST_TRIG_BIN(hasY, j, triggers);
      if (!hasY) continue;
      
      fHTriggerCorr->Fill(i+.5, j+.5);
    }
  }
  return kTRUE;
}

//____________________________________________________________________
Bool_t
AliFMDEventInspector::CheckFastPartition(bool fastonly) const
{
  // For the 2.76 TeV p+p run (LHC11a), the FMD ran in the slow partition 
  // so it received no triggers from the fast partition. Therefore
  // the fast triggers are removed here but not for MC where all 
  // triggers are fast.
  if (TMath::Abs(fEnergy - 2750.) > 20) return false;
  if (fCollisionSystem != AliForwardUtil::kPP) return false;
  if (fMC) return false; // All MC events for pp @ 2.76TeV are `fast'
  // if (fastonly)
  //   DMSG(fDebug,1,"Fast trigger in pp @ sqrt(s)=2.76TeV removed");

  return fastonly;
}

//____________________________________________________________________
Bool_t
AliFMDEventInspector::CheckCosmics(const TString& trigStr) const
{
  // MUON triggers are not strictly minimum bias (MB) so they are
  // removed (HHD)
  if(trigStr.Contains("CMUS1")) {
    DMSG(fDebug,1,"Cosmic trigger ins't min-bias, removed");
    return true;
  }
  return false;
}

//____________________________________________________________________
Bool_t
AliFMDEventInspector::CheckINELGT0(const AliESDEvent& esd, 
				   UShort_t& nClusters, 
				   UInt_t& triggers) const
{
  Int_t nTracklets = 0;
  nClusters = 0;

  // If this is inel, see if we have a tracklet 
  const AliMultiplicity* spdmult = esd.GetMultiplicity();
  if (!spdmult) {
    AliWarning("No SPD multiplicity");
    return false;
  }

  // Check if we have one or more tracklets 
  // in the range -1 < eta < 1 to set the INEL>0 
  // trigger flag. 
  // 
  // Also count tracklets as a single cluster 
  Int_t n = spdmult->GetNumberOfTracklets();
  for (Int_t j = 0; j < n; j++) { 
    if(TMath::Abs(spdmult->GetEta(j)) < 1) nTracklets++;
  }
  // If we at this point had non-zero nClusters, it's INEL>0
  if (nTracklets > 0) triggers |= AliAODForwardMult::kInelGt0;
  nClusters = nTracklets;

  // Loop over single clusters 
  n = spdmult->GetNumberOfSingleClusters();
  for (Int_t j = 0; j < n; j++) { 
    Double_t eta = -TMath::Log(TMath::Tan(spdmult->GetThetaSingle(j)/2.));
    if (TMath::Abs(eta) < 1) nClusters++;
  }
  if (nClusters > 0) triggers |= AliAODForwardMult::kNClusterGt0;

  return triggers & AliAODForwardMult::kNClusterGt0;
}

//____________________________________________________________________
Bool_t
AliFMDEventInspector::CheckNSD(const AliESDEvent& esd, UInt_t& triggers) const
{
  // Analyse some trigger stuff 
  AliTriggerAnalysis ta;
  if (ta.IsOfflineTriggerFired(&esd, AliTriggerAnalysis::kV0AND)) {
    triggers |= AliAODForwardMult::kV0AND;
    if (fUseV0AND) 
      triggers |= AliAODForwardMult::kNSD;
  }
  if (ta.IsOfflineTriggerFired(&esd, AliTriggerAnalysis::kNSD1)) 
    triggers |= AliAODForwardMult::kNSD;
  return triggers & AliAODForwardMult::kNSD;
}
//____________________________________________________________________
Bool_t
AliFMDEventInspector::CheckPileup(const AliESDEvent& esd, 
				  UInt_t& triggers) const
{
  // Check for multiple vertices (pile-up) with at least 3
  // contributors and at least 0.8cm from the primary vertex
  // if(fCollisionSystem != AliForwardUtil::kPP) return false;

  UInt_t locTrig = 0;
  // Check for standard SPD pile-up  
  if ((fPileupFlags & kSPD) && 
      esd.IsPileupFromSPD(fMinPileupContrib,fMinPileupDistance)) {
    fHPileup->Fill(0.5, 1);
    locTrig |= AliAODForwardMult::kPileupSPD;
  }

  // Check for multi-vertex pileup 
  if ((fPileupFlags & kTracks) && CheckMultiVertex(esd)) {
    fHPileup->Fill(1.5, 1);
    locTrig |= AliAODForwardMult::kPileupTrack;
  }

  // Check for out-of-bunch pileup
  if ((fPileupFlags & kOutOfBunch) && 
      (esd.GetHeader()->GetIRInt2ClosestInteractionMap() != 0 ||
       esd.GetHeader()->GetIRInt1ClosestInteractionMap() != 0)) {
    fHPileup->Fill(2.5, 1);
    locTrig |= AliAODForwardMult::kPileupBC;
  }
  
  // Our result
  triggers      |= locTrig;
  Bool_t pileup =  locTrig != 0;
  if (pileup)    triggers |= AliAODForwardMult::kPileUp;
  return pileup;
}

//____________________________________________________________________
Bool_t
AliFMDEventInspector::CheckMultiVertex(const AliESDEvent& esd,
				       Bool_t             checkOtherBC) const
{
  // Adapted from AliAnalysisUtils 
  // 
  // Parameters 
  const Double_t maxChi2nu    = 5;
  
  // Number of vertices 
  Int_t n = esd.GetNumberOfPileupVerticesTracks();
  if (n < 1) 
    // No additional vertices from tracks -> no pileup 
    return false;
  
  // Primary vertex 
  const AliESDVertex* primary = esd.GetPrimaryVertexTracks();
  if (primary->GetStatus() != 1) 
    // No good primary vertex, but many candidates -> pileup
    return true;
  
  // Bunch crossing number 
  Int_t bcPrimary = primary->GetBC();
  
  for (Int_t i = 0; i < n; i++) { 
    const AliESDVertex* other = esd.GetPileupVertexTracks(i);
    
    if (other->GetNContributors() < fMinPileupContrib) 
      // Not enough contributors to this vertex 
      continue;
    
    if (other->GetChi2perNDF() > maxChi2nu) 
      // Poorly determined vertex 
      continue;
    if (checkOtherBC) {
      Int_t bcOther = other->GetBC();
      if (bcOther != AliVTrack::kTOFBCNA && TMath::Abs(bcOther-bcPrimary) > 2) 
	// Pile-up from other BC 
	return true;      
    }
    // Calculate the distance 
    Double_t d  = -1;
    Double_t dx = primary->GetX() - other->GetX();
    Double_t dy = primary->GetY() - other->GetY();
    Double_t dz = primary->GetZ() - other->GetZ();
    Double_t covPrimary[6], covOther[6];
    primary->GetCovarianceMatrix(covPrimary); 
    other->GetCovarianceMatrix(covOther);
    TMatrixDSym v(3);
    v(0,0) = covPrimary[0] + covOther[0]; // diagonal
    v(1,1) = covPrimary[2] + covOther[2]; // diagonal
    v(2,2) = covPrimary[5] + covOther[5]; // diagonal
    v(1,0) = v(0,1) = covPrimary[1]+covOther[1]; // Band
    v(0,2) = v(1,2) = v(2,0) = v(2,1) = 0; // Off-diagonal+band
    // Try to invert 
    v.InvertFast();
    if (!v.IsValid()) 
      // Question if kStatus bit is every set after InvertFast?
      continue;
    d = (v(0,0) * dx * dx + v(1,1) * dy * dy + v(2,2) * dz * dz + 
	 2 * (v(0,1) * dx * dy + v(0,2) * dx * dz + v(1,2) * dy * dz));
    
    if (d < 0 || TMath::Sqrt(d) < fMinPileupDistance) 
      // Bad distance, or not fare enough from each other 
      continue;
    
    // Well separated vertices -> pileup
    return true;
  }
  return false;
}

//____________________________________________________________________
Bool_t
AliFMDEventInspector::CheckEmpty(const TString& trigStr, UInt_t& triggers) const
{
  if (trigStr.Contains("CBEAMB-ABCE-NOPF-ALL")|| 
      trigStr.Contains("CBEAMB-B-NOPF-ALLNOTRD")) {
    triggers |= AliAODForwardMult::kEmpty;
    return true;
  }
  return false;
}
//____________________________________________________________________
Bool_t
AliFMDEventInspector::CheckWords(const AliESDEvent& esd, UInt_t& triggers) const
{
  TObject* word = 0;
  TIter nextColl(&fCollWords);
  while ((word = nextColl())) {
    DMSG(fDebug,10,"Checking if %s trigger %s is fired", 
	 word->GetTitle(), word->GetName());
    if (!esd.IsTriggerClassFired(word->GetName())) continue;

    TString beamSide = word->GetTitle();
    DMSG(fDebug,10,"Found it - this is a %s trigger", beamSide.Data());

    if (!beamSide.EqualTo("B")) continue;
    triggers |= AliAODForwardMult::kB;
    break; // No more to do here
  }
  TIter nextBg(&fBgWords);
  UInt_t all = (AliAODForwardMult::kA | 
		AliAODForwardMult::kC | 
		AliAODForwardMult::kE);
  while ((word = nextBg())) {
    DMSG(fDebug,10,"Checking if %s trigger %s is fired", 
	 word->GetTitle(), word->GetName());
    if (!esd.IsTriggerClassFired(word->GetName())) continue;
    
    TString beamSide = word->GetTitle();
    DMSG(fDebug,10,"Found it - this is a %s trigger", beamSide.Data());

    if (beamSide.Contains("A")) triggers |= AliAODForwardMult::kA;
    if (beamSide.Contains("C")) triggers |= AliAODForwardMult::kC;
    if (beamSide.Contains("E")) triggers |= AliAODForwardMult::kE;

    if ((triggers & all) == all) break; // No more to do
  }
  return true;
}


//____________________________________________________________________
Bool_t
AliFMDEventInspector::ReadVertex(const AliESDEvent& esd, TVector3& ip)
{
  // 
  // Read the vertex information from the ESD event 
  // 
  // Parameters:
  //   esd  ESD event 
  //   vz   On return, the vertex Z position 
  // 
  // Return:
  //    @c true on success, @c false otherwise 
  //
  DGUARD(fDebug,2,"Read the vertex in AliFMDEventInspector");
  ip.SetXYZ(1024, 1024, 0);
  
  EVtxStatus s = kNoVtx;
  if (AllowDisplaced() && fDisplacedVertex.IsSatellite()) {
    s = kVtxOK;
    ip.SetZ(fDisplacedVertex.GetVertexZ());
  }
  else if (fVtxMethod == kPWGUD) 
    s = CheckPWGUDVertex(esd, ip);
  else if (fVtxMethod == kpA2012) 
    s = CheckpA2012Vertex(esd,ip);	
  else if (fVtxMethod == kpA2013) 
    s = CheckpA2013Vertex(esd,ip);	
  else 
    s = CheckVertex(esd, ip);
  
  fHVtxStatus->Fill(s);

  return s == kVtxOK;
}

//____________________________________________________________________
AliFMDEventInspector::EVtxStatus
AliFMDEventInspector::CheckPWGUDVertex(const AliESDEvent& esd, 
				       TVector3& ip)  const
{
  // This is the code used by the 1st physics people 
  const AliESDVertex* vertex    = esd.GetPrimaryVertex();
  if (!vertex  || !vertex->GetStatus()) {
    DMSG(fDebug,2,"No primary vertex (%p) or bad status %d", 
	 vertex, (vertex ? vertex->GetStatus() : -1));
    return kNoVtx;
  }
  const AliESDVertex* vertexSPD = esd.GetPrimaryVertexSPD();
  if (!vertexSPD || !vertexSPD->GetStatus()) {
    DMSG(fDebug,2,"No primary SPD vertex (%p) or bad status %d", 
	 vertexSPD, (vertexSPD ? vertexSPD->GetStatus() : -1));
    return kNoSPDVtx;
  }
    
  // if vertex is from SPD vertexZ, require more stringent cuts 
  if (vertex->IsFromVertexerZ()) { 
    if (vertex->GetDispersion() > fMaxVzErr || 
	vertex->GetZRes() > 1.25 * fMaxVzErr) {
      DMSG(fDebug,2,"Dispersion %f > %f or resolution %f > %f",
	   vertex->GetDispersion(), fMaxVzErr,
	   vertex->GetZRes(), 1.25 * fMaxVzErr);
      return kUncertain;
    }
  }
  ip.SetZ(vertex->GetZ());
  
  if(!vertex->IsFromVertexerZ()) {
    ip.SetX(vertex->GetX());
    ip.SetY(vertex->GetY());
  }
  return kVtxOK;
}
//____________________________________________________________________
AliFMDEventInspector::EVtxStatus
AliFMDEventInspector::CheckpA2012Vertex(const AliESDEvent& esd, 
					TVector3& ip)  const
{      
  const Int_t nMinContrib = 0;
  const AliESDVertex *vertex = esd.GetPrimaryVertexSPD();
  if (!vertex) return kNoSPDVtx;
  if (vertex->GetNContributors() <= nMinContrib) return kFewContrib;
  
  TString vtxTyp = vertex->GetTitle();
  if (vtxTyp.Contains("vertexer: Z")) return kNotVtxZ;

  if (vertex->GetDispersion() >= 0.04 || vertex->GetZRes()>=0.25) 
    return kUncertain;

  ip.SetX(vertex->GetX());
  ip.SetY(vertex->GetY());
  ip.SetZ(vertex->GetZ());		

  return kVtxOK;
}
//____________________________________________________________________
AliFMDEventInspector::EVtxStatus
AliFMDEventInspector::CheckpA2013Vertex(const AliESDEvent& esd, 
					TVector3& ip)  const
{      
  // This code is adopted from 
  // 
  //   AliAnalysisUtils::IsVertexSelected2013pA(AliVEvent *event)
  // 
  const Int_t nMinContrib = 0;
  const AliESDVertex* primVtx = esd.GetPrimaryVertex();
  if (!primVtx) return kNoVtx;
  if (primVtx->GetNContributors() <= nMinContrib) return kFewContrib;
  
  const AliESDVertex* spdVtx = esd.GetPrimaryVertexSPD();
  if (!spdVtx) return kNoSPDVtx;
  if (spdVtx->GetNContributors() <= nMinContrib) return kFewContrib;
  
  // TString vtxTyp = spdVtx->GetTitle();
  // if (vtxTyp.Contains("vertexer:Z")) {
  if (spdVtx->IsFromVertexerZ() && spdVtx->GetZRes()>0.25) return kUncertain;

  Bool_t correlateVtx = true;
  if (correlateVtx) { 
    if (TMath::Abs(spdVtx->GetZ() - primVtx->GetZ()) > 0.5) return kUncertain;
  }

  ip.SetX(primVtx->GetX());
  ip.SetY(primVtx->GetY());
  ip.SetZ(primVtx->GetZ());		

  return kVtxOK;
}

//____________________________________________________________________
AliFMDEventInspector::EVtxStatus
AliFMDEventInspector::CheckVertex(const AliESDEvent& esd, 
				  TVector3& ip) const
{
  // Use standard SPD vertex (perhaps preferable for Pb+Pb)
  // Get the vertex 
  const AliESDVertex* vertex = esd.GetPrimaryVertexSPD();
  if (!vertex) { 
    if (fDebug > 2) {
      AliWarning("No SPD vertex found in ESD"); }
    return kNoSPDVtx;
  }
    
  // #if 0 // Check disabled - seem to kill a lot of PbPb events
  // Check that enough tracklets contributed 
  if(vertex->GetNContributors() <= 0) {
    DMSG(fDebug,2,"Number of contributors to vertex is %d<=0",
	 vertex->GetNContributors());
    ip.SetZ(0);
    return kFewContrib;
  } 
  // #endif

  // Check that the uncertainty isn't too large 
  if (vertex->GetZRes() > fMaxVzErr) { 
    DMSG(fDebug,2,"Uncertaintity in Z of vertex is too large %f > %f", 
	 vertex->GetZRes(), fMaxVzErr);
    return kUncertain;
  }
    
  // Get the z coordiante 
  ip.SetZ(vertex->GetZ());
  const AliESDVertex* vertexXY = esd.GetPrimaryVertex();
    
  
  if(!vertexXY->IsFromVertexerZ()) {
    ip.SetX(vertexXY->GetX());
    ip.SetY(vertexXY->GetY());
  }
  return kVtxOK;
}

//____________________________________________________________________
Bool_t
AliFMDEventInspector::ReadRunDetails(const AliESDEvent* esd)
{
  // 
  // Read the collision system, collision energy, and L3 field setting
  // from the ESD
  // 
  // Parameters:
  //   esd ESD to get information from 
  // 
  // Return:
  //    true on success, false 
  //
  // AliInfo(Form("Parameters from 1st ESD event: cms=%s, sNN=%f, field=%f",
  // 	       esd->GetBeamType(), 2*esd->GetBeamEnergy(), 
  // 	       esd->GetMagneticField()));
  DGUARD(fDebug,2,"Read the run details in AliFMDEventInspector");
  const char* sys  = esd->GetBeamType();
  Float_t     cms  = 2 * esd->GetBeamEnergy();
  Float_t     fld  = esd->GetMagneticField();
  fCollisionSystem = AliForwardUtil::ParseCollisionSystem(sys);
  fEnergy          = AliForwardUtil::ParseCenterOfMassEnergy(fCollisionSystem, 
							     cms);
  fField           = AliForwardUtil::ParseMagneticField(fld);
  fRunNumber       = esd->GetRunNumber();
  
  Int_t a0 = esd->GetBeamParticleA(0);
  Int_t a1 = esd->GetBeamParticleA(1);
  Int_t z0 = esd->GetBeamParticleZ(0);
  Int_t z1 = esd->GetBeamParticleZ(1);
  if (fCentMethod.EqualTo("default", TString::kIgnoreCase)) {
    if (fCollisionSystem == 1 || fCollisionSystem == 2) 
      SetCentralityMethod("V0M");
    if (fCollisionSystem == 3) { 
      if (a0 != 0 && a1 != 0) 
	SetCentralityMethod(a0 > a1 ? "ZNC" : "ZNA");
      else 
	SetCentralityMethod("V0M");    
    }
  }
  // store the beam species 
  fList->Add(AliForwardUtil::MakeParameter("beam0a", a0));
  fList->Add(AliForwardUtil::MakeParameter("beam0z", z0));
  fList->Add(AliForwardUtil::MakeParameter("beam1a", a1));
  fList->Add(AliForwardUtil::MakeParameter("beam1z", z1));

  StoreProduction();
  StoreInformation();
  if (fCollisionSystem   == AliForwardUtil::kUnknown) { 
    AliWarningF("Unknown collision system: %s - please check", sys);
    return false;
  }
  if (fEnergy            <= 0) {
    AliWarningF("Unknown CMS energy: %f (%d) - please check", cms, fEnergy);
    return false;
  }
  if (TMath::Abs(fField) >  10) {
    AliWarningF("Unknown L3 field setting: %f (%d) - please check", fld,fField);
    return false;
  }

  return true;
}


//____________________________________________________________________
const Char_t*
AliFMDEventInspector::CodeString(UInt_t code)
{
  static TString s;
  s = "";
  if (code & kNoEvent)    s.Append("NOEVENT ");
  if (code & kNoTriggers) s.Append("NOTRIGGERS ");
  if (code & kNoSPD)      s.Append("NOSPD ");
  if (code & kNoFMD)      s.Append("NOFMD ");
  if (code & kNoVertex)   s.Append("NOVERTEX ");
  if (code & kBadVertex)  s.Append("BADVERTEX ");
  return s.Data();
}
#define PF(N,V,...)					\
  AliForwardUtil::PrintField(N,V, ## __VA_ARGS__)
#define PFB(N,FLAG)				\
  do {									\
    AliForwardUtil::PrintName(N);					\
    std::cout << std::boolalpha << (FLAG) << std::noboolalpha << std::endl; \
  } while(false)
#define PFV(N,VALUE)					\
  do {							\
    AliForwardUtil::PrintName(N);			\
    std::cout << (VALUE) << std::endl; } while(false)

//____________________________________________________________________
void
AliFMDEventInspector::Print(Option_t*) const
{
  // 
  // Print information
  // 
  //   option Not used 
  //
  AliForwardUtil::PrintTask(*this);
  TString sNN(AliForwardUtil::CenterOfMassEnergyString(fEnergy));
  sNN.Strip(TString::kBoth, '0');
  sNN.ReplaceAll("GeV", " GeV");
  TString field(AliForwardUtil::MagneticFieldString(fField));
  field.ReplaceAll("p",  "+");
  field.ReplaceAll("m",  "-");
  field.ReplaceAll("kG", " kG");

  gROOT->IncreaseDirLevel();
  PFV("Production", "");
  gROOT->IncreaseDirLevel();
  PF("Period", "LHC%02d%c", fProdYear, fProdLetter);
  PFB("MC anchor", fProdMC);
  PFV("AliROOT Revision", fProdSVN);
  gROOT->DecreaseDirLevel();
  PFV("Vertex bins", fVtxAxis.GetNbins());
  PF("Vertex Range", "[%+6.1f,%+6.1f]", fVtxAxis.GetXmin(), fVtxAxis.GetXmax());
  PFV("Low flux cut",		fLowFluxCut );
  PFV("Max(delta v_z)",		fMaxVzErr );
  PF("Pile-up methods",	        "spd:%s,tracks:%s,out-of-bunch:%s", 
     (fPileupFlags & kSPD        ? "yes" : "no"),
     (fPileupFlags & kTracks     ? "yes" : "no"),
     (fPileupFlags & kOutOfBunch ? "yes" : "no"));
  PFV("Min(nContrib_pileup)",	fMinPileupContrib );
  PFV("Min(v-pileup)",		fMinPileupDistance );
  PFV("System", AliForwardUtil::CollisionSystemString(fCollisionSystem));
  PFV("CMS energy per nucleon",	sNN);
  PFV("Field",			field);
  PFB("Satellite events",	AllowDisplaced());
  // PFB("Use 2012 pA vertex",	fUsepA2012Vertex );
  // PFB("Use PWG-UD vertex",	fUseFirstPhysicsVertex);
  TString vtxMethod("normal");
  switch(fVtxMethod) { 
  case kNormal:    vtxMethod = "normal" ;    break;
  case kpA2012:    vtxMethod = "pA 2012";    break;
  case kpA2013:    vtxMethod = "pA 2013";    break;
  case kPWGUD:     vtxMethod = "PWG-UD";     break;
  case kDisplaced: vtxMethod = "Satellite";  break;
  }
  PFV("IP method",              vtxMethod);
  PFB("Simulation input",	fMC );
  PFV("Centrality method",	fCentMethod);
  PFV("Centrality axis",        (!fCentAxis ? "none" : ""));
  if (!fCentAxis) {return; }
  Int_t nBin = fCentAxis->GetNbins();
  for (Int_t i = 0; i < nBin; i++) { 
    if (i != 0 && (i % 10) == 0) std::cout << '\n';
    if ((i % 10) == 0)           std::cout << "    ";
    std::cout << std::setw(5) << fCentAxis->GetBinLowEdge(i+1) << '-';
  }
  std::cout << std::setw(5) << fCentAxis->GetBinUpEdge(nBin) << std::endl;
  gROOT->DecreaseDirLevel();
}

  
//
// EOF
//

 AliFMDEventInspector.cxx:1
 AliFMDEventInspector.cxx:2
 AliFMDEventInspector.cxx:3
 AliFMDEventInspector.cxx:4
 AliFMDEventInspector.cxx:5
 AliFMDEventInspector.cxx:6
 AliFMDEventInspector.cxx:7
 AliFMDEventInspector.cxx:8
 AliFMDEventInspector.cxx:9
 AliFMDEventInspector.cxx:10
 AliFMDEventInspector.cxx:11
 AliFMDEventInspector.cxx:12
 AliFMDEventInspector.cxx:13
 AliFMDEventInspector.cxx:14
 AliFMDEventInspector.cxx:15
 AliFMDEventInspector.cxx:16
 AliFMDEventInspector.cxx:17
 AliFMDEventInspector.cxx:18
 AliFMDEventInspector.cxx:19
 AliFMDEventInspector.cxx:20
 AliFMDEventInspector.cxx:21
 AliFMDEventInspector.cxx:22
 AliFMDEventInspector.cxx:23
 AliFMDEventInspector.cxx:24
 AliFMDEventInspector.cxx:25
 AliFMDEventInspector.cxx:26
 AliFMDEventInspector.cxx:27
 AliFMDEventInspector.cxx:28
 AliFMDEventInspector.cxx:29
 AliFMDEventInspector.cxx:30
 AliFMDEventInspector.cxx:31
 AliFMDEventInspector.cxx:32
 AliFMDEventInspector.cxx:33
 AliFMDEventInspector.cxx:34
 AliFMDEventInspector.cxx:35
 AliFMDEventInspector.cxx:36
 AliFMDEventInspector.cxx:37
 AliFMDEventInspector.cxx:38
 AliFMDEventInspector.cxx:39
 AliFMDEventInspector.cxx:40
 AliFMDEventInspector.cxx:41
 AliFMDEventInspector.cxx:42
 AliFMDEventInspector.cxx:43
 AliFMDEventInspector.cxx:44
 AliFMDEventInspector.cxx:45
 AliFMDEventInspector.cxx:46
 AliFMDEventInspector.cxx:47
 AliFMDEventInspector.cxx:48
 AliFMDEventInspector.cxx:49
 AliFMDEventInspector.cxx:50
 AliFMDEventInspector.cxx:51
 AliFMDEventInspector.cxx:52
 AliFMDEventInspector.cxx:53
 AliFMDEventInspector.cxx:54
 AliFMDEventInspector.cxx:55
 AliFMDEventInspector.cxx:56
 AliFMDEventInspector.cxx:57
 AliFMDEventInspector.cxx:58
 AliFMDEventInspector.cxx:59
 AliFMDEventInspector.cxx:60
 AliFMDEventInspector.cxx:61
 AliFMDEventInspector.cxx:62
 AliFMDEventInspector.cxx:63
 AliFMDEventInspector.cxx:64
 AliFMDEventInspector.cxx:65
 AliFMDEventInspector.cxx:66
 AliFMDEventInspector.cxx:67
 AliFMDEventInspector.cxx:68
 AliFMDEventInspector.cxx:69
 AliFMDEventInspector.cxx:70
 AliFMDEventInspector.cxx:71
 AliFMDEventInspector.cxx:72
 AliFMDEventInspector.cxx:73
 AliFMDEventInspector.cxx:74
 AliFMDEventInspector.cxx:75
 AliFMDEventInspector.cxx:76
 AliFMDEventInspector.cxx:77
 AliFMDEventInspector.cxx:78
 AliFMDEventInspector.cxx:79
 AliFMDEventInspector.cxx:80
 AliFMDEventInspector.cxx:81
 AliFMDEventInspector.cxx:82
 AliFMDEventInspector.cxx:83
 AliFMDEventInspector.cxx:84
 AliFMDEventInspector.cxx:85
 AliFMDEventInspector.cxx:86
 AliFMDEventInspector.cxx:87
 AliFMDEventInspector.cxx:88
 AliFMDEventInspector.cxx:89
 AliFMDEventInspector.cxx:90
 AliFMDEventInspector.cxx:91
 AliFMDEventInspector.cxx:92
 AliFMDEventInspector.cxx:93
 AliFMDEventInspector.cxx:94
 AliFMDEventInspector.cxx:95
 AliFMDEventInspector.cxx:96
 AliFMDEventInspector.cxx:97
 AliFMDEventInspector.cxx:98
 AliFMDEventInspector.cxx:99
 AliFMDEventInspector.cxx:100
 AliFMDEventInspector.cxx:101
 AliFMDEventInspector.cxx:102
 AliFMDEventInspector.cxx:103
 AliFMDEventInspector.cxx:104
 AliFMDEventInspector.cxx:105
 AliFMDEventInspector.cxx:106
 AliFMDEventInspector.cxx:107
 AliFMDEventInspector.cxx:108
 AliFMDEventInspector.cxx:109
 AliFMDEventInspector.cxx:110
 AliFMDEventInspector.cxx:111
 AliFMDEventInspector.cxx:112
 AliFMDEventInspector.cxx:113
 AliFMDEventInspector.cxx:114
 AliFMDEventInspector.cxx:115
 AliFMDEventInspector.cxx:116
 AliFMDEventInspector.cxx:117
 AliFMDEventInspector.cxx:118
 AliFMDEventInspector.cxx:119
 AliFMDEventInspector.cxx:120
 AliFMDEventInspector.cxx:121
 AliFMDEventInspector.cxx:122
 AliFMDEventInspector.cxx:123
 AliFMDEventInspector.cxx:124
 AliFMDEventInspector.cxx:125
 AliFMDEventInspector.cxx:126
 AliFMDEventInspector.cxx:127
 AliFMDEventInspector.cxx:128
 AliFMDEventInspector.cxx:129
 AliFMDEventInspector.cxx:130
 AliFMDEventInspector.cxx:131
 AliFMDEventInspector.cxx:132
 AliFMDEventInspector.cxx:133
 AliFMDEventInspector.cxx:134
 AliFMDEventInspector.cxx:135
 AliFMDEventInspector.cxx:136
 AliFMDEventInspector.cxx:137
 AliFMDEventInspector.cxx:138
 AliFMDEventInspector.cxx:139
 AliFMDEventInspector.cxx:140
 AliFMDEventInspector.cxx:141
 AliFMDEventInspector.cxx:142
 AliFMDEventInspector.cxx:143
 AliFMDEventInspector.cxx:144
 AliFMDEventInspector.cxx:145
 AliFMDEventInspector.cxx:146
 AliFMDEventInspector.cxx:147
 AliFMDEventInspector.cxx:148
 AliFMDEventInspector.cxx:149
 AliFMDEventInspector.cxx:150
 AliFMDEventInspector.cxx:151
 AliFMDEventInspector.cxx:152
 AliFMDEventInspector.cxx:153
 AliFMDEventInspector.cxx:154
 AliFMDEventInspector.cxx:155
 AliFMDEventInspector.cxx:156
 AliFMDEventInspector.cxx:157
 AliFMDEventInspector.cxx:158
 AliFMDEventInspector.cxx:159
 AliFMDEventInspector.cxx:160
 AliFMDEventInspector.cxx:161
 AliFMDEventInspector.cxx:162
 AliFMDEventInspector.cxx:163
 AliFMDEventInspector.cxx:164
 AliFMDEventInspector.cxx:165
 AliFMDEventInspector.cxx:166
 AliFMDEventInspector.cxx:167
 AliFMDEventInspector.cxx:168
 AliFMDEventInspector.cxx:169
 AliFMDEventInspector.cxx:170
 AliFMDEventInspector.cxx:171
 AliFMDEventInspector.cxx:172
 AliFMDEventInspector.cxx:173
 AliFMDEventInspector.cxx:174
 AliFMDEventInspector.cxx:175
 AliFMDEventInspector.cxx:176
 AliFMDEventInspector.cxx:177
 AliFMDEventInspector.cxx:178
 AliFMDEventInspector.cxx:179
 AliFMDEventInspector.cxx:180
 AliFMDEventInspector.cxx:181
 AliFMDEventInspector.cxx:182
 AliFMDEventInspector.cxx:183
 AliFMDEventInspector.cxx:184
 AliFMDEventInspector.cxx:185
 AliFMDEventInspector.cxx:186
 AliFMDEventInspector.cxx:187
 AliFMDEventInspector.cxx:188
 AliFMDEventInspector.cxx:189
 AliFMDEventInspector.cxx:190
 AliFMDEventInspector.cxx:191
 AliFMDEventInspector.cxx:192
 AliFMDEventInspector.cxx:193
 AliFMDEventInspector.cxx:194
 AliFMDEventInspector.cxx:195
 AliFMDEventInspector.cxx:196
 AliFMDEventInspector.cxx:197
 AliFMDEventInspector.cxx:198
 AliFMDEventInspector.cxx:199
 AliFMDEventInspector.cxx:200
 AliFMDEventInspector.cxx:201
 AliFMDEventInspector.cxx:202
 AliFMDEventInspector.cxx:203
 AliFMDEventInspector.cxx:204
 AliFMDEventInspector.cxx:205
 AliFMDEventInspector.cxx:206
 AliFMDEventInspector.cxx:207
 AliFMDEventInspector.cxx:208
 AliFMDEventInspector.cxx:209
 AliFMDEventInspector.cxx:210
 AliFMDEventInspector.cxx:211
 AliFMDEventInspector.cxx:212
 AliFMDEventInspector.cxx:213
 AliFMDEventInspector.cxx:214
 AliFMDEventInspector.cxx:215
 AliFMDEventInspector.cxx:216
 AliFMDEventInspector.cxx:217
 AliFMDEventInspector.cxx:218
 AliFMDEventInspector.cxx:219
 AliFMDEventInspector.cxx:220
 AliFMDEventInspector.cxx:221
 AliFMDEventInspector.cxx:222
 AliFMDEventInspector.cxx:223
 AliFMDEventInspector.cxx:224
 AliFMDEventInspector.cxx:225
 AliFMDEventInspector.cxx:226
 AliFMDEventInspector.cxx:227
 AliFMDEventInspector.cxx:228
 AliFMDEventInspector.cxx:229
 AliFMDEventInspector.cxx:230
 AliFMDEventInspector.cxx:231
 AliFMDEventInspector.cxx:232
 AliFMDEventInspector.cxx:233
 AliFMDEventInspector.cxx:234
 AliFMDEventInspector.cxx:235
 AliFMDEventInspector.cxx:236
 AliFMDEventInspector.cxx:237
 AliFMDEventInspector.cxx:238
 AliFMDEventInspector.cxx:239
 AliFMDEventInspector.cxx:240
 AliFMDEventInspector.cxx:241
 AliFMDEventInspector.cxx:242
 AliFMDEventInspector.cxx:243
 AliFMDEventInspector.cxx:244
 AliFMDEventInspector.cxx:245
 AliFMDEventInspector.cxx:246
 AliFMDEventInspector.cxx:247
 AliFMDEventInspector.cxx:248
 AliFMDEventInspector.cxx:249
 AliFMDEventInspector.cxx:250
 AliFMDEventInspector.cxx:251
 AliFMDEventInspector.cxx:252
 AliFMDEventInspector.cxx:253
 AliFMDEventInspector.cxx:254
 AliFMDEventInspector.cxx:255
 AliFMDEventInspector.cxx:256
 AliFMDEventInspector.cxx:257
 AliFMDEventInspector.cxx:258
 AliFMDEventInspector.cxx:259
 AliFMDEventInspector.cxx:260
 AliFMDEventInspector.cxx:261
 AliFMDEventInspector.cxx:262
 AliFMDEventInspector.cxx:263
 AliFMDEventInspector.cxx:264
 AliFMDEventInspector.cxx:265
 AliFMDEventInspector.cxx:266
 AliFMDEventInspector.cxx:267
 AliFMDEventInspector.cxx:268
 AliFMDEventInspector.cxx:269
 AliFMDEventInspector.cxx:270
 AliFMDEventInspector.cxx:271
 AliFMDEventInspector.cxx:272
 AliFMDEventInspector.cxx:273
 AliFMDEventInspector.cxx:274
 AliFMDEventInspector.cxx:275
 AliFMDEventInspector.cxx:276
 AliFMDEventInspector.cxx:277
 AliFMDEventInspector.cxx:278
 AliFMDEventInspector.cxx:279
 AliFMDEventInspector.cxx:280
 AliFMDEventInspector.cxx:281
 AliFMDEventInspector.cxx:282
 AliFMDEventInspector.cxx:283
 AliFMDEventInspector.cxx:284
 AliFMDEventInspector.cxx:285
 AliFMDEventInspector.cxx:286
 AliFMDEventInspector.cxx:287
 AliFMDEventInspector.cxx:288
 AliFMDEventInspector.cxx:289
 AliFMDEventInspector.cxx:290
 AliFMDEventInspector.cxx:291
 AliFMDEventInspector.cxx:292
 AliFMDEventInspector.cxx:293
 AliFMDEventInspector.cxx:294
 AliFMDEventInspector.cxx:295
 AliFMDEventInspector.cxx:296
 AliFMDEventInspector.cxx:297
 AliFMDEventInspector.cxx:298
 AliFMDEventInspector.cxx:299
 AliFMDEventInspector.cxx:300
 AliFMDEventInspector.cxx:301
 AliFMDEventInspector.cxx:302
 AliFMDEventInspector.cxx:303
 AliFMDEventInspector.cxx:304
 AliFMDEventInspector.cxx:305
 AliFMDEventInspector.cxx:306
 AliFMDEventInspector.cxx:307
 AliFMDEventInspector.cxx:308
 AliFMDEventInspector.cxx:309
 AliFMDEventInspector.cxx:310
 AliFMDEventInspector.cxx:311
 AliFMDEventInspector.cxx:312
 AliFMDEventInspector.cxx:313
 AliFMDEventInspector.cxx:314
 AliFMDEventInspector.cxx:315
 AliFMDEventInspector.cxx:316
 AliFMDEventInspector.cxx:317
 AliFMDEventInspector.cxx:318
 AliFMDEventInspector.cxx:319
 AliFMDEventInspector.cxx:320
 AliFMDEventInspector.cxx:321
 AliFMDEventInspector.cxx:322
 AliFMDEventInspector.cxx:323
 AliFMDEventInspector.cxx:324
 AliFMDEventInspector.cxx:325
 AliFMDEventInspector.cxx:326
 AliFMDEventInspector.cxx:327
 AliFMDEventInspector.cxx:328
 AliFMDEventInspector.cxx:329
 AliFMDEventInspector.cxx:330
 AliFMDEventInspector.cxx:331
 AliFMDEventInspector.cxx:332
 AliFMDEventInspector.cxx:333
 AliFMDEventInspector.cxx:334
 AliFMDEventInspector.cxx:335
 AliFMDEventInspector.cxx:336
 AliFMDEventInspector.cxx:337
 AliFMDEventInspector.cxx:338
 AliFMDEventInspector.cxx:339
 AliFMDEventInspector.cxx:340
 AliFMDEventInspector.cxx:341
 AliFMDEventInspector.cxx:342
 AliFMDEventInspector.cxx:343
 AliFMDEventInspector.cxx:344
 AliFMDEventInspector.cxx:345
 AliFMDEventInspector.cxx:346
 AliFMDEventInspector.cxx:347
 AliFMDEventInspector.cxx:348
 AliFMDEventInspector.cxx:349
 AliFMDEventInspector.cxx:350
 AliFMDEventInspector.cxx:351
 AliFMDEventInspector.cxx:352
 AliFMDEventInspector.cxx:353
 AliFMDEventInspector.cxx:354
 AliFMDEventInspector.cxx:355
 AliFMDEventInspector.cxx:356
 AliFMDEventInspector.cxx:357
 AliFMDEventInspector.cxx:358
 AliFMDEventInspector.cxx:359
 AliFMDEventInspector.cxx:360
 AliFMDEventInspector.cxx:361
 AliFMDEventInspector.cxx:362
 AliFMDEventInspector.cxx:363
 AliFMDEventInspector.cxx:364
 AliFMDEventInspector.cxx:365
 AliFMDEventInspector.cxx:366
 AliFMDEventInspector.cxx:367
 AliFMDEventInspector.cxx:368
 AliFMDEventInspector.cxx:369
 AliFMDEventInspector.cxx:370
 AliFMDEventInspector.cxx:371
 AliFMDEventInspector.cxx:372
 AliFMDEventInspector.cxx:373
 AliFMDEventInspector.cxx:374
 AliFMDEventInspector.cxx:375
 AliFMDEventInspector.cxx:376
 AliFMDEventInspector.cxx:377
 AliFMDEventInspector.cxx:378
 AliFMDEventInspector.cxx:379
 AliFMDEventInspector.cxx:380
 AliFMDEventInspector.cxx:381
 AliFMDEventInspector.cxx:382
 AliFMDEventInspector.cxx:383
 AliFMDEventInspector.cxx:384
 AliFMDEventInspector.cxx:385
 AliFMDEventInspector.cxx:386
 AliFMDEventInspector.cxx:387
 AliFMDEventInspector.cxx:388
 AliFMDEventInspector.cxx:389
 AliFMDEventInspector.cxx:390
 AliFMDEventInspector.cxx:391
 AliFMDEventInspector.cxx:392
 AliFMDEventInspector.cxx:393
 AliFMDEventInspector.cxx:394
 AliFMDEventInspector.cxx:395
 AliFMDEventInspector.cxx:396
 AliFMDEventInspector.cxx:397
 AliFMDEventInspector.cxx:398
 AliFMDEventInspector.cxx:399
 AliFMDEventInspector.cxx:400
 AliFMDEventInspector.cxx:401
 AliFMDEventInspector.cxx:402
 AliFMDEventInspector.cxx:403
 AliFMDEventInspector.cxx:404
 AliFMDEventInspector.cxx:405
 AliFMDEventInspector.cxx:406
 AliFMDEventInspector.cxx:407
 AliFMDEventInspector.cxx:408
 AliFMDEventInspector.cxx:409
 AliFMDEventInspector.cxx:410
 AliFMDEventInspector.cxx:411
 AliFMDEventInspector.cxx:412
 AliFMDEventInspector.cxx:413
 AliFMDEventInspector.cxx:414
 AliFMDEventInspector.cxx:415
 AliFMDEventInspector.cxx:416
 AliFMDEventInspector.cxx:417
 AliFMDEventInspector.cxx:418
 AliFMDEventInspector.cxx:419
 AliFMDEventInspector.cxx:420
 AliFMDEventInspector.cxx:421
 AliFMDEventInspector.cxx:422
 AliFMDEventInspector.cxx:423
 AliFMDEventInspector.cxx:424
 AliFMDEventInspector.cxx:425
 AliFMDEventInspector.cxx:426
 AliFMDEventInspector.cxx:427
 AliFMDEventInspector.cxx:428
 AliFMDEventInspector.cxx:429
 AliFMDEventInspector.cxx:430
 AliFMDEventInspector.cxx:431
 AliFMDEventInspector.cxx:432
 AliFMDEventInspector.cxx:433
 AliFMDEventInspector.cxx:434
 AliFMDEventInspector.cxx:435
 AliFMDEventInspector.cxx:436
 AliFMDEventInspector.cxx:437
 AliFMDEventInspector.cxx:438
 AliFMDEventInspector.cxx:439
 AliFMDEventInspector.cxx:440
 AliFMDEventInspector.cxx:441
 AliFMDEventInspector.cxx:442
 AliFMDEventInspector.cxx:443
 AliFMDEventInspector.cxx:444
 AliFMDEventInspector.cxx:445
 AliFMDEventInspector.cxx:446
 AliFMDEventInspector.cxx:447
 AliFMDEventInspector.cxx:448
 AliFMDEventInspector.cxx:449
 AliFMDEventInspector.cxx:450
 AliFMDEventInspector.cxx:451
 AliFMDEventInspector.cxx:452
 AliFMDEventInspector.cxx:453
 AliFMDEventInspector.cxx:454
 AliFMDEventInspector.cxx:455
 AliFMDEventInspector.cxx:456
 AliFMDEventInspector.cxx:457
 AliFMDEventInspector.cxx:458
 AliFMDEventInspector.cxx:459
 AliFMDEventInspector.cxx:460
 AliFMDEventInspector.cxx:461
 AliFMDEventInspector.cxx:462
 AliFMDEventInspector.cxx:463
 AliFMDEventInspector.cxx:464
 AliFMDEventInspector.cxx:465
 AliFMDEventInspector.cxx:466
 AliFMDEventInspector.cxx:467
 AliFMDEventInspector.cxx:468
 AliFMDEventInspector.cxx:469
 AliFMDEventInspector.cxx:470
 AliFMDEventInspector.cxx:471
 AliFMDEventInspector.cxx:472
 AliFMDEventInspector.cxx:473
 AliFMDEventInspector.cxx:474
 AliFMDEventInspector.cxx:475
 AliFMDEventInspector.cxx:476
 AliFMDEventInspector.cxx:477
 AliFMDEventInspector.cxx:478
 AliFMDEventInspector.cxx:479
 AliFMDEventInspector.cxx:480
 AliFMDEventInspector.cxx:481
 AliFMDEventInspector.cxx:482
 AliFMDEventInspector.cxx:483
 AliFMDEventInspector.cxx:484
 AliFMDEventInspector.cxx:485
 AliFMDEventInspector.cxx:486
 AliFMDEventInspector.cxx:487
 AliFMDEventInspector.cxx:488
 AliFMDEventInspector.cxx:489
 AliFMDEventInspector.cxx:490
 AliFMDEventInspector.cxx:491
 AliFMDEventInspector.cxx:492
 AliFMDEventInspector.cxx:493
 AliFMDEventInspector.cxx:494
 AliFMDEventInspector.cxx:495
 AliFMDEventInspector.cxx:496
 AliFMDEventInspector.cxx:497
 AliFMDEventInspector.cxx:498
 AliFMDEventInspector.cxx:499
 AliFMDEventInspector.cxx:500
 AliFMDEventInspector.cxx:501
 AliFMDEventInspector.cxx:502
 AliFMDEventInspector.cxx:503
 AliFMDEventInspector.cxx:504
 AliFMDEventInspector.cxx:505
 AliFMDEventInspector.cxx:506
 AliFMDEventInspector.cxx:507
 AliFMDEventInspector.cxx:508
 AliFMDEventInspector.cxx:509
 AliFMDEventInspector.cxx:510
 AliFMDEventInspector.cxx:511
 AliFMDEventInspector.cxx:512
 AliFMDEventInspector.cxx:513
 AliFMDEventInspector.cxx:514
 AliFMDEventInspector.cxx:515
 AliFMDEventInspector.cxx:516
 AliFMDEventInspector.cxx:517
 AliFMDEventInspector.cxx:518
 AliFMDEventInspector.cxx:519
 AliFMDEventInspector.cxx:520
 AliFMDEventInspector.cxx:521
 AliFMDEventInspector.cxx:522
 AliFMDEventInspector.cxx:523
 AliFMDEventInspector.cxx:524
 AliFMDEventInspector.cxx:525
 AliFMDEventInspector.cxx:526
 AliFMDEventInspector.cxx:527
 AliFMDEventInspector.cxx:528
 AliFMDEventInspector.cxx:529
 AliFMDEventInspector.cxx:530
 AliFMDEventInspector.cxx:531
 AliFMDEventInspector.cxx:532
 AliFMDEventInspector.cxx:533
 AliFMDEventInspector.cxx:534
 AliFMDEventInspector.cxx:535
 AliFMDEventInspector.cxx:536
 AliFMDEventInspector.cxx:537
 AliFMDEventInspector.cxx:538
 AliFMDEventInspector.cxx:539
 AliFMDEventInspector.cxx:540
 AliFMDEventInspector.cxx:541
 AliFMDEventInspector.cxx:542
 AliFMDEventInspector.cxx:543
 AliFMDEventInspector.cxx:544
 AliFMDEventInspector.cxx:545
 AliFMDEventInspector.cxx:546
 AliFMDEventInspector.cxx:547
 AliFMDEventInspector.cxx:548
 AliFMDEventInspector.cxx:549
 AliFMDEventInspector.cxx:550
 AliFMDEventInspector.cxx:551
 AliFMDEventInspector.cxx:552
 AliFMDEventInspector.cxx:553
 AliFMDEventInspector.cxx:554
 AliFMDEventInspector.cxx:555
 AliFMDEventInspector.cxx:556
 AliFMDEventInspector.cxx:557
 AliFMDEventInspector.cxx:558
 AliFMDEventInspector.cxx:559
 AliFMDEventInspector.cxx:560
 AliFMDEventInspector.cxx:561
 AliFMDEventInspector.cxx:562
 AliFMDEventInspector.cxx:563
 AliFMDEventInspector.cxx:564
 AliFMDEventInspector.cxx:565
 AliFMDEventInspector.cxx:566
 AliFMDEventInspector.cxx:567
 AliFMDEventInspector.cxx:568
 AliFMDEventInspector.cxx:569
 AliFMDEventInspector.cxx:570
 AliFMDEventInspector.cxx:571
 AliFMDEventInspector.cxx:572
 AliFMDEventInspector.cxx:573
 AliFMDEventInspector.cxx:574
 AliFMDEventInspector.cxx:575
 AliFMDEventInspector.cxx:576
 AliFMDEventInspector.cxx:577
 AliFMDEventInspector.cxx:578
 AliFMDEventInspector.cxx:579
 AliFMDEventInspector.cxx:580
 AliFMDEventInspector.cxx:581
 AliFMDEventInspector.cxx:582
 AliFMDEventInspector.cxx:583
 AliFMDEventInspector.cxx:584
 AliFMDEventInspector.cxx:585
 AliFMDEventInspector.cxx:586
 AliFMDEventInspector.cxx:587
 AliFMDEventInspector.cxx:588
 AliFMDEventInspector.cxx:589
 AliFMDEventInspector.cxx:590
 AliFMDEventInspector.cxx:591
 AliFMDEventInspector.cxx:592
 AliFMDEventInspector.cxx:593
 AliFMDEventInspector.cxx:594
 AliFMDEventInspector.cxx:595
 AliFMDEventInspector.cxx:596
 AliFMDEventInspector.cxx:597
 AliFMDEventInspector.cxx:598
 AliFMDEventInspector.cxx:599
 AliFMDEventInspector.cxx:600
 AliFMDEventInspector.cxx:601
 AliFMDEventInspector.cxx:602
 AliFMDEventInspector.cxx:603
 AliFMDEventInspector.cxx:604
 AliFMDEventInspector.cxx:605
 AliFMDEventInspector.cxx:606
 AliFMDEventInspector.cxx:607
 AliFMDEventInspector.cxx:608
 AliFMDEventInspector.cxx:609
 AliFMDEventInspector.cxx:610
 AliFMDEventInspector.cxx:611
 AliFMDEventInspector.cxx:612
 AliFMDEventInspector.cxx:613
 AliFMDEventInspector.cxx:614
 AliFMDEventInspector.cxx:615
 AliFMDEventInspector.cxx:616
 AliFMDEventInspector.cxx:617
 AliFMDEventInspector.cxx:618
 AliFMDEventInspector.cxx:619
 AliFMDEventInspector.cxx:620
 AliFMDEventInspector.cxx:621
 AliFMDEventInspector.cxx:622
 AliFMDEventInspector.cxx:623
 AliFMDEventInspector.cxx:624
 AliFMDEventInspector.cxx:625
 AliFMDEventInspector.cxx:626
 AliFMDEventInspector.cxx:627
 AliFMDEventInspector.cxx:628
 AliFMDEventInspector.cxx:629
 AliFMDEventInspector.cxx:630
 AliFMDEventInspector.cxx:631
 AliFMDEventInspector.cxx:632
 AliFMDEventInspector.cxx:633
 AliFMDEventInspector.cxx:634
 AliFMDEventInspector.cxx:635
 AliFMDEventInspector.cxx:636
 AliFMDEventInspector.cxx:637
 AliFMDEventInspector.cxx:638
 AliFMDEventInspector.cxx:639
 AliFMDEventInspector.cxx:640
 AliFMDEventInspector.cxx:641
 AliFMDEventInspector.cxx:642
 AliFMDEventInspector.cxx:643
 AliFMDEventInspector.cxx:644
 AliFMDEventInspector.cxx:645
 AliFMDEventInspector.cxx:646
 AliFMDEventInspector.cxx:647
 AliFMDEventInspector.cxx:648
 AliFMDEventInspector.cxx:649
 AliFMDEventInspector.cxx:650
 AliFMDEventInspector.cxx:651
 AliFMDEventInspector.cxx:652
 AliFMDEventInspector.cxx:653
 AliFMDEventInspector.cxx:654
 AliFMDEventInspector.cxx:655
 AliFMDEventInspector.cxx:656
 AliFMDEventInspector.cxx:657
 AliFMDEventInspector.cxx:658
 AliFMDEventInspector.cxx:659
 AliFMDEventInspector.cxx:660
 AliFMDEventInspector.cxx:661
 AliFMDEventInspector.cxx:662
 AliFMDEventInspector.cxx:663
 AliFMDEventInspector.cxx:664
 AliFMDEventInspector.cxx:665
 AliFMDEventInspector.cxx:666
 AliFMDEventInspector.cxx:667
 AliFMDEventInspector.cxx:668
 AliFMDEventInspector.cxx:669
 AliFMDEventInspector.cxx:670
 AliFMDEventInspector.cxx:671
 AliFMDEventInspector.cxx:672
 AliFMDEventInspector.cxx:673
 AliFMDEventInspector.cxx:674
 AliFMDEventInspector.cxx:675
 AliFMDEventInspector.cxx:676
 AliFMDEventInspector.cxx:677
 AliFMDEventInspector.cxx:678
 AliFMDEventInspector.cxx:679
 AliFMDEventInspector.cxx:680
 AliFMDEventInspector.cxx:681
 AliFMDEventInspector.cxx:682
 AliFMDEventInspector.cxx:683
 AliFMDEventInspector.cxx:684
 AliFMDEventInspector.cxx:685
 AliFMDEventInspector.cxx:686
 AliFMDEventInspector.cxx:687
 AliFMDEventInspector.cxx:688
 AliFMDEventInspector.cxx:689
 AliFMDEventInspector.cxx:690
 AliFMDEventInspector.cxx:691
 AliFMDEventInspector.cxx:692
 AliFMDEventInspector.cxx:693
 AliFMDEventInspector.cxx:694
 AliFMDEventInspector.cxx:695
 AliFMDEventInspector.cxx:696
 AliFMDEventInspector.cxx:697
 AliFMDEventInspector.cxx:698
 AliFMDEventInspector.cxx:699
 AliFMDEventInspector.cxx:700
 AliFMDEventInspector.cxx:701
 AliFMDEventInspector.cxx:702
 AliFMDEventInspector.cxx:703
 AliFMDEventInspector.cxx:704
 AliFMDEventInspector.cxx:705
 AliFMDEventInspector.cxx:706
 AliFMDEventInspector.cxx:707
 AliFMDEventInspector.cxx:708
 AliFMDEventInspector.cxx:709
 AliFMDEventInspector.cxx:710
 AliFMDEventInspector.cxx:711
 AliFMDEventInspector.cxx:712
 AliFMDEventInspector.cxx:713
 AliFMDEventInspector.cxx:714
 AliFMDEventInspector.cxx:715
 AliFMDEventInspector.cxx:716
 AliFMDEventInspector.cxx:717
 AliFMDEventInspector.cxx:718
 AliFMDEventInspector.cxx:719
 AliFMDEventInspector.cxx:720
 AliFMDEventInspector.cxx:721
 AliFMDEventInspector.cxx:722
 AliFMDEventInspector.cxx:723
 AliFMDEventInspector.cxx:724
 AliFMDEventInspector.cxx:725
 AliFMDEventInspector.cxx:726
 AliFMDEventInspector.cxx:727
 AliFMDEventInspector.cxx:728
 AliFMDEventInspector.cxx:729
 AliFMDEventInspector.cxx:730
 AliFMDEventInspector.cxx:731
 AliFMDEventInspector.cxx:732
 AliFMDEventInspector.cxx:733
 AliFMDEventInspector.cxx:734
 AliFMDEventInspector.cxx:735
 AliFMDEventInspector.cxx:736
 AliFMDEventInspector.cxx:737
 AliFMDEventInspector.cxx:738
 AliFMDEventInspector.cxx:739
 AliFMDEventInspector.cxx:740
 AliFMDEventInspector.cxx:741
 AliFMDEventInspector.cxx:742
 AliFMDEventInspector.cxx:743
 AliFMDEventInspector.cxx:744
 AliFMDEventInspector.cxx:745
 AliFMDEventInspector.cxx:746
 AliFMDEventInspector.cxx:747
 AliFMDEventInspector.cxx:748
 AliFMDEventInspector.cxx:749
 AliFMDEventInspector.cxx:750
 AliFMDEventInspector.cxx:751
 AliFMDEventInspector.cxx:752
 AliFMDEventInspector.cxx:753
 AliFMDEventInspector.cxx:754
 AliFMDEventInspector.cxx:755
 AliFMDEventInspector.cxx:756
 AliFMDEventInspector.cxx:757
 AliFMDEventInspector.cxx:758
 AliFMDEventInspector.cxx:759
 AliFMDEventInspector.cxx:760
 AliFMDEventInspector.cxx:761
 AliFMDEventInspector.cxx:762
 AliFMDEventInspector.cxx:763
 AliFMDEventInspector.cxx:764
 AliFMDEventInspector.cxx:765
 AliFMDEventInspector.cxx:766
 AliFMDEventInspector.cxx:767
 AliFMDEventInspector.cxx:768
 AliFMDEventInspector.cxx:769
 AliFMDEventInspector.cxx:770
 AliFMDEventInspector.cxx:771
 AliFMDEventInspector.cxx:772
 AliFMDEventInspector.cxx:773
 AliFMDEventInspector.cxx:774
 AliFMDEventInspector.cxx:775
 AliFMDEventInspector.cxx:776
 AliFMDEventInspector.cxx:777
 AliFMDEventInspector.cxx:778
 AliFMDEventInspector.cxx:779
 AliFMDEventInspector.cxx:780
 AliFMDEventInspector.cxx:781
 AliFMDEventInspector.cxx:782
 AliFMDEventInspector.cxx:783
 AliFMDEventInspector.cxx:784
 AliFMDEventInspector.cxx:785
 AliFMDEventInspector.cxx:786
 AliFMDEventInspector.cxx:787
 AliFMDEventInspector.cxx:788
 AliFMDEventInspector.cxx:789
 AliFMDEventInspector.cxx:790
 AliFMDEventInspector.cxx:791
 AliFMDEventInspector.cxx:792
 AliFMDEventInspector.cxx:793
 AliFMDEventInspector.cxx:794
 AliFMDEventInspector.cxx:795
 AliFMDEventInspector.cxx:796
 AliFMDEventInspector.cxx:797
 AliFMDEventInspector.cxx:798
 AliFMDEventInspector.cxx:799
 AliFMDEventInspector.cxx:800
 AliFMDEventInspector.cxx:801
 AliFMDEventInspector.cxx:802
 AliFMDEventInspector.cxx:803
 AliFMDEventInspector.cxx:804
 AliFMDEventInspector.cxx:805
 AliFMDEventInspector.cxx:806
 AliFMDEventInspector.cxx:807
 AliFMDEventInspector.cxx:808
 AliFMDEventInspector.cxx:809
 AliFMDEventInspector.cxx:810
 AliFMDEventInspector.cxx:811
 AliFMDEventInspector.cxx:812
 AliFMDEventInspector.cxx:813
 AliFMDEventInspector.cxx:814
 AliFMDEventInspector.cxx:815
 AliFMDEventInspector.cxx:816
 AliFMDEventInspector.cxx:817
 AliFMDEventInspector.cxx:818
 AliFMDEventInspector.cxx:819
 AliFMDEventInspector.cxx:820
 AliFMDEventInspector.cxx:821
 AliFMDEventInspector.cxx:822
 AliFMDEventInspector.cxx:823
 AliFMDEventInspector.cxx:824
 AliFMDEventInspector.cxx:825
 AliFMDEventInspector.cxx:826
 AliFMDEventInspector.cxx:827
 AliFMDEventInspector.cxx:828
 AliFMDEventInspector.cxx:829
 AliFMDEventInspector.cxx:830
 AliFMDEventInspector.cxx:831
 AliFMDEventInspector.cxx:832
 AliFMDEventInspector.cxx:833
 AliFMDEventInspector.cxx:834
 AliFMDEventInspector.cxx:835
 AliFMDEventInspector.cxx:836
 AliFMDEventInspector.cxx:837
 AliFMDEventInspector.cxx:838
 AliFMDEventInspector.cxx:839
 AliFMDEventInspector.cxx:840
 AliFMDEventInspector.cxx:841
 AliFMDEventInspector.cxx:842
 AliFMDEventInspector.cxx:843
 AliFMDEventInspector.cxx:844
 AliFMDEventInspector.cxx:845
 AliFMDEventInspector.cxx:846
 AliFMDEventInspector.cxx:847
 AliFMDEventInspector.cxx:848
 AliFMDEventInspector.cxx:849
 AliFMDEventInspector.cxx:850
 AliFMDEventInspector.cxx:851
 AliFMDEventInspector.cxx:852
 AliFMDEventInspector.cxx:853
 AliFMDEventInspector.cxx:854
 AliFMDEventInspector.cxx:855
 AliFMDEventInspector.cxx:856
 AliFMDEventInspector.cxx:857
 AliFMDEventInspector.cxx:858
 AliFMDEventInspector.cxx:859
 AliFMDEventInspector.cxx:860
 AliFMDEventInspector.cxx:861
 AliFMDEventInspector.cxx:862
 AliFMDEventInspector.cxx:863
 AliFMDEventInspector.cxx:864
 AliFMDEventInspector.cxx:865
 AliFMDEventInspector.cxx:866
 AliFMDEventInspector.cxx:867
 AliFMDEventInspector.cxx:868
 AliFMDEventInspector.cxx:869
 AliFMDEventInspector.cxx:870
 AliFMDEventInspector.cxx:871
 AliFMDEventInspector.cxx:872
 AliFMDEventInspector.cxx:873
 AliFMDEventInspector.cxx:874
 AliFMDEventInspector.cxx:875
 AliFMDEventInspector.cxx:876
 AliFMDEventInspector.cxx:877
 AliFMDEventInspector.cxx:878
 AliFMDEventInspector.cxx:879
 AliFMDEventInspector.cxx:880
 AliFMDEventInspector.cxx:881
 AliFMDEventInspector.cxx:882
 AliFMDEventInspector.cxx:883
 AliFMDEventInspector.cxx:884
 AliFMDEventInspector.cxx:885
 AliFMDEventInspector.cxx:886
 AliFMDEventInspector.cxx:887
 AliFMDEventInspector.cxx:888
 AliFMDEventInspector.cxx:889
 AliFMDEventInspector.cxx:890
 AliFMDEventInspector.cxx:891
 AliFMDEventInspector.cxx:892
 AliFMDEventInspector.cxx:893
 AliFMDEventInspector.cxx:894
 AliFMDEventInspector.cxx:895
 AliFMDEventInspector.cxx:896
 AliFMDEventInspector.cxx:897
 AliFMDEventInspector.cxx:898
 AliFMDEventInspector.cxx:899
 AliFMDEventInspector.cxx:900
 AliFMDEventInspector.cxx:901
 AliFMDEventInspector.cxx:902
 AliFMDEventInspector.cxx:903
 AliFMDEventInspector.cxx:904
 AliFMDEventInspector.cxx:905
 AliFMDEventInspector.cxx:906
 AliFMDEventInspector.cxx:907
 AliFMDEventInspector.cxx:908
 AliFMDEventInspector.cxx:909
 AliFMDEventInspector.cxx:910
 AliFMDEventInspector.cxx:911
 AliFMDEventInspector.cxx:912
 AliFMDEventInspector.cxx:913
 AliFMDEventInspector.cxx:914
 AliFMDEventInspector.cxx:915
 AliFMDEventInspector.cxx:916
 AliFMDEventInspector.cxx:917
 AliFMDEventInspector.cxx:918
 AliFMDEventInspector.cxx:919
 AliFMDEventInspector.cxx:920
 AliFMDEventInspector.cxx:921
 AliFMDEventInspector.cxx:922
 AliFMDEventInspector.cxx:923
 AliFMDEventInspector.cxx:924
 AliFMDEventInspector.cxx:925
 AliFMDEventInspector.cxx:926
 AliFMDEventInspector.cxx:927
 AliFMDEventInspector.cxx:928
 AliFMDEventInspector.cxx:929
 AliFMDEventInspector.cxx:930
 AliFMDEventInspector.cxx:931
 AliFMDEventInspector.cxx:932
 AliFMDEventInspector.cxx:933
 AliFMDEventInspector.cxx:934
 AliFMDEventInspector.cxx:935
 AliFMDEventInspector.cxx:936
 AliFMDEventInspector.cxx:937
 AliFMDEventInspector.cxx:938
 AliFMDEventInspector.cxx:939
 AliFMDEventInspector.cxx:940
 AliFMDEventInspector.cxx:941
 AliFMDEventInspector.cxx:942
 AliFMDEventInspector.cxx:943
 AliFMDEventInspector.cxx:944
 AliFMDEventInspector.cxx:945
 AliFMDEventInspector.cxx:946
 AliFMDEventInspector.cxx:947
 AliFMDEventInspector.cxx:948
 AliFMDEventInspector.cxx:949
 AliFMDEventInspector.cxx:950
 AliFMDEventInspector.cxx:951
 AliFMDEventInspector.cxx:952
 AliFMDEventInspector.cxx:953
 AliFMDEventInspector.cxx:954
 AliFMDEventInspector.cxx:955
 AliFMDEventInspector.cxx:956
 AliFMDEventInspector.cxx:957
 AliFMDEventInspector.cxx:958
 AliFMDEventInspector.cxx:959
 AliFMDEventInspector.cxx:960
 AliFMDEventInspector.cxx:961
 AliFMDEventInspector.cxx:962
 AliFMDEventInspector.cxx:963
 AliFMDEventInspector.cxx:964
 AliFMDEventInspector.cxx:965
 AliFMDEventInspector.cxx:966
 AliFMDEventInspector.cxx:967
 AliFMDEventInspector.cxx:968
 AliFMDEventInspector.cxx:969
 AliFMDEventInspector.cxx:970
 AliFMDEventInspector.cxx:971
 AliFMDEventInspector.cxx:972
 AliFMDEventInspector.cxx:973
 AliFMDEventInspector.cxx:974
 AliFMDEventInspector.cxx:975
 AliFMDEventInspector.cxx:976
 AliFMDEventInspector.cxx:977
 AliFMDEventInspector.cxx:978
 AliFMDEventInspector.cxx:979
 AliFMDEventInspector.cxx:980
 AliFMDEventInspector.cxx:981
 AliFMDEventInspector.cxx:982
 AliFMDEventInspector.cxx:983
 AliFMDEventInspector.cxx:984
 AliFMDEventInspector.cxx:985
 AliFMDEventInspector.cxx:986
 AliFMDEventInspector.cxx:987
 AliFMDEventInspector.cxx:988
 AliFMDEventInspector.cxx:989
 AliFMDEventInspector.cxx:990
 AliFMDEventInspector.cxx:991
 AliFMDEventInspector.cxx:992
 AliFMDEventInspector.cxx:993
 AliFMDEventInspector.cxx:994
 AliFMDEventInspector.cxx:995
 AliFMDEventInspector.cxx:996
 AliFMDEventInspector.cxx:997
 AliFMDEventInspector.cxx:998
 AliFMDEventInspector.cxx:999
 AliFMDEventInspector.cxx:1000
 AliFMDEventInspector.cxx:1001
 AliFMDEventInspector.cxx:1002
 AliFMDEventInspector.cxx:1003
 AliFMDEventInspector.cxx:1004
 AliFMDEventInspector.cxx:1005
 AliFMDEventInspector.cxx:1006
 AliFMDEventInspector.cxx:1007
 AliFMDEventInspector.cxx:1008
 AliFMDEventInspector.cxx:1009
 AliFMDEventInspector.cxx:1010
 AliFMDEventInspector.cxx:1011
 AliFMDEventInspector.cxx:1012
 AliFMDEventInspector.cxx:1013
 AliFMDEventInspector.cxx:1014
 AliFMDEventInspector.cxx:1015
 AliFMDEventInspector.cxx:1016
 AliFMDEventInspector.cxx:1017
 AliFMDEventInspector.cxx:1018
 AliFMDEventInspector.cxx:1019
 AliFMDEventInspector.cxx:1020
 AliFMDEventInspector.cxx:1021
 AliFMDEventInspector.cxx:1022
 AliFMDEventInspector.cxx:1023
 AliFMDEventInspector.cxx:1024
 AliFMDEventInspector.cxx:1025
 AliFMDEventInspector.cxx:1026
 AliFMDEventInspector.cxx:1027
 AliFMDEventInspector.cxx:1028
 AliFMDEventInspector.cxx:1029
 AliFMDEventInspector.cxx:1030
 AliFMDEventInspector.cxx:1031
 AliFMDEventInspector.cxx:1032
 AliFMDEventInspector.cxx:1033
 AliFMDEventInspector.cxx:1034
 AliFMDEventInspector.cxx:1035
 AliFMDEventInspector.cxx:1036
 AliFMDEventInspector.cxx:1037
 AliFMDEventInspector.cxx:1038
 AliFMDEventInspector.cxx:1039
 AliFMDEventInspector.cxx:1040
 AliFMDEventInspector.cxx:1041
 AliFMDEventInspector.cxx:1042
 AliFMDEventInspector.cxx:1043
 AliFMDEventInspector.cxx:1044
 AliFMDEventInspector.cxx:1045
 AliFMDEventInspector.cxx:1046
 AliFMDEventInspector.cxx:1047
 AliFMDEventInspector.cxx:1048
 AliFMDEventInspector.cxx:1049
 AliFMDEventInspector.cxx:1050
 AliFMDEventInspector.cxx:1051
 AliFMDEventInspector.cxx:1052
 AliFMDEventInspector.cxx:1053
 AliFMDEventInspector.cxx:1054
 AliFMDEventInspector.cxx:1055
 AliFMDEventInspector.cxx:1056
 AliFMDEventInspector.cxx:1057
 AliFMDEventInspector.cxx:1058
 AliFMDEventInspector.cxx:1059
 AliFMDEventInspector.cxx:1060
 AliFMDEventInspector.cxx:1061
 AliFMDEventInspector.cxx:1062
 AliFMDEventInspector.cxx:1063
 AliFMDEventInspector.cxx:1064
 AliFMDEventInspector.cxx:1065
 AliFMDEventInspector.cxx:1066
 AliFMDEventInspector.cxx:1067
 AliFMDEventInspector.cxx:1068
 AliFMDEventInspector.cxx:1069
 AliFMDEventInspector.cxx:1070
 AliFMDEventInspector.cxx:1071
 AliFMDEventInspector.cxx:1072
 AliFMDEventInspector.cxx:1073
 AliFMDEventInspector.cxx:1074
 AliFMDEventInspector.cxx:1075
 AliFMDEventInspector.cxx:1076
 AliFMDEventInspector.cxx:1077
 AliFMDEventInspector.cxx:1078
 AliFMDEventInspector.cxx:1079
 AliFMDEventInspector.cxx:1080
 AliFMDEventInspector.cxx:1081
 AliFMDEventInspector.cxx:1082
 AliFMDEventInspector.cxx:1083
 AliFMDEventInspector.cxx:1084
 AliFMDEventInspector.cxx:1085
 AliFMDEventInspector.cxx:1086
 AliFMDEventInspector.cxx:1087
 AliFMDEventInspector.cxx:1088
 AliFMDEventInspector.cxx:1089
 AliFMDEventInspector.cxx:1090
 AliFMDEventInspector.cxx:1091
 AliFMDEventInspector.cxx:1092
 AliFMDEventInspector.cxx:1093
 AliFMDEventInspector.cxx:1094
 AliFMDEventInspector.cxx:1095
 AliFMDEventInspector.cxx:1096
 AliFMDEventInspector.cxx:1097
 AliFMDEventInspector.cxx:1098
 AliFMDEventInspector.cxx:1099
 AliFMDEventInspector.cxx:1100
 AliFMDEventInspector.cxx:1101
 AliFMDEventInspector.cxx:1102
 AliFMDEventInspector.cxx:1103
 AliFMDEventInspector.cxx:1104
 AliFMDEventInspector.cxx:1105
 AliFMDEventInspector.cxx:1106
 AliFMDEventInspector.cxx:1107
 AliFMDEventInspector.cxx:1108
 AliFMDEventInspector.cxx:1109
 AliFMDEventInspector.cxx:1110
 AliFMDEventInspector.cxx:1111
 AliFMDEventInspector.cxx:1112
 AliFMDEventInspector.cxx:1113
 AliFMDEventInspector.cxx:1114
 AliFMDEventInspector.cxx:1115
 AliFMDEventInspector.cxx:1116
 AliFMDEventInspector.cxx:1117
 AliFMDEventInspector.cxx:1118
 AliFMDEventInspector.cxx:1119
 AliFMDEventInspector.cxx:1120
 AliFMDEventInspector.cxx:1121
 AliFMDEventInspector.cxx:1122
 AliFMDEventInspector.cxx:1123
 AliFMDEventInspector.cxx:1124
 AliFMDEventInspector.cxx:1125
 AliFMDEventInspector.cxx:1126
 AliFMDEventInspector.cxx:1127
 AliFMDEventInspector.cxx:1128
 AliFMDEventInspector.cxx:1129
 AliFMDEventInspector.cxx:1130
 AliFMDEventInspector.cxx:1131
 AliFMDEventInspector.cxx:1132
 AliFMDEventInspector.cxx:1133
 AliFMDEventInspector.cxx:1134
 AliFMDEventInspector.cxx:1135
 AliFMDEventInspector.cxx:1136
 AliFMDEventInspector.cxx:1137
 AliFMDEventInspector.cxx:1138
 AliFMDEventInspector.cxx:1139
 AliFMDEventInspector.cxx:1140
 AliFMDEventInspector.cxx:1141
 AliFMDEventInspector.cxx:1142
 AliFMDEventInspector.cxx:1143
 AliFMDEventInspector.cxx:1144
 AliFMDEventInspector.cxx:1145
 AliFMDEventInspector.cxx:1146
 AliFMDEventInspector.cxx:1147
 AliFMDEventInspector.cxx:1148
 AliFMDEventInspector.cxx:1149
 AliFMDEventInspector.cxx:1150
 AliFMDEventInspector.cxx:1151
 AliFMDEventInspector.cxx:1152
 AliFMDEventInspector.cxx:1153
 AliFMDEventInspector.cxx:1154
 AliFMDEventInspector.cxx:1155
 AliFMDEventInspector.cxx:1156
 AliFMDEventInspector.cxx:1157
 AliFMDEventInspector.cxx:1158
 AliFMDEventInspector.cxx:1159
 AliFMDEventInspector.cxx:1160
 AliFMDEventInspector.cxx:1161
 AliFMDEventInspector.cxx:1162
 AliFMDEventInspector.cxx:1163
 AliFMDEventInspector.cxx:1164
 AliFMDEventInspector.cxx:1165
 AliFMDEventInspector.cxx:1166
 AliFMDEventInspector.cxx:1167
 AliFMDEventInspector.cxx:1168
 AliFMDEventInspector.cxx:1169
 AliFMDEventInspector.cxx:1170
 AliFMDEventInspector.cxx:1171
 AliFMDEventInspector.cxx:1172
 AliFMDEventInspector.cxx:1173
 AliFMDEventInspector.cxx:1174
 AliFMDEventInspector.cxx:1175
 AliFMDEventInspector.cxx:1176
 AliFMDEventInspector.cxx:1177
 AliFMDEventInspector.cxx:1178
 AliFMDEventInspector.cxx:1179
 AliFMDEventInspector.cxx:1180
 AliFMDEventInspector.cxx:1181
 AliFMDEventInspector.cxx:1182
 AliFMDEventInspector.cxx:1183
 AliFMDEventInspector.cxx:1184
 AliFMDEventInspector.cxx:1185
 AliFMDEventInspector.cxx:1186
 AliFMDEventInspector.cxx:1187
 AliFMDEventInspector.cxx:1188
 AliFMDEventInspector.cxx:1189
 AliFMDEventInspector.cxx:1190
 AliFMDEventInspector.cxx:1191
 AliFMDEventInspector.cxx:1192
 AliFMDEventInspector.cxx:1193
 AliFMDEventInspector.cxx:1194
 AliFMDEventInspector.cxx:1195
 AliFMDEventInspector.cxx:1196
 AliFMDEventInspector.cxx:1197
 AliFMDEventInspector.cxx:1198
 AliFMDEventInspector.cxx:1199
 AliFMDEventInspector.cxx:1200
 AliFMDEventInspector.cxx:1201
 AliFMDEventInspector.cxx:1202
 AliFMDEventInspector.cxx:1203
 AliFMDEventInspector.cxx:1204
 AliFMDEventInspector.cxx:1205
 AliFMDEventInspector.cxx:1206
 AliFMDEventInspector.cxx:1207
 AliFMDEventInspector.cxx:1208
 AliFMDEventInspector.cxx:1209
 AliFMDEventInspector.cxx:1210
 AliFMDEventInspector.cxx:1211
 AliFMDEventInspector.cxx:1212
 AliFMDEventInspector.cxx:1213
 AliFMDEventInspector.cxx:1214
 AliFMDEventInspector.cxx:1215
 AliFMDEventInspector.cxx:1216
 AliFMDEventInspector.cxx:1217
 AliFMDEventInspector.cxx:1218
 AliFMDEventInspector.cxx:1219
 AliFMDEventInspector.cxx:1220
 AliFMDEventInspector.cxx:1221
 AliFMDEventInspector.cxx:1222
 AliFMDEventInspector.cxx:1223
 AliFMDEventInspector.cxx:1224
 AliFMDEventInspector.cxx:1225
 AliFMDEventInspector.cxx:1226
 AliFMDEventInspector.cxx:1227
 AliFMDEventInspector.cxx:1228
 AliFMDEventInspector.cxx:1229
 AliFMDEventInspector.cxx:1230
 AliFMDEventInspector.cxx:1231
 AliFMDEventInspector.cxx:1232
 AliFMDEventInspector.cxx:1233
 AliFMDEventInspector.cxx:1234
 AliFMDEventInspector.cxx:1235
 AliFMDEventInspector.cxx:1236
 AliFMDEventInspector.cxx:1237
 AliFMDEventInspector.cxx:1238
 AliFMDEventInspector.cxx:1239
 AliFMDEventInspector.cxx:1240
 AliFMDEventInspector.cxx:1241
 AliFMDEventInspector.cxx:1242
 AliFMDEventInspector.cxx:1243
 AliFMDEventInspector.cxx:1244
 AliFMDEventInspector.cxx:1245
 AliFMDEventInspector.cxx:1246
 AliFMDEventInspector.cxx:1247
 AliFMDEventInspector.cxx:1248
 AliFMDEventInspector.cxx:1249
 AliFMDEventInspector.cxx:1250
 AliFMDEventInspector.cxx:1251
 AliFMDEventInspector.cxx:1252
 AliFMDEventInspector.cxx:1253
 AliFMDEventInspector.cxx:1254
 AliFMDEventInspector.cxx:1255
 AliFMDEventInspector.cxx:1256
 AliFMDEventInspector.cxx:1257
 AliFMDEventInspector.cxx:1258
 AliFMDEventInspector.cxx:1259
 AliFMDEventInspector.cxx:1260
 AliFMDEventInspector.cxx:1261
 AliFMDEventInspector.cxx:1262
 AliFMDEventInspector.cxx:1263
 AliFMDEventInspector.cxx:1264
 AliFMDEventInspector.cxx:1265
 AliFMDEventInspector.cxx:1266
 AliFMDEventInspector.cxx:1267
 AliFMDEventInspector.cxx:1268
 AliFMDEventInspector.cxx:1269
 AliFMDEventInspector.cxx:1270
 AliFMDEventInspector.cxx:1271
 AliFMDEventInspector.cxx:1272
 AliFMDEventInspector.cxx:1273
 AliFMDEventInspector.cxx:1274
 AliFMDEventInspector.cxx:1275
 AliFMDEventInspector.cxx:1276
 AliFMDEventInspector.cxx:1277
 AliFMDEventInspector.cxx:1278
 AliFMDEventInspector.cxx:1279
 AliFMDEventInspector.cxx:1280
 AliFMDEventInspector.cxx:1281
 AliFMDEventInspector.cxx:1282
 AliFMDEventInspector.cxx:1283
 AliFMDEventInspector.cxx:1284
 AliFMDEventInspector.cxx:1285
 AliFMDEventInspector.cxx:1286
 AliFMDEventInspector.cxx:1287
 AliFMDEventInspector.cxx:1288
 AliFMDEventInspector.cxx:1289
 AliFMDEventInspector.cxx:1290
 AliFMDEventInspector.cxx:1291
 AliFMDEventInspector.cxx:1292
 AliFMDEventInspector.cxx:1293
 AliFMDEventInspector.cxx:1294
 AliFMDEventInspector.cxx:1295
 AliFMDEventInspector.cxx:1296
 AliFMDEventInspector.cxx:1297
 AliFMDEventInspector.cxx:1298
 AliFMDEventInspector.cxx:1299
 AliFMDEventInspector.cxx:1300
 AliFMDEventInspector.cxx:1301
 AliFMDEventInspector.cxx:1302
 AliFMDEventInspector.cxx:1303
 AliFMDEventInspector.cxx:1304
 AliFMDEventInspector.cxx:1305
 AliFMDEventInspector.cxx:1306
 AliFMDEventInspector.cxx:1307
 AliFMDEventInspector.cxx:1308
 AliFMDEventInspector.cxx:1309
 AliFMDEventInspector.cxx:1310
 AliFMDEventInspector.cxx:1311
 AliFMDEventInspector.cxx:1312
 AliFMDEventInspector.cxx:1313
 AliFMDEventInspector.cxx:1314
 AliFMDEventInspector.cxx:1315
 AliFMDEventInspector.cxx:1316
 AliFMDEventInspector.cxx:1317
 AliFMDEventInspector.cxx:1318
 AliFMDEventInspector.cxx:1319
 AliFMDEventInspector.cxx:1320
 AliFMDEventInspector.cxx:1321
 AliFMDEventInspector.cxx:1322
 AliFMDEventInspector.cxx:1323
 AliFMDEventInspector.cxx:1324
 AliFMDEventInspector.cxx:1325
 AliFMDEventInspector.cxx:1326
 AliFMDEventInspector.cxx:1327
 AliFMDEventInspector.cxx:1328
 AliFMDEventInspector.cxx:1329
 AliFMDEventInspector.cxx:1330
 AliFMDEventInspector.cxx:1331
 AliFMDEventInspector.cxx:1332
 AliFMDEventInspector.cxx:1333
 AliFMDEventInspector.cxx:1334
 AliFMDEventInspector.cxx:1335
 AliFMDEventInspector.cxx:1336
 AliFMDEventInspector.cxx:1337
 AliFMDEventInspector.cxx:1338
 AliFMDEventInspector.cxx:1339
 AliFMDEventInspector.cxx:1340
 AliFMDEventInspector.cxx:1341
 AliFMDEventInspector.cxx:1342
 AliFMDEventInspector.cxx:1343
 AliFMDEventInspector.cxx:1344
 AliFMDEventInspector.cxx:1345
 AliFMDEventInspector.cxx:1346
 AliFMDEventInspector.cxx:1347
 AliFMDEventInspector.cxx:1348
 AliFMDEventInspector.cxx:1349
 AliFMDEventInspector.cxx:1350
 AliFMDEventInspector.cxx:1351
 AliFMDEventInspector.cxx:1352
 AliFMDEventInspector.cxx:1353
 AliFMDEventInspector.cxx:1354
 AliFMDEventInspector.cxx:1355
 AliFMDEventInspector.cxx:1356
 AliFMDEventInspector.cxx:1357
 AliFMDEventInspector.cxx:1358
 AliFMDEventInspector.cxx:1359
 AliFMDEventInspector.cxx:1360
 AliFMDEventInspector.cxx:1361
 AliFMDEventInspector.cxx:1362
 AliFMDEventInspector.cxx:1363
 AliFMDEventInspector.cxx:1364
 AliFMDEventInspector.cxx:1365
 AliFMDEventInspector.cxx:1366
 AliFMDEventInspector.cxx:1367
 AliFMDEventInspector.cxx:1368
 AliFMDEventInspector.cxx:1369
 AliFMDEventInspector.cxx:1370
 AliFMDEventInspector.cxx:1371
 AliFMDEventInspector.cxx:1372
 AliFMDEventInspector.cxx:1373
 AliFMDEventInspector.cxx:1374
 AliFMDEventInspector.cxx:1375
 AliFMDEventInspector.cxx:1376
 AliFMDEventInspector.cxx:1377
 AliFMDEventInspector.cxx:1378
 AliFMDEventInspector.cxx:1379
 AliFMDEventInspector.cxx:1380
 AliFMDEventInspector.cxx:1381
 AliFMDEventInspector.cxx:1382
 AliFMDEventInspector.cxx:1383
 AliFMDEventInspector.cxx:1384
 AliFMDEventInspector.cxx:1385
 AliFMDEventInspector.cxx:1386
 AliFMDEventInspector.cxx:1387
 AliFMDEventInspector.cxx:1388
 AliFMDEventInspector.cxx:1389
 AliFMDEventInspector.cxx:1390
 AliFMDEventInspector.cxx:1391
 AliFMDEventInspector.cxx:1392
 AliFMDEventInspector.cxx:1393
 AliFMDEventInspector.cxx:1394
 AliFMDEventInspector.cxx:1395
 AliFMDEventInspector.cxx:1396
 AliFMDEventInspector.cxx:1397
 AliFMDEventInspector.cxx:1398
 AliFMDEventInspector.cxx:1399
 AliFMDEventInspector.cxx:1400
 AliFMDEventInspector.cxx:1401
 AliFMDEventInspector.cxx:1402
 AliFMDEventInspector.cxx:1403
 AliFMDEventInspector.cxx:1404
 AliFMDEventInspector.cxx:1405
 AliFMDEventInspector.cxx:1406
 AliFMDEventInspector.cxx:1407
 AliFMDEventInspector.cxx:1408
 AliFMDEventInspector.cxx:1409
 AliFMDEventInspector.cxx:1410
 AliFMDEventInspector.cxx:1411
 AliFMDEventInspector.cxx:1412
 AliFMDEventInspector.cxx:1413
 AliFMDEventInspector.cxx:1414
 AliFMDEventInspector.cxx:1415
 AliFMDEventInspector.cxx:1416
 AliFMDEventInspector.cxx:1417
 AliFMDEventInspector.cxx:1418
 AliFMDEventInspector.cxx:1419
 AliFMDEventInspector.cxx:1420
 AliFMDEventInspector.cxx:1421
 AliFMDEventInspector.cxx:1422
 AliFMDEventInspector.cxx:1423
 AliFMDEventInspector.cxx:1424
 AliFMDEventInspector.cxx:1425
 AliFMDEventInspector.cxx:1426
 AliFMDEventInspector.cxx:1427
 AliFMDEventInspector.cxx:1428
 AliFMDEventInspector.cxx:1429
 AliFMDEventInspector.cxx:1430
 AliFMDEventInspector.cxx:1431
 AliFMDEventInspector.cxx:1432
 AliFMDEventInspector.cxx:1433
 AliFMDEventInspector.cxx:1434
 AliFMDEventInspector.cxx:1435
 AliFMDEventInspector.cxx:1436
 AliFMDEventInspector.cxx:1437
 AliFMDEventInspector.cxx:1438
 AliFMDEventInspector.cxx:1439
 AliFMDEventInspector.cxx:1440
 AliFMDEventInspector.cxx:1441
 AliFMDEventInspector.cxx:1442
 AliFMDEventInspector.cxx:1443
 AliFMDEventInspector.cxx:1444
 AliFMDEventInspector.cxx:1445
 AliFMDEventInspector.cxx:1446
 AliFMDEventInspector.cxx:1447
 AliFMDEventInspector.cxx:1448
 AliFMDEventInspector.cxx:1449
 AliFMDEventInspector.cxx:1450
 AliFMDEventInspector.cxx:1451
 AliFMDEventInspector.cxx:1452
 AliFMDEventInspector.cxx:1453
 AliFMDEventInspector.cxx:1454
 AliFMDEventInspector.cxx:1455
 AliFMDEventInspector.cxx:1456
 AliFMDEventInspector.cxx:1457
 AliFMDEventInspector.cxx:1458
 AliFMDEventInspector.cxx:1459
 AliFMDEventInspector.cxx:1460
 AliFMDEventInspector.cxx:1461
 AliFMDEventInspector.cxx:1462
 AliFMDEventInspector.cxx:1463
 AliFMDEventInspector.cxx:1464
 AliFMDEventInspector.cxx:1465
 AliFMDEventInspector.cxx:1466
 AliFMDEventInspector.cxx:1467
 AliFMDEventInspector.cxx:1468
 AliFMDEventInspector.cxx:1469
 AliFMDEventInspector.cxx:1470
 AliFMDEventInspector.cxx:1471
 AliFMDEventInspector.cxx:1472
 AliFMDEventInspector.cxx:1473
 AliFMDEventInspector.cxx:1474
 AliFMDEventInspector.cxx:1475
 AliFMDEventInspector.cxx:1476
 AliFMDEventInspector.cxx:1477
 AliFMDEventInspector.cxx:1478
 AliFMDEventInspector.cxx:1479
 AliFMDEventInspector.cxx:1480
 AliFMDEventInspector.cxx:1481
 AliFMDEventInspector.cxx:1482
 AliFMDEventInspector.cxx:1483
 AliFMDEventInspector.cxx:1484
 AliFMDEventInspector.cxx:1485
 AliFMDEventInspector.cxx:1486
 AliFMDEventInspector.cxx:1487
 AliFMDEventInspector.cxx:1488
 AliFMDEventInspector.cxx:1489
 AliFMDEventInspector.cxx:1490
 AliFMDEventInspector.cxx:1491
 AliFMDEventInspector.cxx:1492
 AliFMDEventInspector.cxx:1493
 AliFMDEventInspector.cxx:1494
 AliFMDEventInspector.cxx:1495
 AliFMDEventInspector.cxx:1496
 AliFMDEventInspector.cxx:1497
 AliFMDEventInspector.cxx:1498
 AliFMDEventInspector.cxx:1499
 AliFMDEventInspector.cxx:1500
 AliFMDEventInspector.cxx:1501
 AliFMDEventInspector.cxx:1502
 AliFMDEventInspector.cxx:1503
 AliFMDEventInspector.cxx:1504
 AliFMDEventInspector.cxx:1505
 AliFMDEventInspector.cxx:1506
 AliFMDEventInspector.cxx:1507
 AliFMDEventInspector.cxx:1508
 AliFMDEventInspector.cxx:1509
 AliFMDEventInspector.cxx:1510
 AliFMDEventInspector.cxx:1511
 AliFMDEventInspector.cxx:1512
 AliFMDEventInspector.cxx:1513
 AliFMDEventInspector.cxx:1514
 AliFMDEventInspector.cxx:1515
 AliFMDEventInspector.cxx:1516
 AliFMDEventInspector.cxx:1517
 AliFMDEventInspector.cxx:1518
 AliFMDEventInspector.cxx:1519
 AliFMDEventInspector.cxx:1520
 AliFMDEventInspector.cxx:1521
 AliFMDEventInspector.cxx:1522
 AliFMDEventInspector.cxx:1523
 AliFMDEventInspector.cxx:1524
 AliFMDEventInspector.cxx:1525
 AliFMDEventInspector.cxx:1526
 AliFMDEventInspector.cxx:1527
 AliFMDEventInspector.cxx:1528
 AliFMDEventInspector.cxx:1529
 AliFMDEventInspector.cxx:1530
 AliFMDEventInspector.cxx:1531
 AliFMDEventInspector.cxx:1532
 AliFMDEventInspector.cxx:1533
 AliFMDEventInspector.cxx:1534
 AliFMDEventInspector.cxx:1535
 AliFMDEventInspector.cxx:1536
 AliFMDEventInspector.cxx:1537
 AliFMDEventInspector.cxx:1538
 AliFMDEventInspector.cxx:1539
 AliFMDEventInspector.cxx:1540
 AliFMDEventInspector.cxx:1541
 AliFMDEventInspector.cxx:1542
 AliFMDEventInspector.cxx:1543
 AliFMDEventInspector.cxx:1544
 AliFMDEventInspector.cxx:1545
 AliFMDEventInspector.cxx:1546
 AliFMDEventInspector.cxx:1547
 AliFMDEventInspector.cxx:1548
 AliFMDEventInspector.cxx:1549
 AliFMDEventInspector.cxx:1550
 AliFMDEventInspector.cxx:1551
 AliFMDEventInspector.cxx:1552
 AliFMDEventInspector.cxx:1553
 AliFMDEventInspector.cxx:1554
 AliFMDEventInspector.cxx:1555
 AliFMDEventInspector.cxx:1556
 AliFMDEventInspector.cxx:1557
 AliFMDEventInspector.cxx:1558
 AliFMDEventInspector.cxx:1559
 AliFMDEventInspector.cxx:1560
 AliFMDEventInspector.cxx:1561
 AliFMDEventInspector.cxx:1562
 AliFMDEventInspector.cxx:1563
 AliFMDEventInspector.cxx:1564
 AliFMDEventInspector.cxx:1565
 AliFMDEventInspector.cxx:1566
 AliFMDEventInspector.cxx:1567
 AliFMDEventInspector.cxx:1568
 AliFMDEventInspector.cxx:1569
 AliFMDEventInspector.cxx:1570
 AliFMDEventInspector.cxx:1571
 AliFMDEventInspector.cxx:1572
 AliFMDEventInspector.cxx:1573
 AliFMDEventInspector.cxx:1574
 AliFMDEventInspector.cxx:1575
 AliFMDEventInspector.cxx:1576
 AliFMDEventInspector.cxx:1577
 AliFMDEventInspector.cxx:1578
 AliFMDEventInspector.cxx:1579
 AliFMDEventInspector.cxx:1580
 AliFMDEventInspector.cxx:1581
 AliFMDEventInspector.cxx:1582
 AliFMDEventInspector.cxx:1583
 AliFMDEventInspector.cxx:1584
 AliFMDEventInspector.cxx:1585
 AliFMDEventInspector.cxx:1586
 AliFMDEventInspector.cxx:1587