ROOT logo
//
//#include <Riostream.h>
// #include <TChain.h>
// #include <TVectorT.h> 
// #include <TVector3.h> 
// #include <TFile.h>
// #include <TH1.h> 
// #include <TObjArray.h>
// #include <TObjString.h>
// #include <TFormula.h>
// #include <TString.h>
// #include <TRefArray.h>
// #include <TNtuple.h>
// #include <TArrayF.h>

#include <TClonesArray.h>
#include <TH1D.h>
#include <TH2D.h>

#include "AliJEfficiencyScanner.h" 
#include "AliJTrack.h"
#include "AliJMCTrack.h"
#include "AliJPhoton.h"
#include "AliJEventHeader.h"
#include "AliJRunHeader.h"
#include <TFile.h>
#include <TRandom.h>


ClassImp(AliJEfficiencyScanner);

//______________________________________________________________________________
AliJEfficiencyScanner::AliJEfficiencyScanner() :   
    TNamed(),
	fMBTriggMask(0),
    fTrackList(0),
    fMCTrackList(0x0),
    fEventHeader(0x0),
    fRunHeader(0x0),
    fhVertexZMC(0x0),
    fhVertexZTrigg(0x0),
    fhVertexZTriggVtx(0x0),
    fhVZRawMC(0x0),
    fhVZRecMC(0x0),
    fhVZRecAccMC(0x0),
    fh2VtxCent(0x0),
    fhL0Input(0x0),
    fhTriggerAlice(0x0),
    fhZVtxMCAll(0x0),
    fhZVtxMCTrigg(0x0),
    fhZVtxMCTriggVtx(0x0),
    fhZVtxRecAll(0x0),
    fhZVtxRecTrigg(0x0),
    fhZVtxRecTriggVtx(0x0),
    fVtxReFunc(0x0),
    fVtxMCFunc(0x0),
    fVtxRatioFunc(0x0),
    fVtxRatioMax(1)
{
    //Default constructor
    for( int ivtx=0;ivtx<kNVtxBin;ivtx++ ){
        for( int icent=0;icent<kNCentBin;icent++ ){
            fhChargedPtMCTriggVtx[ivtx][icent] = 0x0;
            for( int ifilter=0;ifilter<AliJTrackCut::kJNTrackCuts;ifilter++ ){
                for( int ipri=0;ipri<kNPrimaryStatus;ipri++ ){
                    for( int itt=0;itt<kNTrackType;itt++ ){
                        fhChargedPtMCRecoCentVtx[ivtx][icent][ifilter][ipri][itt] = 0x0;
                    }
                }
            }
        }
    }

}

//______________________________________________________________________________
AliJEfficiencyScanner::AliJEfficiencyScanner(const char *name):
    TNamed(name,name), 
	fMBTriggMask(0),
    fTrackList(0),
    fMCTrackList(0x0),
    fEventHeader(0x0),
    fRunHeader(0x0),
    fhVertexZMC(0x0),
    fhVertexZTrigg(0x0),
    fhVertexZTriggVtx(0x0),
    fhVZRawMC(0x0),
    fhVZRecMC(0x0),
    fhVZRecAccMC(0x0),
    fh2VtxCent(0x0),
    fhL0Input(0x0),
    fhTriggerAlice(0x0),
    fhZVtxMCAll(0x0),
    fhZVtxMCTrigg(0x0),
    fhZVtxMCTriggVtx(0x0),
    fhZVtxRecAll(0x0),
    fhZVtxRecTrigg(0x0),
    fhZVtxRecTriggVtx(0x0),
    fVtxReFunc(0x0),
    fVtxMCFunc(0x0),
    fVtxRatioFunc(0x0),
    fVtxRatioMax(1)
{
    // Constructor
    for( int ivtx=0;ivtx<kNVtxBin;ivtx++ ){
        for( int icent=0;icent<kNCentBin;icent++ ){
            fhChargedPtMCTriggVtx[ivtx][icent] = 0x0;
            for( int ifilter=0;ifilter<AliJTrackCut::kJNTrackCuts;ifilter++ ){
                for( int ipri=0;ipri<kNPrimaryStatus;ipri++ ){
                    for( int itt=0;itt<kNTrackType;itt++ ){
                        fhChargedPtMCRecoCentVtx[ivtx][icent][ifilter][ipri][itt] = 0x0;
                    }
                }
            }
        }
    }
}

//____________________________________________________________________________
AliJEfficiencyScanner::AliJEfficiencyScanner(const AliJEfficiencyScanner& ap) :
    TNamed(ap.GetName(), ap.GetTitle()),
	fMBTriggMask(ap.fMBTriggMask),
    fTrackList(ap.fTrackList),
    fMCTrackList(ap.fMCTrackList),
    fEventHeader( ap.fEventHeader ),
    fRunHeader(ap.fRunHeader),
    fhVertexZMC(ap.fhVertexZMC),
    fhVertexZTrigg(ap.fhVertexZTrigg),
    fhVertexZTriggVtx(ap.fhVertexZTriggVtx),
    fhVZRawMC(ap.fhVZRawMC),
    fhVZRecMC(ap.fhVZRecMC),
    fhVZRecAccMC(ap.fhVZRecAccMC),
    fh2VtxCent(ap.fh2VtxCent),
    fhL0Input(ap.fhL0Input),
    fhTriggerAlice(ap.fhTriggerAlice),
    fhZVtxMCAll(ap.fhZVtxMCAll),
    fhZVtxMCTrigg(ap.fhZVtxMCTrigg),
    fhZVtxMCTriggVtx(ap.fhZVtxMCTriggVtx),
    fhZVtxRecAll(ap.fhZVtxRecAll),
    fhZVtxRecTrigg(ap.fhZVtxRecTrigg),
    fhZVtxRecTriggVtx(ap.fhZVtxRecTriggVtx),
    fVtxReFunc(ap.fVtxReFunc),
    fVtxMCFunc(ap.fVtxMCFunc),
    fVtxRatioFunc(ap.fVtxRatioFunc),
    fVtxRatioMax(ap.fVtxRatioMax)
{ 
    // cpy ctor
    for( int ivtx=0;ivtx<kNVtxBin;ivtx++ ){
        for( int icent=0;icent<kNCentBin;icent++ ){
            fhChargedPtMCTriggVtx[ivtx][icent] = ap.fhChargedPtMCTriggVtx[ivtx][icent];
            for( int ifilter=0;ifilter<AliJTrackCut::kJNTrackCuts;ifilter++ ){
                for( int ipri=0;ipri<kNPrimaryStatus;ipri++ ){
                    for( int itt=0;itt<kNTrackType;itt++ ){
                        fhChargedPtMCRecoCentVtx[ivtx][icent][ifilter][ipri][itt] = ap.fhChargedPtMCRecoCentVtx[ivtx][icent][ifilter][ipri][itt];
                    }
                }
            }
        }
    }

}

//_____________________________________________________________________________
AliJEfficiencyScanner& AliJEfficiencyScanner::operator = (const AliJEfficiencyScanner& ap)
{
    // assignment operator

    this->~AliJEfficiencyScanner();
    new(this) AliJEfficiencyScanner(ap);
    return *this;
}

//______________________________________________________________________________
AliJEfficiencyScanner::~AliJEfficiencyScanner()
{
    // destructor 
}

//________________________________________________________________________

void AliJEfficiencyScanner::UserCreateOutputObjects()
{  
    //=== create the jcorran outputs objects
    cout<<"DEBUG Start AliJEfficiencyScanner::UserCreateOutputObjects() "<<"\t"<<gDirectory<<endl;

    double ptbin[300] = {0};
    double pt = 0;
    int i = 0;
    for( i=0;i<300;i++ ){
        ptbin[i] = pt;
        if( pt > 50 ) break;
        if( pt < 3 ) pt+= 0.05;
        else if( pt < 5 ) pt+= 0.1;
        else if( pt < 10 ) pt+= 1;
        else pt+= 1;
    }
    cout<<"n Ptbin = "<<i<<endl;
    int nPtBin = i-1;

    fh2VtxCent = new TH2D("h2VtxCent","h2VtxCent",100,0,10,110,0,110 );
    fh2VtxCent->SetDirectory(gDirectory);

    int nVtxBin = kNVtxBin;
    int nCentBin = kNCentBin;
    if( fRunHeader->IsPP() ) nCentBin = 1;

    TString name ="";
    for( int ivtx=0;ivtx<nVtxBin;ivtx++ ){
        for( int icent=0;icent<nCentBin;icent++ ){
            fhChargedPtMC[ivtx][icent] = AddTH1D( Form("hChargedPtMC%02d%02d",ivtx,icent), 
                    new TH1D("","", nPtBin, ptbin) );
            fhChargedPtMCTriggVtx[ivtx][icent]=AddTH1D( 
                    Form("hChargedPtMCTriggVtx%02d%02d", ivtx, icent ),
                    new TH1D("", "", nPtBin, ptbin) );
            fhChargedPtMCTrigg[ivtx][icent]=AddTH1D( 
                    Form("hChargedPtMCTrigg%02d%02d", ivtx, icent ),
                    new TH1D("", "", nPtBin, ptbin) );
            //for any MC track filled with MC pt in triggered event
            name = Form("h2DChargedPtTrigg%02d%02d",ivtx,icent);
            fh2DChargedPtTrigg[ivtx][icent]=AddTH2D(name, new TH2D(name,name, nPtBin, ptbin, 20, -0.8, 0.8));
            //for any MC track filled with MC pt in triggered event with rec vertex
            name = Form("h2DChargedPtTriggVtx%02d%02d",ivtx,icent);
            fh2DChargedPtTriggVtx[ivtx][icent]=AddTH2D(name, new TH2D(name,name, nPtBin, ptbin, 20, -0.8, 0.8));

        }
    }
    fhTriggerAlice = AddTH1D("hTriggerAlice",new TH1D("","",32,0,32));
    fhL0Input = AddTH1D("hL0Input",new TH1D("","",32,0,32));
    // DCA bin
    double dcaBin[1000];
    double dbin=-50-1;
    int ndbin = 0;
    dcaBin[0] = dbin;
    double tol = 1e-5;
    while(dbin < 50-1){
        if( fabs(dbin) < 2-tol ) dbin+=0.01;
        else if( fabs(dbin) < 5-tol  ) dbin+= 0.05;
        else if( fabs(dbin) <= 10-tol ) dbin+= 0.1;
        else dbin += 1;
        if( fabs(dbin) < tol ) dbin=0;
        dcaBin[ndbin++] = dbin;
    }

    for( int ivtx=0;ivtx<nVtxBin;ivtx++ ){
        for( int icent=0;icent<nCentBin;icent++ ){
            for( int ifilter=0;ifilter<AliJTrackCut::kJNTrackCuts;ifilter++ ){

                name = Form("h2DChargedPtAll%02d%02d%02d",ivtx,icent,ifilter);
                fh2DChargedPtAll[ivtx][icent][ifilter]=AddTH2D(name, new TH2D(name,name, nPtBin, ptbin, 20, -0.8, 0.8));
                name = Form("h2DChargedPtRec%02d%02d%02d",ivtx,icent,ifilter);
                fh2DChargedPtRec[ivtx][icent][ifilter]=AddTH2D(name, new TH2D(name,name, nPtBin, ptbin, 20, -0.8, 0.8));
                for( int ipri=0;ipri<kNPrimaryStatus;ipri++ ){
                    for( int itt=0;itt<kNTrackType;itt++ ){
                        name = Form("hChargedPtMCRecoCentVtx%02d%02d%02d%02d%02d", ivtx, icent, ifilter, ipri, itt );
                        fhChargedPtMCRecoCentVtx[ivtx][icent][ifilter][ipri][itt]=AddTH1D(name, new TH1D( name, name, nPtBin, ptbin));
                    }
                }
                name = Form("hDCA2VertexXY%02d%02d%02d", ivtx, icent, ifilter );
                fhDCA2VertexXY[ivtx][icent][ifilter] = AddTH1D(name, new TH1D("","",ndbin-1, dcaBin ));
                name = Form("hDCA2VertexZ%02d%02d%02d", ivtx, icent, ifilter );
                fhDCA2VertexZ[ivtx][icent][ifilter] = AddTH1D( name, new TH1D("","",ndbin-1, dcaBin ));

            }
        }
    }
//  TH2D * fh2MultGenRawPrimary[AliJTrackCut::kJNTrackCuts];
//  TH2D * fh2MultGenRawAll[AliJTrackCut::kJNTrackCuts];

//  TH1D * fhDCA2VertexXY[kNVtxBin][kNCentBin][AliJTrackCut::kJNTrackCuts];
    for( int ifilter=0;ifilter<AliJTrackCut::kJNTrackCuts;ifilter++ ){
        name = Form("h2MultGenRawPrimary%02d", ifilter);
        fh2MultGenRawPrimary[ifilter] = AddTH2D( name, new TH2D(name, name, 100,0,100,100,0,100 ));
        name = Form("h2MultGenRawAll%02d", ifilter);
        fh2MultGenRawAll[ifilter] = AddTH2D( name, new TH2D(name, name, 100,0,100,100,0,100 ));
    }
    double   binsVertexMult[] = {0,1,2,3,4,5,10000};
    int   NbinsVertexMult  = sizeof(binsVertexMult)/sizeof(double)-1;
    double binsVertexZ[]    = {-10,-6,-3,-2,-1.5,-1,-0.5,0,0.5,1,1.5,2,3,6,10};
    int   NbinsVertexZ   = sizeof(binsVertexZ)/sizeof(double)-1;
    fhVertexZMC = AddTH2D("hVertexZMC",new TH2D("hVertexZMC","hVertexZMC", NbinsVertexMult, binsVertexMult, NbinsVertexZ, binsVertexZ));
    fhVertexZTrigg = AddTH2D("hVertexZTrigg",new TH2D("hVertexZTrigg","hVertexZTrigg",  NbinsVertexMult, binsVertexMult, NbinsVertexZ, binsVertexZ));
    fhVertexZTriggVtx = AddTH2D("hVertexZTriggVtx",new TH2D("hVertexZTriggVtx","hVertexZTriggVtx",  NbinsVertexMult, binsVertexMult, NbinsVertexZ, binsVertexZ));
    fhVZRawMC = AddTH1D("hVtxZMC", new TH1D("hVtxZMC","VertexZ in MC ",200,-50,50));
    fhVZRecMC = AddTH1D("hVtxZRec", new TH1D("hVtxZRec","VertexZ Rec in MC",200,-50,50));
    fhVZRecAccMC = AddTH1D("hVtxZRecAcc", new TH1D("hVtxZRecAcc","VertexZ Rec in MC and acc",200,-50,50));

	int NvtxBins = 400;
	double vtxedge = 50;
    fhZVtxMCAll = AddTH1D("hZVtxMCAll", new TH1D("hZVtxMCAll","VetrexZ in MC for all event",NvtxBins, -vtxedge, vtxedge ));
    fhZVtxMCTrigg = AddTH1D("hZVtxMCTrigg", new TH1D("hZVtxMCTrigg","VetrexZ in MC for triggered event",NvtxBins, -vtxedge, vtxedge ));
    fhZVtxMCTriggVtx = AddTH1D("hZVtxMCTriggVtx", new TH1D("hZVtxMCTriggVtx","VetrexZ in MC for triggered and vtx reconstructed event",NvtxBins, -vtxedge, vtxedge ));

    fhZVtxRecAll = AddTH1D("hZVtxRecAll", new TH1D("hZVtxRecAll","VetrexZ in Rec for all event",NvtxBins, -vtxedge, vtxedge ));
    fhZVtxRecTrigg = AddTH1D("hZVtxRecTrigg", new TH1D("hZVtxRecTrigg","VetrexZ in Rec for triggered event",NvtxBins, -vtxedge, vtxedge ));
    fhZVtxRecTriggVtx = AddTH1D("hZVtxRecTriggVtx", new TH1D("hZVtxRecTriggVtx","VetrexZ in Rec for triggered and vtx reconstructed event",NvtxBins, -vtxedge, vtxedge ));

    double v0 = -20;
    double v1 = 20;
    fVtxReFunc = new TF1("VtxReFunc", "gaus",v0,v1);
    fVtxReFunc->SetParameters(1 ,  -7.14076e-01, 6.27110 );
    fVtxMCFunc = new TF1("VtxMCFunc", "gaus",v0,v1);
    fVtxMCFunc->SetParameters(1, -4.53674e-01,  5.27088e+00 );
    fVtxRatioFunc = new TF1("VtxRatioFunc", "VtxReFunc/VtxMCFunc",v0,v1);
    fVtxRatioMax = fVtxRatioFunc->GetMaximum();



    cout << "Add(fAliJRunHeader) in UserCreateObject() ======= " << endl;
    cout<<"DEBUG END AliJEfficiencyScanner::UserCreateOutputObjects() "<<endl;

}

//______________________________________________________________________________

void AliJEfficiencyScanner::UserExec(Option_t *option)
{

    // Main loop
    // Called for each event
    JUNUSED(option);

    double zVtxCut = 10;
    double etaCut  = 0.8;
    double nCentBin = 20;

    AliJEventHeader * eventHeader = GetJEventHeader();

    //== TRIGGER( MB ) TODO is this?
    Bool_t triggeredEventMB  = eventHeader->GetTriggerMaskJCorran() & fMBTriggMask; // 1:kMB 8:kINT7 //TODO
    UInt_t trigAlice = eventHeader->GetTriggerMaskAlice();
/*
cout<<"Trigger"<<endl;
	for( int i=0;i<32 ;i++ ) cout<<Form("%02d",i)<<" ";
	cout<<endl;
	for( int i=0;i<32 ;i++ ) cout<<(eventHeader->GetTriggerMaskJCorran()&(1<<i)?1:0)<<"  ";
	cout<<endl;
	for( int i=0;i<32 ;i++ ) cout<<(eventHeader->GetTriggerMaskAlice()&(1<<i)?1:0)<<"  ";
	cout<<endl;
*/
    /*  
    bool isMB1   = trigAlice & (1UL<<0);
    bool isMBBG1 = trigAlice & (1UL<<3);
    bool isGFO = trigAlice & (1UL<<14);
    bool isMBBG3 = trigAlice & (1UL<<1); 
    bool isV0A   = trigAlice & (1UL<<10);
    bool isV0C   = trigAlice & (1UL<11);
    */

    // L0Input
    UInt_t l0Input = eventHeader->GetL0TriggerInputs();
    /* 
    bool isL0V0A  = l0Input & (1UL<<9);
    bool isL0V0C  = l0Input & (1UL<<10);
    bool isL0V0AND  = l0Input & (1UL<<4);
    bool isL0V0OR   = l0Input & (1UL<<1);
    bool isL0V0BeamGas   = l0Input & (1UL<<2);
    bool isL0SMB   = l0Input & (1UL<<3);
    bool isL0T0X   = l0Input & (1UL<<0);
    */


    
    for( UInt_t i=0;i<32;i++ ){
        if( l0Input  & 1UL<<i ) fhL0Input->Fill(i);
        if( trigAlice & 1UL<<i ) fhTriggerAlice->Fill(i);
/*
        if( isL0V0A != isV0A ) cout<<"J_WARN 0 : L0:V0A != Class:V0A "<<isL0V0A<<"\t"<<isV0A<<endl;
        if( isL0V0C != isV0C ) cout<<"J_WARN 1 : L0:V0C != Class:V0C "<<isL0V0C<<"\t"<<isV0C<<endl;
        if( isL0SMB != isGFO ) cout<<"J_WARN 2 : L0:SMB != Class:GFO "<<isL0SMB<<"\t"<<isGFO<<endl;
        if( isL0V0OR != isMBBG1 ) cout<<"J_WARN 3 : L0:V0OR != Class:MBBG1 "<<isL0V0OR<<"\t"<<isMBBG1<<endl;
        if( (isL0V0A||isL0V0C) != isMBBG1 ) cout<<"J_WARN 4 : L0:V0A|V0C != Class:MBBG1 "<<(isL0V0A||isL0V0C)<<"\t"<<isMBBG1<<endl;
        if( ( isL0T0X || isL0V0OR || isL0SMB && !isL0V0BeamGas ) != isMB1 ) cout<<"J_WARN 5 : L0:MB1 != Class:MB1 "<<isMB1<<endl;
        if( (isL0V0OR || isL0SMB && !isL0V0BeamGas ) != (( isMBBG1 || isGFO ) && isMB1 )) cout<<"J_WARN 6 : L0:MB != Class:MB "<<(isL0V0OR || isL0SMB && !isL0V0BeamGas)<<"\t"<<((isMBBG1 || isGFO ) && isMB1)<<endl; 
        if( (isL0V0OR || isL0SMB ) != (( isMBBG1 || isGFO ) )) cout<<"J_WARN 6 : L0:MB != Class:MB "<<(isL0V0OR || isL0SMB && !isL0V0BeamGas)<<"\t"<<((isMBBG1 || isGFO ) && isMB1)<<endl; 
*/

    }
    //* FOR TEST */
    //Bool_t triggeredEventMB  = ( isMBBG1 || isGFO ) && isMB1;
    //Bool_t triggeredEventMB  = isMB1;
    //Bool_t triggeredEventMB  = ( isMBBG1 || isGFO );
    //
    //== REAL MB with L0 INput
    //triggeredEventMB  = ( (isL0V0OR || isL0SMB) );
    //== CENTRALITY
    double centrality = eventHeader->GetCentrality();
    int iCent = int( centrality/(100./nCentBin));
    if( iCent< 0 || iCent>20 ) return;
    //if( centrality < 0 || centrality > 100 ) return;
    if( fRunHeader->IsPP() ) {iCent = 0; centrality=0;}

    //== Vertex
    //==== Reco
    int ncontributors = eventHeader->GetVtxMult();
    double zVtxRec = eventHeader->GetZVertex();
    Bool_t goodRecVertex = (ncontributors>0) && (fabs(zVtxRec)<=zVtxCut);
    int iVtx = 0;
    //==== MC
    double zVtxMC = eventHeader->GetZVertexMC();
    //==== vtx sampling
    /*
    if( zVtxMC > fVtxRatioFunc->GetXmin() && zVtxMC < fVtxRatioFunc->GetXmax() ){
        double vtxRatio = fVtxRatioFunc->Eval(zVtxMC)/fVtxRatioMax;
        double random = gRandom->Uniform(0,1);
        if( random > vtxRatio ) return;
    }
    */

    fhVZRawMC->Fill(zVtxMC);
    fhVertexZMC->Fill(ncontributors,zVtxMC);
    // for crosscheck MC input events
    fhZVtxMCAll->Fill(zVtxMC);
    fhZVtxRecAll->Fill(zVtxRec);

    if(triggeredEventMB){
        fhVertexZTrigg->Fill(ncontributors,zVtxMC);
       // for crosscheck passing trigger condition
        fhZVtxMCTrigg->Fill(zVtxMC);
        fhZVtxRecTrigg->Fill(zVtxRec);

        if(ncontributors>0){//reconstructed vertex
            fhVZRecMC->Fill(zVtxRec);
       		// for crosscheck passing trigger condition + reconstruted vtx
            fhZVtxMCTriggVtx->Fill(zVtxMC);
            fhZVtxRecTriggVtx->Fill(zVtxRec);
        }
        if(goodRecVertex){
            fhVertexZTriggVtx->Fill(ncontributors,zVtxMC);
            fhVZRecAccMC->Fill(zVtxRec); 
        }
    }

    fh2VtxCent->Fill( zVtxRec, centrality );

    // TODO ? MC or REC?

    int nRawMultPri = 0;
    int nGenMultPri[AliJTrackCut::kJNTrackCuts] = {0};
    int nGenMultAll[AliJTrackCut::kJNTrackCuts] = {0};

    //==============================================
    //  LOOP over MC
    //==============================================

    //if( fabs(zVtxMC) > zVtxCut ) return;
    int nMCTrks = 0;
    if( fRunHeader->IsMC() )
        nMCTrks = GetJMCTracks()->GetEntriesFast();
    for( int it=0; it< nMCTrks; it++ ){
        AliJMCTrack * track = GetJMCTrack( it );//Always IsPhysicalPrimary
        if( !track ) continue;
        if( !track->IsTrue( AliJMCTrack::kPrimary ) ) continue;
        // TODO need? if( ! track->IsFinal() ) continue;
        double eta = track->Eta();
        double pt = track->Pt();
        if( fabs(eta) > etaCut ) continue;
        if( ! track->IsCharged() ) continue;


        nRawMultPri++;
        fhChargedPtMC[iVtx][iCent]->Fill(pt);     //ALL charged physical primaries
        if(triggeredEventMB){//triggered
            fhChargedPtMCTrigg[iVtx][iCent]->Fill(pt);
            fh2DChargedPtTrigg[iVtx][iCent]->Fill(pt, eta); 
            if(goodRecVertex){ //triggered+vertex  
                fhChargedPtMCTriggVtx[iVtx][iCent]->Fill(pt);
                fh2DChargedPtTriggVtx[iVtx][iCent]->Fill(pt, eta);
            }
        }
    }

    //--------------------------------------------------------------  
    //---- Reconstracted TRACKS 
    //--------------------------------------------------------------  
    const int nTrkCut = AliJTrackCut::kJNTrackCuts;
    if( ! triggeredEventMB ) return;
    if( ! goodRecVertex ) return;
    int nTrks   = GetJTracks()->GetEntriesFast();
    for(Int_t it = 0; it < nTrks; it++) {
        AliJTrack * track = GetJTrack(it);
        if( !track ) continue;
        bool isTriggered = track->GetFilterMap();
        if( !isTriggered ) continue;


        //== init Vars of Track
        double eta   = track->Eta();
        double etaTPC = eta;
        double etaGCG = eta;
        double ptRec = track->Pt();
        double ptTPC = track->PtTPC();
        if( fabs(ptTPC) < 1e-2 ) ptTPC=ptRec;
        else{
            TVector3 v(track->GetTPCTrack());
            etaTPC = v.Eta();
        }
        double ptGCG = track->PtGCG();
        if( fabs(ptGCG) < 1e-2 ) ptGCG=ptRec;
        else{
            TVector3 v(track->GetGCGTrack());
            etaGCG = v.Eta();
        }
        double ptMC  = -1;
        int iPrimary = kJFake;

        //== Skip tracks with out of Eta
        if( fabs(eta) > etaCut && fabs(etaTPC)>etaCut && fabs(etaGCG)>etaCut) continue;

        //== Find MC Info
        for( int imc=0;imc<nMCTrks;imc++ ){
            AliJMCTrack * mcTrack = GetJMCTrack(imc);
            if( !mcTrack || !mcTrack->IsTrue( AliJMCTrack::kPrimary ) ) continue;
            if( mcTrack && (TMath::Abs(track->GetLabel()) == TMath::Abs(mcTrack->GetLabel())) ){
                iPrimary = kJPhysicsPrimary;
                ptMC = mcTrack->Pt();
                break;
            }
        }


        //== FILL HIST
        for( int icut=0;icut<nTrkCut;icut++ ){
            if( IsSelected( track ,icut) ){
                if( fabs(eta) < etaCut ){
                    fh2DChargedPtAll[iVtx][iCent][icut]->Fill(ptRec, eta);
                    fh2DChargedPtRec[iVtx][iCent][icut]->Fill(ptMC, eta);
                    fhChargedPtMCRecoCentVtx[iVtx][iCent][icut][iPrimary][kJGlobal]->Fill( ptRec );
                    if( iPrimary == kJPhysicsPrimary ) nGenMultPri[icut]++;
                    nGenMultAll[icut]++;
                    //fhDCA2VertexXY[iVtx][iCent][icut]->Fill( track->GetDCAtoVertexXY() );
                    //fhDCA2VertexZ[iVtx][iCent][icut]->Fill( track->GetDCAtoVertexZ() );
                }
                if( fabs(etaTPC) < etaCut )
                    fhChargedPtMCRecoCentVtx[iVtx][iCent][icut][iPrimary][kJTPCOnly]->Fill( ptTPC );
                if( fabs(etaGCG) < etaCut )
                    fhChargedPtMCRecoCentVtx[iVtx][iCent][icut][iPrimary][kJGCG]->Fill( ptGCG );
                if( (icut==0 && fabs(etaTPC) < etaCut) || (icut!=0&&fabs(eta)<etaCut) )
                    fhChargedPtMCRecoCentVtx[iVtx][iCent][icut][iPrimary][kJMCTrack]->Fill( ptMC );
            }
        }
    }

    for( int icut=0;icut<nTrkCut;icut++ ){
        fh2MultGenRawPrimary[icut]->Fill( nRawMultPri, nGenMultPri[icut] );
        fh2MultGenRawAll[icut]->Fill( nRawMultPri, nGenMultAll[icut] );
    }
    //cout<<"DEBUG END AliJEfficiencyScanner::UserExec"<<endl;
}

//______________________________________________________________________________
void AliJEfficiencyScanner::Init()
{
    // Intialisation of parameters

}

//______________________________________________________________________________
void AliJEfficiencyScanner::Terminate(Option_t *)
{
    // termination
}


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