ROOT logo
//
// Mini-Output
// All the definitions needed for building a RSN histogram
// including:
// -- properties of resonance (mass, PDG code if needed)
// -- properties of daughters (assigned mass, charges)
// -- definition of output histogram
//

#include "Riostream.h"

#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
#include "TList.h"
#include "TMath.h"
#include "THnSparse.h"
#include "TString.h"
#include "TClonesArray.h"

#include "AliRsnMiniParticle.h"
#include "AliRsnMiniPair.h"
#include "AliRsnMiniEvent.h"
#include "AliAODEvent.h"

#include "AliLog.h"
#include "AliRsnCutSet.h"
#include "AliRsnMiniAxis.h"
#include "AliRsnMiniOutput.h"
#include "AliRsnMiniValue.h"

ClassImp(AliRsnMiniOutput)

//__________________________________________________________________________________________________
AliRsnMiniOutput::AliRsnMiniOutput() :
   TNamed(),
   fOutputType(kTypes),
   fComputation(kComputations),
   fMotherPDG(0),
   fMotherMass(0.0),
   fPairCuts(0x0),
   fOutputID(-1),
   fAxes("AliRsnMiniAxis", 0),
   fComputed(0),
   fPair(),
   fList(0x0),
   fSel1(0),
   fSel2(0),
   fMaxNSisters(-1),
   fCheckP(kFALSE),
   fCheckFeedDown(kFALSE),   
   fOriginDselection(kFALSE),
   fKeepDfromB(kFALSE),
   fKeepDfromBOnly(kFALSE),
   fRejectIfNoQuark(kFALSE),
   fCheckHistRange(kTRUE)
{
//
// Constructor
//

   fCutID[0] = fCutID[1] = -1;
   fDaughter[0] = fDaughter[1] = AliRsnDaughter::kUnknown;
   fCharge[0] = fCharge[1] = 0;
}

//__________________________________________________________________________________________________
AliRsnMiniOutput::AliRsnMiniOutput(const char *name, EOutputType type, EComputation src) :
   TNamed(name, ""),
   fOutputType(type),
   fComputation(src),
   fMotherPDG(0),
   fMotherMass(0.0),
   fPairCuts(0x0),
   fOutputID(-1),
   fAxes("AliRsnMiniAxis", 0),
   fComputed(0),
   fPair(),
   fList(0x0),
   fSel1(0),
   fSel2(0),
   fMaxNSisters(-1),
   fCheckP(kFALSE),
   fCheckFeedDown(kFALSE),   
   fOriginDselection(kFALSE),
   fKeepDfromB(kFALSE),
   fKeepDfromBOnly(kFALSE),
   fRejectIfNoQuark(kFALSE),
   fCheckHistRange(kTRUE)
{
//
// Constructor
//

   fCutID[0] = fCutID[1] = -1;
   fDaughter[0] = fDaughter[1] = AliRsnDaughter::kUnknown;
   fCharge[0] = fCharge[1] = 0;
}

//__________________________________________________________________________________________________
AliRsnMiniOutput::AliRsnMiniOutput(const char *name, const char *outType, const char *compType) :
   TNamed(name, ""),
   fOutputType(kTypes),
   fComputation(kComputations),
   fMotherPDG(0),
   fMotherMass(0.0),
   fPairCuts(0x0),
   fOutputID(-1),
   fAxes("AliRsnMiniAxis", 0),
   fComputed(0),
   fPair(),
   fList(0x0),
   fSel1(0),
   fSel2(0),
   fMaxNSisters(-1),
   fCheckP(kFALSE),
   fCheckFeedDown(kFALSE),   
   fOriginDselection(kFALSE),
   fKeepDfromB(kFALSE),
   fKeepDfromBOnly(kFALSE),
   fRejectIfNoQuark(kFALSE),
   fCheckHistRange(kTRUE)
{
//
// Constructor, with a more user friendly implementation, where
// the user sets the type of output and computations through conventional strings:
//
// Output:
//    -- "HIST"    --> common histogram (up to 3 dimensions)
//    -- "SPARSE"  --> sparse histogram
//
// Computation:
//    -- "EVENT"   --> event-only computations
//    -- "PAIR"    --> track pair computations (default)
//    -- "MIX"     --> event mixing (like track pair, but different events)
//    -- "ROTATE1" --> rotated background (rotate first track)
//    -- "ROTATE2" --> rotated background (rotate second track)
//    -- "TRUE"    --> true pairs (like track pair, but checking that come from same mother)
//    -- "MOTHER"  --> mother (loop on MC directly for mothers --> denominator of efficiency)
//    -- "MOTHER_IN_ACC"  --> mother (loop on MC directly for mothers (in a defined acceptance interval)--> needed for efficiency calcutation using  an enriched sample)
//

   TString input;

   // understand output type
   input = outType;
   input.ToUpper();
   if (!input.CompareTo("HIST"))
      fOutputType = kHistogram;
   else if (!input.CompareTo("SPARSE"))
      fOutputType = kHistogramSparse;
   else
      AliWarning(Form("String '%s' does not define a meaningful output type", outType));

   // understand computation type
   input = compType;
   input.ToUpper();
   if (!input.CompareTo("EVENT"))
      fComputation = kEventOnly;
   else if (!input.CompareTo("PAIR"))
      fComputation = kTrackPair;
   else if (!input.CompareTo("MIX"))
      fComputation = kTrackPairMix;
   else if (!input.CompareTo("ROTATE1"))
      fComputation = kTrackPairRotated1;
   else if (!input.CompareTo("ROTATE2"))
      fComputation = kTrackPairRotated2;
   else if (!input.CompareTo("TRUE"))
      fComputation = kTruePair;
   else if (!input.CompareTo("MOTHER"))
      fComputation = kMother;
    else if (!input.CompareTo("MOTHER_IN_ACC"))
      fComputation = kMotherInAcc;   
   else
      AliWarning(Form("String '%s' does not define a meaningful computation type", compType));

   fCutID[0] = fCutID[1] = -1;
   fDaughter[0] = fDaughter[1] = AliRsnDaughter::kUnknown;
   fCharge[0] = fCharge[1] = 0;
}

//__________________________________________________________________________________________________
AliRsnMiniOutput::AliRsnMiniOutput(const AliRsnMiniOutput &copy) :
   TNamed(copy),
   fOutputType(copy.fOutputType),
   fComputation(copy.fComputation),
   fMotherPDG(copy.fMotherPDG),
   fMotherMass(copy.fMotherMass),
   fPairCuts(copy.fPairCuts),
   fOutputID(copy.fOutputID),
   fAxes(copy.fAxes),
   fComputed(copy.fComputed),
   fPair(),
   fList(copy.fList),
   fSel1(0),
   fSel2(0),
   fMaxNSisters(-1),
   fCheckP(kFALSE),
   fCheckFeedDown(kFALSE),   
   fOriginDselection(kFALSE),
   fKeepDfromB(kFALSE),
   fKeepDfromBOnly(kFALSE),
   fRejectIfNoQuark(kFALSE),
   fCheckHistRange(copy.fCheckHistRange)
{
//
// Copy constructor
//

   Int_t i;
   for (i = 0; i < 2; i++) {
      fCutID[i] = copy.fCutID[i];
      fDaughter[i] = copy.fDaughter[i];
      fCharge[i] = copy.fCharge[i];
   }
}

//__________________________________________________________________________________________________
AliRsnMiniOutput &AliRsnMiniOutput::operator=(const AliRsnMiniOutput &copy)
{
//
// Assignment operator
//
   if (this == &copy)
      return *this;
   fOutputType = copy.fOutputType;
   fComputation = copy.fComputation;
   fMotherPDG = copy.fMotherPDG;
   fMotherMass = copy.fMotherMass;
   fPairCuts = copy.fPairCuts;
   fOutputID = copy.fOutputID;
   fAxes = copy.fAxes;
   fComputed = copy.fComputed;
   fList = copy.fList;

   Int_t i;
   for (i = 0; i < 2; i++) {
      fCutID[i] = copy.fCutID[i];
      fDaughter[i] = copy.fDaughter[i];
      fCharge[i] = copy.fCharge[i];
   }

   fSel1.Set(0);
   fSel2.Set(0);
   fMaxNSisters = copy.fMaxNSisters;
   fCheckP = copy.fCheckP;
   fCheckFeedDown = copy.fCheckFeedDown;
   fOriginDselection = copy.fOriginDselection;
   fKeepDfromB = copy.fOriginDselection;
   fKeepDfromBOnly = copy.fKeepDfromBOnly;
   fRejectIfNoQuark = copy.fRejectIfNoQuark;
   fCheckHistRange = copy.fCheckHistRange;

   return (*this);
}


//__________________________________________________________________________________________________
void AliRsnMiniOutput::AddAxis(Int_t i, Int_t nbins, Double_t min, Double_t max)
{
//
// Create a new axis reference
//

   Int_t size = fAxes.GetEntries();
   new (fAxes[size]) AliRsnMiniAxis(i, nbins, min, max);
}

//__________________________________________________________________________________________________
void AliRsnMiniOutput::AddAxis(Int_t i, Double_t min, Double_t max, Double_t step)
{
//
// Create a new axis reference
//

   Int_t size = fAxes.GetEntries();
   new (fAxes[size]) AliRsnMiniAxis(i, min, max, step);
}

//__________________________________________________________________________________________________
void AliRsnMiniOutput::AddAxis(Int_t i, Int_t nbins, Double_t *values)
{
//
// Create a new axis reference
//

   Int_t size = fAxes.GetEntries();
   new (fAxes[size]) AliRsnMiniAxis(i, nbins, values);
}

//__________________________________________________________________________________________________
Bool_t AliRsnMiniOutput::Init(const char *prefix, TList *list)
{
//
// Initialize properly the histogram and add it to the argument list
//

   if (!list) {
      AliError("Required an output list");
      return kFALSE;
   }

   fList = list;
   Int_t size = fAxes.GetEntries();
   if (size < 1) {
      AliWarning(Form("[%s] Cannot initialize histogram with less than 1 axis", GetName()));
      return kFALSE;
   }

   switch (fOutputType) {
      case kHistogram:
         if (size <= 3) {
            CreateHistogram(Form("%s_%s", prefix, GetName()));
         } else {
            AliInfo(Form("[%s] Added %d > 3 axes. Creating a sparse histogram", GetName(), size));
            fOutputType = kHistogramSparse;
            CreateHistogramSparse(Form("%s_%s", prefix, GetName()));
         }
         return kTRUE;
      case kHistogramSparse:
         CreateHistogramSparse(Form("%s_%s", prefix, GetName()));
         return kTRUE;
      default:
         AliError("Wrong output histogram definition");
         return kFALSE;
   }
}

//__________________________________________________________________________________________________
void AliRsnMiniOutput::CreateHistogram(const char *name)
{
//
// Initialize the 'default' TH1 output object.
// In case one of the expected axes is NULL, the initialization fails.
//

   Int_t size = fAxes.GetEntries();
   AliInfo(Form("Histogram name = '%s', with %d axes", name, size));

   // we expect to have maximum 3 axes in this case
   AliRsnMiniAxis *xAxis = 0x0, *yAxis = 0x0, *zAxis = 0x0;
   if (size >= 1) xAxis = (AliRsnMiniAxis *)fAxes[0];
   if (size >= 2) yAxis = (AliRsnMiniAxis *)fAxes[1];
   if (size >= 3) zAxis = (AliRsnMiniAxis *)fAxes[2];

   // create histogram depending on the number of axes
   TH1 *h1 = 0x0;
   if (xAxis && yAxis && zAxis) {
      h1 = new TH3F(name, "", xAxis->NBins(), xAxis->BinArray(), yAxis->NBins(), yAxis->BinArray(), zAxis->NBins(), zAxis->BinArray());
   } else if (xAxis && yAxis) {
      h1 = new TH2F(name, "", xAxis->NBins(), xAxis->BinArray(), yAxis->NBins(), yAxis->BinArray());
   } else if (xAxis) {
      h1 = new TH1F(name, "", xAxis->NBins(), xAxis->BinArray());
   } else {
      AliError("No axis was initialized");
      return;
   }

   // switch the correct computation of errors
   if (h1 && fList) {
      h1->Sumw2();
      fList->Add(h1);
      fOutputID = fList->IndexOf(h1);
   }
}

//________________________________________________________________________________________
void AliRsnMiniOutput::CreateHistogramSparse(const char *name)
{
//
// Initialize the THnSparse output object.
// In case one of the expected axes is NULL, the initialization fails.
//

   Int_t size = fAxes.GetEntries();
   AliInfo(Form("Sparse histogram name = '%s', with %d axes", name, size));

   // retrieve binnings and sizes of all axes
   // since the check for null values is done in Init(),
   // we assume that here they must all be well defined
   Int_t i, *nbins = new Int_t[size];
   for (i = 0; i < size; i++) {
      AliRsnMiniAxis *axis = (AliRsnMiniAxis *)fAxes[i];
      nbins[i] = axis->NBins();
   }

   // create fHSparseogram
   THnSparseF *h1 = new THnSparseF(name, "", size, nbins);

   // update the various axes using the definitions given in the array of axes here
   for (i = 0; i < size; i++) {
      AliRsnMiniAxis *axis = (AliRsnMiniAxis *)fAxes[i];
      h1->GetAxis(i)->Set(nbins[i], axis->BinArray());
   }

   // clear heap
   delete [] nbins;

   // add to list
   if (h1 && fList) {
      h1->Sumw2();
      fList->Add(h1);
      fOutputID = fList->IndexOf(h1);
   }
}

//________________________________________________________________________________________
Bool_t AliRsnMiniOutput::FillEvent(AliRsnMiniEvent *event, TClonesArray *valueList)
{
//
// Compute values for event-based computations (does not use the pair)
//

   // check computation type
   if (fComputation != kEventOnly) {
      AliError("This method can be called only for event-based computations");
      return kFALSE;
   }

   // compute & fill
   ComputeValues(event, valueList);
   FillHistogram();
   return kTRUE;
}

//________________________________________________________________________________________
Bool_t AliRsnMiniOutput::FillMother(const AliRsnMiniPair *pair, AliRsnMiniEvent *event, TClonesArray *valueList)
{
//
// Compute values for mother-based computations
//

   // check computation type
   if (fComputation != kMother) {
      AliError("This method can be called only for mother-based computations");
      return kFALSE;
   }

   // copy passed pair info
   fPair = (*pair);

   // check pair against cuts
   if (fPairCuts) if (!fPairCuts->IsSelected(&fPair)) return kFALSE;

   // compute & fill
   ComputeValues(event, valueList);
   FillHistogram();
   return kTRUE;
}

//________________________________________________________________________________________
Bool_t AliRsnMiniOutput::FillMotherInAcceptance(const AliRsnMiniPair *pair, AliRsnMiniEvent *event, TClonesArray *valueList)
{
//
// Compute values for mother-based computations
//

   // check computation type
   if (fComputation != kMotherInAcc) {
      AliError("This method can be called only for mother-based computations");
      return kFALSE;
   }

   // copy passed pair info
   fPair = (*pair);

   // check pair against cuts
   if (fPairCuts) if (!fPairCuts->IsSelected(&fPair)) return kFALSE;

   // compute & fill
   ComputeValues(event, valueList);
   FillHistogram();
   return kTRUE;
}

//________________________________________________________________________________________
Int_t AliRsnMiniOutput::FillPair(AliRsnMiniEvent *event1, AliRsnMiniEvent *event2, TClonesArray *valueList, Bool_t refFirst)
{
//
// Loops on the passed mini-event, and for each pair of particles
// which satisfy the charge and cut requirements defined here, add an entry.
// Returns the number of successful fillings.
// Last argument tells if the reference event for event-based values is the first or the second.
//

   // check computation type
   Bool_t okComp = kFALSE;
   if (fComputation == kTrackPair)         okComp = kTRUE;
   if (fComputation == kTrackPairMix)      okComp = kTRUE;
   if (fComputation == kTrackPairRotated1) okComp = kTRUE;
   if (fComputation == kTrackPairRotated2) okComp = kTRUE;
   if (fComputation == kTruePair)          okComp = kTRUE;
   if (!okComp) {
      AliError(Form("[%s] This method can be called only for pair-based computations", GetName()));
      return kFALSE;
   }

   // loop variables
   Int_t i1, i2, start, nadded = 0;
   AliRsnMiniParticle *p1, *p2;

   // it is necessary to know if criteria for the two daughters are the same
   // and if the two events are the same or not (mixing)
   //Bool_t sameCriteria = ((fCharge[0] == fCharge[1]) && (fCutID[0] == fCutID[1]));
   Bool_t sameCriteria = ((fCharge[0] == fCharge[1]) && (fDaughter[0] == fDaughter[1]));
   Bool_t sameEvent = (event1->ID() == event2->ID());

   TString selList1  = "";
   TString selList2  = "";
   Int_t   n1 = event1->CountParticles(fSel1, fCharge[0], fCutID[0]);
   Int_t   n2 = event2->CountParticles(fSel2, fCharge[1], fCutID[1]);
   for (i1 = 0; i1 < n1; i1++) selList1.Append(Form("%d ", fSel1[i1]));
   for (i2 = 0; i2 < n2; i2++) selList2.Append(Form("%d ", fSel2[i2]));
   AliDebugClass(1, Form("[%10s] Part #1: [%s] -- evID %6d -- charge = %c -- cut ID = %d --> %4d tracks (%s)", GetName(), (event1 == event2 ? "def" : "mix"), event1->ID(), fCharge[0], fCutID[0], n1, selList1.Data()));
   AliDebugClass(1, Form("[%10s] Part #2: [%s] -- evID %6d -- charge = %c -- cut ID = %d --> %4d tracks (%s)", GetName(), (event1 == event2 ? "def" : "mix"), event2->ID(), fCharge[1], fCutID[1], n2, selList2.Data()));
   if (!n1 || !n2) {
      AliDebugClass(1, "No pairs to mix");
      return 0;
   }

   // external loop
   for (i1 = 0; i1 < n1; i1++) {
      p1 = event1->GetParticle(fSel1[i1]);
      //p1 = event1->GetParticle(i1);
      //if (p1->Charge() != fCharge[0]) continue;
      //if (!p1->HasCutBit(fCutID[0])) continue;
      // define starting point for inner loop
      // if daughter selection criteria (charge, cuts) are the same
      // and the two events coincide, internal loop must start from
      // the first track *after* current one;
      // otherwise it starts from the beginning
      start = ((sameEvent && sameCriteria) ? i1 + 1 : 0);
      AliDebugClass(2, Form("Start point = %d", start));
      // internal loop
      for (i2 = start; i2 < n2; i2++) {
         p2 = event2->GetParticle(fSel2[i2]);
         //p2 = event2->GetParticle(i2);
         //if (p2->Charge() != fCharge[1]) continue;
         //if (!p2->HasCutBit(fCutID[1])) continue;
         // avoid to mix a particle with itself
         if (sameEvent && (p1->Index() == p2->Index())) {
            AliDebugClass(2, "Skipping same index");
            continue;
         }
         // sum momenta
         fPair.Fill(p1, p2, GetMass(0), GetMass(1), fMotherMass);
         // do rotation if needed
         if (fComputation == kTrackPairRotated1) fPair.InvertP(kTRUE);
         if (fComputation == kTrackPairRotated2) fPair.InvertP(kFALSE);
         // if required, check that this is a true pair
         if (fComputation == kTruePair) {
            if (fPair.Mother() < 0)  {
               continue;
            } else if (fPair.MotherPDG() != fMotherPDG) {
               continue;
            }
            Bool_t decayMatch = kFALSE;
            if (p1->PDGAbs() == AliRsnDaughter::SpeciesPDG(fDaughter[0]) && p2->PDGAbs() == AliRsnDaughter::SpeciesPDG(fDaughter[1]))
               decayMatch = kTRUE;
            if (p2->PDGAbs() == AliRsnDaughter::SpeciesPDG(fDaughter[0]) && p1->PDGAbs() == AliRsnDaughter::SpeciesPDG(fDaughter[1]))
               decayMatch = kTRUE;
            if (!decayMatch) continue;
	    if ( (fMaxNSisters>0) && (p1->NTotSisters()==p2->NTotSisters()) && (p1->NTotSisters()>fMaxNSisters)) continue;
	    if ( fCheckP &&(TMath::Abs(fPair.PmotherX()-(p1->Px(1)+p2->Px(1)))/(TMath::Abs(fPair.PmotherX())+1.e-13)) > 0.00001 && 	  
		          (TMath::Abs(fPair.PmotherY()-(p1->Py(1)+p2->Py(1)))/(TMath::Abs(fPair.PmotherY())+1.e-13)) > 0.00001 &&
     			  (TMath::Abs(fPair.PmotherZ()-(p1->Pz(1)+p2->Pz(1)))/(TMath::Abs(fPair.PmotherZ())+1.e-13)) > 0.00001 ) continue;
	    if ( fCheckFeedDown ){
	    		Int_t pdgGranma = 0;
	  		Bool_t isFromB=kFALSE;
	  		Bool_t isQuarkFound=kFALSE;
			
			if(fPair.IsFromB() == kTRUE) isFromB = kTRUE;
			if(fPair.IsQuarkFound() == kTRUE) isQuarkFound = kTRUE;
	  		if(fRejectIfNoQuark && !isQuarkFound) pdgGranma = -99999;
	  		if(isFromB){
	  		  if (!fKeepDfromB) pdgGranma = -9999; //skip particle if come from a B meson.
	  		}
	  		else{ 
	  		  if (fKeepDfromBOnly) pdgGranma = -999;
			  } 
	  		if (pdgGranma == -99999){
	  			AliDebug(2,"This particle does not have a quark in his genealogy\n");
	  			continue;
	  		}
	  		if (pdgGranma == -9999){
	  			AliDebug(2,"This particle come from a B decay channel but according to the settings of the task, we keep only the prompt charm particles\n");	
	  			continue;
	  		}	
	 
	  		if (pdgGranma == -999){
	  			AliDebug(2,"This particle come from a prompt charm particles but according to the settings of the task, we want only the ones coming from B\n");  
	  			continue;
	  		}	
		    }
         }
         // check pair against cuts
         if (fPairCuts) {
            if (!fPairCuts->IsSelected(&fPair)) continue;
         }
         // get computed values & fill histogram
         nadded++;
         if (refFirst) ComputeValues(event1, valueList); else ComputeValues(event2, valueList);
         FillHistogram();
      } // end internal loop
   } // end external loop

   AliDebugClass(1, Form("Pairs added in total = %4d", nadded));
   return nadded;
}
//___________________________________________________________
void AliRsnMiniOutput::SetDselection(UShort_t originDselection)
{
	// setting the way the D0 will be selected
	// 0 --> only from c quarks
	// 1 --> only from b quarks
	// 2 --> from both c quarks and b quarks
		
	fOriginDselection = originDselection;
	
	if (fOriginDselection == 0) {
		fKeepDfromB = kFALSE;
		fKeepDfromBOnly = kFALSE;
	}
	
	if (fOriginDselection == 1) {
		fKeepDfromB = kTRUE;
		fKeepDfromBOnly = kTRUE;
	}
	
	if (fOriginDselection == 2) {
		fKeepDfromB = kTRUE;
		fKeepDfromBOnly = kFALSE;
	}
	
	return;	
}
//________________________________________________________________________________________
void AliRsnMiniOutput::ComputeValues(AliRsnMiniEvent *event, TClonesArray *valueList)
{
//
// Using the arguments and the internal 'fPair' data member,
// compute all values to be stored in the histogram
//

   // check size of computed array
   Int_t size = fAxes.GetEntries();
   if (fComputed.GetSize() != size) fComputed.Set(size);

   Int_t i, ival, nval = valueList->GetEntries();

   for (i = 0; i < size; i++) {
      fComputed[i] = 1E20;
      AliRsnMiniAxis *axis = (AliRsnMiniAxis *)fAxes[i];
      if (!axis) {
         AliError("Null axis");
         continue;
      }
      ival = axis->GetValueID();
      if (ival < 0 || ival >= nval) {
         AliError(Form("Required value #%d, while maximum is %d", ival, nval));
         continue;
      }
      AliRsnMiniValue *val = (AliRsnMiniValue *)valueList->At(ival);
      if (!val) {
         AliError(Form("Value in position #%d is NULL", ival));
         continue;
      }
      // if none of the above exit points is taken, compute value
      fComputed[i] = val->Eval(&fPair, event);
   }
}

//________________________________________________________________________________________
void AliRsnMiniOutput::FillHistogram()
{
//
// Fills the internal histogram using the current values stored in the
// 'fComputed' array, in the order as they are stored, up to the max
// dimension of the initialized histogram itself.
//

   // retrieve object from list
   if (!fList) {
      AliError("List pointer is NULL");
      return;
   }
   TObject *obj = fList->At(fOutputID);

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