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

//------------------------------
// Analysis task for quality-assurance
// of forward detectors ESD
//
// 12/06/2009 cvetan.cheshkov@cern.ch
//------------------------------

#include "TChain.h"
#include "TROOT.h"
#include "TFile.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TF1.h"
#include "TCanvas.h"
#include "TVector3.h"
#include "TParticle.h"
#include "AliVParticle.h"
#include "AliMCParticle.h"
#include "AliESDEvent.h"
#include "AliESDv0.h"
#include "AliESDcascade.h"
#include "AliESDMuonTrack.h"
#include "AliESDCaloCluster.h"
#include "AliRun.h"
#include "AliMCEvent.h"
#include "AliStack.h"
#include "AliGenEventHeader.h"
#include "AliPID.h"
#include "AliESDVZERO.h"

#include "AliAnaFwdDetsQA.h"

ClassImp(AliAnaFwdDetsQA)

AliAnaFwdDetsQA::AliAnaFwdDetsQA():
AliAnalysisTaskSE("AliAnaFwdDetsQA"),
  fListOfHistos(0),
  fT0vtxRec(0),
  fT0vtxRecGen(0),
  fT0time(0),
  fT0time2(0),
  fT0mult(0),
  fT0vtxRes(0),
  fT0ampl(0),
  fV0a(0),
  fV0c(0),
  fV0multA(0),
  fV0multC(0),
  fV0multAcorr(0),
  fV0multCcorr(0),
  fV0Acorr(0),
  fV0Ccorr(0),
  fV0ampl(0)
{
  // Default constructor
  // Define input and output slots here
  // Input slot #0 works with a TChain
  DefineInput(0, TChain::Class());
  // Output slot #1 TList
  DefineOutput(1, TList::Class());
}

AliAnaFwdDetsQA::AliAnaFwdDetsQA(const char* name):
AliAnalysisTaskSE(name),
  fListOfHistos(0),
  fT0vtxRec(0),
  fT0vtxRecGen(0),
  fT0time(0),
  fT0time2(0),
  fT0mult(0),
  fT0vtxRes(0),
  fT0ampl(0),
  fV0a(0),
  fV0c(0),
  fV0multA(0),
  fV0multC(0),
  fV0multAcorr(0),
  fV0multCcorr(0),
  fV0Acorr(0),
  fV0Ccorr(0),
  fV0ampl(0)
{
  // Constructor
  // Define input and output slots here
  // Input slot #0 works with a TChain
  AliInfo("Constructor AliAnaFwdDetsQA");
  DefineInput(0, TChain::Class());
  // Output slot #1 TList
  DefineOutput(1, TList::Class());
}

TH1F * AliAnaFwdDetsQA::CreateHisto(const char* name, const char* title,Int_t nBins, 
					    Double_t xMin, Double_t xMax,
					    const char* xLabel, const char* yLabel)
{
  // helper method which can be used
  // in order to create a histogram
  TH1F* result = new TH1F(name, title, nBins, xMin, xMax);
  result->SetOption("E");
  if (xLabel) result->GetXaxis()->SetTitle(xLabel);
  if (yLabel) result->GetYaxis()->SetTitle(yLabel);
  result->SetMarkerStyle(kFullCircle);
  return result;
}

TH1F *AliAnaFwdDetsQA::CreateEffHisto(const TH1F* hGen, const TH1F* hRec)
{
  // helper method which can be used
  // in order create an efficiency histogram
  Int_t nBins = hGen->GetNbinsX();
  TH1F* hEff = (TH1F*) hGen->Clone("hEff");
  hEff->SetTitle("");
  hEff->SetStats(kFALSE);
  hEff->SetMinimum(0.);
  hEff->SetMaximum(110.);
  hEff->GetYaxis()->SetTitle("#epsilon [%]");
  
  for (Int_t iBin = 0; iBin <= nBins; iBin++) {
    Double_t nGenEff = hGen->GetBinContent(iBin);
    Double_t nRecEff = hRec->GetBinContent(iBin);
    if (nGenEff > 0) {
      Double_t eff = nRecEff/nGenEff;
      hEff->SetBinContent(iBin, 100. * eff);
      Double_t error = sqrt(eff*(1.-eff) / nGenEff);
      if (error < 1e-12) error = 0.0001;
      hEff->SetBinError(iBin, 100. * error);			
    }
    else {
      hEff->SetBinContent(iBin, -100.);
      hEff->SetBinError(iBin, 0);
    }
  }
  return hEff;
}


Bool_t AliAnaFwdDetsQA::FitHisto(TH1* histo, Double_t& res, Double_t& resError)
{
  // fit a gaussian to
  // a histogram
  static TF1* fitFunc = new TF1("fitFunc", "gaus");
  fitFunc->SetLineWidth(2);
  fitFunc->SetFillStyle(0);
  Double_t maxFitRange = 2;
  
  if (histo->Integral() > 50) {
    Float_t mean = histo->GetMean();
    Float_t rms = histo->GetRMS();
    fitFunc->SetRange(mean - maxFitRange*rms, mean + maxFitRange*rms);
    fitFunc->SetParameters(mean, rms);
    histo->Fit(fitFunc, "QRI0");
    histo->GetFunction("fitFunc")->ResetBit(1<<9);
    res = TMath::Abs(fitFunc->GetParameter(2));
    resError = TMath::Abs(fitFunc->GetParError(2));
    return kTRUE;
  }
  return kFALSE;
}

void AliAnaFwdDetsQA::UserCreateOutputObjects()
{
  // Create histograms
  // Create output container
  AliInfo("AliAnaFwdDetsQA::UserCreateOutputObjects");
  fListOfHistos = new TList();
  
  fT0vtxRec = CreateHisto("hT0vtxRec", "Z vertex reconstructed with T0", 100, -25, 25, "Z_{vtx} [cm]", "");
  fT0time   = CreateHisto("hT0time", "Time0 reconstruction with T0", 5000, 10000, 20000, "t_{0} [ps]", "");
  fT0time2  = CreateHisto("hT0time2", "Time0 reconstruction with T0 (mult > 10)", 5000, 10000, 20000, "t_{0} [ps]", "");
  fT0mult   = CreateHisto("hT0mult", "Total reconstructed multiplicity in T0", 100, -0.5, 99.5, "Multiplicity", "");
  fT0vtxRes = CreateHisto("hT0vtxRes", "T0 Z vertex resolution", 100, -25, 25, "Delta(Z_{vtx}) [cm]", "");
  fT0ampl   = CreateHisto("hT0ampl","T0 multiplicity in single channel (all T0 channels)",400,-0.5,99.5);
  
  fT0vtxRecGen = new TH2F("hT0vtxRecGen", "T0 reconstructed vs generated Z vertex", 100, -25, 25, 100, -25, 25);
  fT0vtxRecGen->GetXaxis()->SetTitle("Generated Z vertex");
  fT0vtxRecGen->GetYaxis()->SetTitle("Reconstructed Z vertex");
  fT0vtxRecGen->SetMarkerStyle(kFullCircle);
  fT0vtxRecGen->SetMarkerSize(0.4);

  fV0a = CreateHisto("hV0a","Number of fired PMTs (V0A)",65,-0.5,64.5);
  fV0c = CreateHisto("hV0c","Number of fired PMTs (V0C)",65,-0.5,64.5);
  fV0multA = CreateHisto("hV0multA","Total reconstructed multiplicity (V0A)",100,0.,1000.);
  fV0multC = CreateHisto("hV0multC","Total reconstructed multiplicity (V0C)",100,0.,1000.);
  fV0ampl  = CreateHisto("hV0ampl","V0 multiplicity in single channel (all V0 channels)",400,-0.5,99.5);

  fV0multAcorr = new TH2F("hV0multAcorr", "Reconstructed vs generated (primaries only) multiplicity (V0A)",100,0.,500.,100,0.,1000.);
  fV0multAcorr->GetXaxis()->SetTitle("# of primaries in V0A acceptance");
  fV0multAcorr->GetYaxis()->SetTitle("Reconstructed mutiplicity in V0A");
  fV0multCcorr = new TH2F("hV0multCcorr", "Reconstructed vs generated (primaries only) multiplicity (V0C)",100,0.,500.,100,0.,1000.);
  fV0multCcorr->GetXaxis()->SetTitle("# of primaries in V0C acceptance");
  fV0multCcorr->GetYaxis()->SetTitle("Reconstructed mutiplicity in V0C");

  fV0Acorr = new TH2F("hV0Acorr", "Number of fired PMTs vs generated (primaries only) multiplicity (V0A)",100,0.,500.,65,-0.5,64.5);
  fV0Acorr->GetXaxis()->SetTitle("# of primaries in V0A acceptance");
  fV0Acorr->GetYaxis()->SetTitle("Number of fired PMTs in V0A");
  fV0Ccorr = new TH2F("hV0Ccorr", "Number of fired PMTs vs generated (primaries only) multiplicity (V0C)",100,0.,500.,65,-0.5,64.5);
  fV0Ccorr->GetXaxis()->SetTitle("# of primaries in V0C acceptance");
  fV0Ccorr->GetYaxis()->SetTitle("Number of fired PMTs in V0C");

  fListOfHistos->Add(fT0vtxRec);
  fListOfHistos->Add(fT0time);
  fListOfHistos->Add(fT0mult);
  fListOfHistos->Add(fT0vtxRecGen);
  fListOfHistos->Add(fT0vtxRes);
  fListOfHistos->Add(fV0a);
  fListOfHistos->Add(fV0c);
  fListOfHistos->Add(fV0multA);
  fListOfHistos->Add(fV0multC);
  fListOfHistos->Add(fV0multAcorr);
  fListOfHistos->Add(fV0multCcorr);
  fListOfHistos->Add(fV0Acorr);
  fListOfHistos->Add(fV0Ccorr);
  fListOfHistos->Add(fT0ampl);
  fListOfHistos->Add(fV0ampl);
  fListOfHistos->Add(fT0time2);
}

void AliAnaFwdDetsQA::UserExec(Option_t */*option*/)
{
  // The analysis code
  // goes here
  AliMCEvent* mcEvent = MCEvent();
  if (!mcEvent) {
    Printf("ERROR: Could not retrieve MC event");
    return;
  }	
	
  //Primary vertex needed
  TArrayF mcvtx(3);  
  mcEvent->GenEventHeader()->PrimaryVertex(mcvtx);

  AliStack *stack = mcEvent->Stack();
  if (!stack) {
    Printf("ERROR: Could not retrieve MC stack");
    return;
  }

  Int_t nV0A = 0;
  Int_t nV0C = 0;
  for (Int_t iTracks = 0; iTracks < mcEvent->GetNumberOfTracks(); iTracks++) {//Check this loop again
    if (!stack->IsPhysicalPrimary(iTracks)) continue;
    AliMCParticle* track = (AliMCParticle*)mcEvent->GetTrack(iTracks);
    TParticle* particle = track->Particle();
    if (!particle) continue;
    if (track->Charge() == 0) continue;
    Double_t eta = particle->Eta();
    if (eta > 2.8 && eta < 5.1) {
      nV0A++;
    }
    if (eta > -3.7 && eta < -1.7) {
      nV0C++;
    }
  }

  // ESD information
  AliVEvent* event = InputEvent();
  if (!event) {
    Printf("ERROR: Could not retrieve event");
    return;
  }

  AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
  if (!esd) {
    Printf("ERROR: Could not retrieve esd");
    return;
  }
  const AliESDTZERO* esdT0 = esd->GetESDTZERO();
  Double_t t0zvtx = esdT0->GetT0zVertex();
  Double_t t0time = esdT0->GetT0();

  fT0vtxRec->Fill(t0zvtx);
  fT0time->Fill(t0time);
  fT0vtxRecGen->Fill(mcvtx[2],t0zvtx);
  t0zvtx *= -1.0;
  fT0vtxRes->Fill(t0zvtx - mcvtx[2]);

  Double_t t0mult = 0;
  for(Int_t i = 0; i < 24; i++) {
    t0mult += esdT0->GetT0amplitude()[i];
    fT0ampl->Fill(esdT0->GetT0amplitude()[i]);
  }

  fT0mult->Fill(t0mult);
  if (t0mult > 10)
    fT0time2->Fill(t0time);

  AliESDVZERO* esdV0 = esd->GetVZEROData();
  fV0a->Fill(esdV0->GetNbPMV0A());
  fV0c->Fill(esdV0->GetNbPMV0C());
  fV0multA->Fill(esdV0->GetMTotV0A());
  fV0multC->Fill(esdV0->GetMTotV0C());

  fV0multAcorr->Fill((Float_t)nV0A,esdV0->GetMTotV0A());
  fV0multCcorr->Fill((Float_t)nV0C,esdV0->GetMTotV0C());
  fV0Acorr->Fill((Float_t)nV0A,(Float_t)esdV0->GetNbPMV0A());
  fV0Ccorr->Fill((Float_t)nV0C,(Float_t)esdV0->GetNbPMV0C());

  for(Int_t i = 0; i < 64; i++) {
    fV0ampl->Fill(esdV0->GetMultiplicity(i));
  }
  // Post output data.
  PostData(1, fListOfHistos);
}

void AliAnaFwdDetsQA::Terminate(Option_t *)
{
  // Terminate
  // Store the output histos
  fListOfHistos = dynamic_cast<TList*>(GetOutputData(1));
  if (!fListOfHistos) {
    Printf("ERROR: fListOfHistos not available");
    return;
  }
	
  //delete esd;
  Info("AliAnaFwdDetsQA", "Successfully finished");
}






























































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