ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2014, 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.                  *
 **************************************************************************/

/**************************************************************************
 *     AliXtAnalysis:
 * This class constructs inclusive and isolated (based on charged tracks)
 * invariant spectra. Isolated case uses a different efficiency where the
 * contamination from cases where non-isolated particle appears as an
 * isolated one due to finite detector efficiency is taken into account.
 *
 * contact: Sami Räsänen
 *          University of Jyväskylä, Finland 
 *          sami.s.rasanen@jyu.fi
**************************************************************************/

// general + root classes
#include <TList.h>
#include <TChain.h>
#include <TObjArray.h>

// AliRoot classes
#include <AliAnalysisManager.h>
#include <AliInputEventHandler.h>
#include <AliAnalysisUtils.h>
#include <AliAODTrack.h>
#include <AliAODEvent.h>

// Jyväskylä classes
#include <AliJCard.h>  // this class at PWGCF / JCORRAN
#include "AliJXtHistos.h"
//#include "AliIsolatedEfficiency.h"

// This analysis
#include "AliXtAnalysis.h"
 
ClassImp(AliXtAnalysis)

//________________________________________________________________________
AliXtAnalysis::AliXtAnalysis() 
      : AliAnalysisTaskSE(),
        fOutputList(0x0),
        fAnaUtils(0x0),
        fCard(0x0),
        fHistDir(0x0),
        fHistos(0x0),
        fhEvents(0x0),
	//fEfficiency(0x0),
	fChargedList(0x0),
	fIsolatedChargedList(0x0),
	fCentBin(-1),
	fZBin(-1),
	fZVert(999999.),
	fevt(0),
	fDebugMode(0)
{
// Constructor
}
//________________________________________________________________________
AliXtAnalysis::AliXtAnalysis(const char *name, const char * cardname) 
      :	AliAnalysisTaskSE(name),
	fOutputList(0x0), 
	fAnaUtils(0x0),
   	fCard(0x0),
	fHistDir(0x0),
	fHistos(0x0),
   	fhEvents(0x0),
	//fEfficiency(0x0),
	fChargedList(0x0),
	fIsolatedChargedList(0x0),
	fCentBin(-1),
	fZBin(-1),
	fZVert(999999.),
	fevt(0),
	fDebugMode(0)
{
	// All parameters of the analysis
	fCard = new AliJCard(cardname);
	
	cout << "debug: card created to address " << fCard << endl;
	
	fCard->PrintOut();
	
	fAnaUtils = new AliAnalysisUtils();
	fAnaUtils->SetUseOutOfBunchPileUp( kTRUE );
	fAnaUtils->SetUseSPDCutInMultBins( kTRUE);
	
	// Define input and output slots here
	// Input slot #0 works with a TChain
	DefineInput(0, TChain::Class());
	// Output slot #0 writes into a TH1 container
	DefineOutput(1, TList::Class());
	// JHistos into TDirectory
	DefineOutput(2, TDirectory::Class());
}
//________________________________________________________________________
AliXtAnalysis::AliXtAnalysis(const AliXtAnalysis& a)
      :	AliAnalysisTaskSE(a.GetName()),
	fOutputList(a.fOutputList),
	fAnaUtils(a.fAnaUtils),
	fCard(a.fCard),
	fHistDir(a.fHistDir),
	fHistos(a.fHistos),
	fhEvents(a.fhEvents),
	//fEfficiency(a.fEfficiency),
	fChargedList(a.fChargedList),
	fIsolatedChargedList(a.fIsolatedChargedList),
	fCentBin(-1),
	fZBin(-1),
	fZVert(999999.),
	fevt(0),
	fDebugMode(0)
{
    //copy constructor
    fhEvents = (TH1D*) a.fhEvents->Clone(a.fhEvents->GetName());
}
//________________________________________________________________________
AliXtAnalysis& AliXtAnalysis::operator = (const AliXtAnalysis& ap){
	// assignment operator
	this->~AliXtAnalysis();
	new(this) AliXtAnalysis(ap);
	return *this;
}
//________________________________________________________________________
AliXtAnalysis::~AliXtAnalysis() {
    // destructor
    delete fOutputList;
    delete [] fAnaUtils;
    delete [] fhEvents;
    delete fHistos;
    //delete fEfficiency;
    delete fCard;
    delete fChargedList;
    delete fIsolatedChargedList;
}
//________________________________________________________________________
void AliXtAnalysis::UserCreateOutputObjects(){
    // Create histograms
    // Called once
    
    cout<<"\n=============== CARD =============="<<endl;
    fCard->PrintOut();
    cout<<"===================================\n"<<endl;
    
    fhEvents = new TH1D("hEvents","events passing cuts", 11, -0.5, 10.5 );
    fhEvents->SetXTitle( "0 - all, 1 - pileup, 2 - kMB selected, 3 - has vertex, 4 - good vertex, 5 - MB + good vertex, 6 - MB + good vertex + centrality" );
    fhEvents->Sumw2();
    
    fOutputList = new TList();
    fOutputList->SetOwner(kTRUE);
    //for any MC track filled with MC pt
    fOutputList->Add(fhEvents);

    fChargedList = new TObjArray;
    fChargedList->SetOwner(kTRUE);
    fIsolatedChargedList = new TObjArray;
    
    PostData(1, fOutputList);
    
    bool orignalTH1AdddirectoryStatus=TH1::AddDirectoryStatus();
    TH1::AddDirectory(kTRUE);
    if( !orignalTH1AdddirectoryStatus ) cout<<"DEBUG : TH1::AddDirectory is turned on"<<endl;
    //TFile * file2 = OpenFile(2);
    
    fHistDir=gDirectory;
    fHistos = new AliJXtHistos(fCard);
    fHistos->CreateXtHistos();
    
    PostData(2, fHistDir);
    TH1::AddDirectory( orignalTH1AdddirectoryStatus );
    cout<<"DEBUG : TH1::AddDirectory get orignal Value = "<<( orignalTH1AdddirectoryStatus?"True":"False" )<<endl;
    
    //fEfficiency = new AliJEfficiency();
    
    fevt = 0;
}
//________________________________________________________________________
void AliXtAnalysis::UserExec(Option_t *) {
    
    // Main loop - called for each event
    
    fevt++;
    if(fevt % 10000 == 0) cout << "Number of event scanned = "<< fevt << endl;
    
    Int_t filterBit = AliAODTrack::kTrkGlobal; //fCard->Get("TrackFilterBit");
    
    AliVEvent *event = InputEvent();
    if(!event) return;
    
    // check if the event was triggered or not and vertex
    if( !IsGoodEvent( event ) ) return; // fZBin is set there
    fhEvents->Fill( 5 );
    if(fDebugMode > 0) cout << "zvtx = " << fZVert << endl;
    
    AliAODEvent* aodEvent = dynamic_cast<AliAODEvent*>(event);
    if(!aodEvent) return;
    
    // centrality - in case of pPb and PbPb, dictated by DataType in the card
    double fcent;
    if( fCard->Get("DataType") > 0.5 ){
        AliCentrality *cent = event->GetCentrality();
        if( ! cent ) return;
        fcent = cent->GetCentralityPercentile("V0M");
        fCentBin = fCard->GetBin(kCentrType, fcent);;
        //cout <<"Centrality = "<< fcent <<"\t"<< fCentBin << endl;
    }else{
        fcent = 0.0;
        fCentBin = 0;
    }
    
    if(fCentBin<0) return;
    fhEvents->Fill( 6 );
    Int_t nt = aodEvent->GetNumberOfTracks();
    
    fHistos->FillCentralityHistos(fcent, fCentBin);
    
    // clear them up for every event
    fChargedList->Clear();
    fIsolatedChargedList->Clear();
    
    // Is there a better way than hard code this into card???
    double sqrts = fCard->Get("Sqrts");
    
    // Isolation method: 0 = relative, 1 = absolute
    double isolMethod = fCard->Get("IsolationMethod");
    
    // Minimum isolation pT that is considered
    double minIsolationPt = fCard->Get("MinimumIsolatedPt");
    
    // Dummy numbers; either of these is updated based on selected method (other is void)
    double isolationFraction  = 99999.;
    double isolationThreshold = 99999.;
    
    if( isolMethod > 0.5 ){
        isolationThreshold = fCard->Get("IsolationThreshold");  // this is fixed threshold
    }else{
        isolationFraction = fCard->Get("IsolationFraction");  // fraction in pT, threshold updated later in a loop
    }
    
    // Isolation radius
    double isolR = fCard->Get("IsolationRadius");
    
    // Get good tracks to the list
    for(Int_t it = 0; it < nt; it++) {
        AliAODTrack *track = dynamic_cast<AliAODTrack*>(aodEvent->GetTrack(it));
        if( !track ) continue;
        if( !track->TestFilterBit(filterBit) ) continue;
        double eta = track->Eta();
        if( !fCard->IsInEtaRange( eta ) ) continue; // Do not use fiducial cut here
        AliAODTrack *acceptedTrack = new AliAODTrack( *track );
        double pT = acceptedTrack->Pt();
        double xT = 2.*pT/sqrts;
        double phi = acceptedTrack->Phi();
        
        // TODO:
        double effCorr = 1.0;
        
        // Fill histos
        fHistos->FillInclusiveHistograms(pT, xT, eta, phi, effCorr, fCentBin);
        
        // Add an accepted track into list of inclusive charged particles
        fChargedList->Add( acceptedTrack );
    }
    
    // Check isolation of the found good tracks
    Int_t nAcc = fChargedList->GetEntriesFast();
    
    // Get eta range for fiducial cut
    double etaRange = fCard->Get("EtaRange");
    
    for( Int_t it = 0; it < nAcc; it++ ){
        AliAODTrack *track = (AliAODTrack*)fChargedList->At(it);
        // Fiducial eta cut for isolated particles
        double eta = track->Eta();
        if( abs(eta) > etaRange - isolR ) continue;
        
        // To check the isolation with cone, use TLorentzVector -routines
        TLorentzVector lvTrack = TLorentzVector( track->Px(), track->Py(), track->Pz(), track->P() );
        
        // Set isolation threshold, if relative isolation
        double pT = lvTrack.Pt();
        if( pT < minIsolationPt ) continue;
        if( isolMethod < 0.5 ) isolationThreshold = pT * isolationFraction; // here: relative isolation
        
        // Isolation check
        double sum = 0.0;
        for( Int_t ia = 0; ia < nAcc; ia++ ){
            if( ia == it ) continue; // Do not count the particle itself
            AliAODTrack *assocTrack = (AliAODTrack*)fChargedList->At(ia);
            TLorentzVector lvAssoc = TLorentzVector( assocTrack->Px(), assocTrack->Py(), assocTrack->Pz(), assocTrack->P() );
            if( lvTrack.DeltaR( lvAssoc ) < isolR ) sum += lvAssoc.Pt();
        }
        
        // Cone activity
        fHistos->FillInclusiveConeActivities(pT,sum);  // efficiency correction?
        
        // If the particle was isolated, fill histograms and the list
        if( sum < isolationThreshold ){
            
            double xT = 2.*pT/sqrts;
            
            if( fDebugMode > 0 ){
                cout << "DEBUG: isolated particle found " << endl;
                cout << "fCentBin = " << fCentBin << ", pT = " << pT << ", xT = " << xT << " and eta = " << eta << endl;
            }
            
            fHistos->FillIsolatedConeActivities(pT, sum);  // efficiency correction?
            
            // TODO:
            double effCorr = 1.0;

            // Fill histos
            fHistos->FillIsolatedHistograms(pT, xT, eta, track->Phi(), effCorr, fCentBin);
            
            // Add tracks to the isolated list
            AliAODTrack *acceptedIsolatedTrack = new AliAODTrack( *track );
            fIsolatedChargedList->Add( acceptedIsolatedTrack );
        }
    }
    
    // For further analysis, there is now lists of all charged and isolated charged available, will be usefull.
    
    return;  // END
}
//________________________________________________________________________
void AliXtAnalysis::Terminate(Option_t *)
{
    cout<<"Successfully finished"<<endl;
}
//________________________________________________________________________
bool AliXtAnalysis::IsGoodEvent(AliVEvent *event) {
    
    // This function checks that the event has the requested trigger
    // and that the z-vertex is in given range
    
    
    fhEvents->Fill( 0 );
    
    if(fAnaUtils->IsPileUpEvent(event)) {
        return kFALSE;
    } else {
        Bool_t triggeredEventMB = kFALSE; //init
        
        fhEvents->Fill( 1 );
        
        Bool_t triggerkMB = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & ( AliVEvent::kMB );
        
        if( triggerkMB ){
            triggeredEventMB = kTRUE;  //event triggered as minimum bias
            fhEvents->Fill( 2 );
        }
        //--------------------------------------------------------------
        // check reconstructed vertex
        int ncontributors = 0;
        Bool_t goodRecVertex = kFALSE;
        const AliVVertex *vtx = event->GetPrimaryVertex();
        if(vtx){
            fhEvents->Fill( 3 );
            fZVert = vtx->GetZ();
            fHistos->FillRawVertexHisto(fZVert);
            ncontributors = vtx->GetNContributors();
            if(ncontributors > 0){
                if(fCard->VertInZRange(fZVert)) {
                    goodRecVertex = kTRUE;
                    fhEvents->Fill( 4 );
                    fHistos->FillAcceptedVertexHisto(fZVert, fCentBin);
                    fZBin  = fCard->GetBin(kZVertType, fZVert);
                }
            }
        }
        return triggerkMB && goodRecVertex;
    }
    //---------------------------------
}
 AliXtAnalysis.cxx:1
 AliXtAnalysis.cxx:2
 AliXtAnalysis.cxx:3
 AliXtAnalysis.cxx:4
 AliXtAnalysis.cxx:5
 AliXtAnalysis.cxx:6
 AliXtAnalysis.cxx:7
 AliXtAnalysis.cxx:8
 AliXtAnalysis.cxx:9
 AliXtAnalysis.cxx:10
 AliXtAnalysis.cxx:11
 AliXtAnalysis.cxx:12
 AliXtAnalysis.cxx:13
 AliXtAnalysis.cxx:14
 AliXtAnalysis.cxx:15
 AliXtAnalysis.cxx:16
 AliXtAnalysis.cxx:17
 AliXtAnalysis.cxx:18
 AliXtAnalysis.cxx:19
 AliXtAnalysis.cxx:20
 AliXtAnalysis.cxx:21
 AliXtAnalysis.cxx:22
 AliXtAnalysis.cxx:23
 AliXtAnalysis.cxx:24
 AliXtAnalysis.cxx:25
 AliXtAnalysis.cxx:26
 AliXtAnalysis.cxx:27
 AliXtAnalysis.cxx:28
 AliXtAnalysis.cxx:29
 AliXtAnalysis.cxx:30
 AliXtAnalysis.cxx:31
 AliXtAnalysis.cxx:32
 AliXtAnalysis.cxx:33
 AliXtAnalysis.cxx:34
 AliXtAnalysis.cxx:35
 AliXtAnalysis.cxx:36
 AliXtAnalysis.cxx:37
 AliXtAnalysis.cxx:38
 AliXtAnalysis.cxx:39
 AliXtAnalysis.cxx:40
 AliXtAnalysis.cxx:41
 AliXtAnalysis.cxx:42
 AliXtAnalysis.cxx:43
 AliXtAnalysis.cxx:44
 AliXtAnalysis.cxx:45
 AliXtAnalysis.cxx:46
 AliXtAnalysis.cxx:47
 AliXtAnalysis.cxx:48
 AliXtAnalysis.cxx:49
 AliXtAnalysis.cxx:50
 AliXtAnalysis.cxx:51
 AliXtAnalysis.cxx:52
 AliXtAnalysis.cxx:53
 AliXtAnalysis.cxx:54
 AliXtAnalysis.cxx:55
 AliXtAnalysis.cxx:56
 AliXtAnalysis.cxx:57
 AliXtAnalysis.cxx:58
 AliXtAnalysis.cxx:59
 AliXtAnalysis.cxx:60
 AliXtAnalysis.cxx:61
 AliXtAnalysis.cxx:62
 AliXtAnalysis.cxx:63
 AliXtAnalysis.cxx:64
 AliXtAnalysis.cxx:65
 AliXtAnalysis.cxx:66
 AliXtAnalysis.cxx:67
 AliXtAnalysis.cxx:68
 AliXtAnalysis.cxx:69
 AliXtAnalysis.cxx:70
 AliXtAnalysis.cxx:71
 AliXtAnalysis.cxx:72
 AliXtAnalysis.cxx:73
 AliXtAnalysis.cxx:74
 AliXtAnalysis.cxx:75
 AliXtAnalysis.cxx:76
 AliXtAnalysis.cxx:77
 AliXtAnalysis.cxx:78
 AliXtAnalysis.cxx:79
 AliXtAnalysis.cxx:80
 AliXtAnalysis.cxx:81
 AliXtAnalysis.cxx:82
 AliXtAnalysis.cxx:83
 AliXtAnalysis.cxx:84
 AliXtAnalysis.cxx:85
 AliXtAnalysis.cxx:86
 AliXtAnalysis.cxx:87
 AliXtAnalysis.cxx:88
 AliXtAnalysis.cxx:89
 AliXtAnalysis.cxx:90
 AliXtAnalysis.cxx:91
 AliXtAnalysis.cxx:92
 AliXtAnalysis.cxx:93
 AliXtAnalysis.cxx:94
 AliXtAnalysis.cxx:95
 AliXtAnalysis.cxx:96
 AliXtAnalysis.cxx:97
 AliXtAnalysis.cxx:98
 AliXtAnalysis.cxx:99
 AliXtAnalysis.cxx:100
 AliXtAnalysis.cxx:101
 AliXtAnalysis.cxx:102
 AliXtAnalysis.cxx:103
 AliXtAnalysis.cxx:104
 AliXtAnalysis.cxx:105
 AliXtAnalysis.cxx:106
 AliXtAnalysis.cxx:107
 AliXtAnalysis.cxx:108
 AliXtAnalysis.cxx:109
 AliXtAnalysis.cxx:110
 AliXtAnalysis.cxx:111
 AliXtAnalysis.cxx:112
 AliXtAnalysis.cxx:113
 AliXtAnalysis.cxx:114
 AliXtAnalysis.cxx:115
 AliXtAnalysis.cxx:116
 AliXtAnalysis.cxx:117
 AliXtAnalysis.cxx:118
 AliXtAnalysis.cxx:119
 AliXtAnalysis.cxx:120
 AliXtAnalysis.cxx:121
 AliXtAnalysis.cxx:122
 AliXtAnalysis.cxx:123
 AliXtAnalysis.cxx:124
 AliXtAnalysis.cxx:125
 AliXtAnalysis.cxx:126
 AliXtAnalysis.cxx:127
 AliXtAnalysis.cxx:128
 AliXtAnalysis.cxx:129
 AliXtAnalysis.cxx:130
 AliXtAnalysis.cxx:131
 AliXtAnalysis.cxx:132
 AliXtAnalysis.cxx:133
 AliXtAnalysis.cxx:134
 AliXtAnalysis.cxx:135
 AliXtAnalysis.cxx:136
 AliXtAnalysis.cxx:137
 AliXtAnalysis.cxx:138
 AliXtAnalysis.cxx:139
 AliXtAnalysis.cxx:140
 AliXtAnalysis.cxx:141
 AliXtAnalysis.cxx:142
 AliXtAnalysis.cxx:143
 AliXtAnalysis.cxx:144
 AliXtAnalysis.cxx:145
 AliXtAnalysis.cxx:146
 AliXtAnalysis.cxx:147
 AliXtAnalysis.cxx:148
 AliXtAnalysis.cxx:149
 AliXtAnalysis.cxx:150
 AliXtAnalysis.cxx:151
 AliXtAnalysis.cxx:152
 AliXtAnalysis.cxx:153
 AliXtAnalysis.cxx:154
 AliXtAnalysis.cxx:155
 AliXtAnalysis.cxx:156
 AliXtAnalysis.cxx:157
 AliXtAnalysis.cxx:158
 AliXtAnalysis.cxx:159
 AliXtAnalysis.cxx:160
 AliXtAnalysis.cxx:161
 AliXtAnalysis.cxx:162
 AliXtAnalysis.cxx:163
 AliXtAnalysis.cxx:164
 AliXtAnalysis.cxx:165
 AliXtAnalysis.cxx:166
 AliXtAnalysis.cxx:167
 AliXtAnalysis.cxx:168
 AliXtAnalysis.cxx:169
 AliXtAnalysis.cxx:170
 AliXtAnalysis.cxx:171
 AliXtAnalysis.cxx:172
 AliXtAnalysis.cxx:173
 AliXtAnalysis.cxx:174
 AliXtAnalysis.cxx:175
 AliXtAnalysis.cxx:176
 AliXtAnalysis.cxx:177
 AliXtAnalysis.cxx:178
 AliXtAnalysis.cxx:179
 AliXtAnalysis.cxx:180
 AliXtAnalysis.cxx:181
 AliXtAnalysis.cxx:182
 AliXtAnalysis.cxx:183
 AliXtAnalysis.cxx:184
 AliXtAnalysis.cxx:185
 AliXtAnalysis.cxx:186
 AliXtAnalysis.cxx:187
 AliXtAnalysis.cxx:188
 AliXtAnalysis.cxx:189
 AliXtAnalysis.cxx:190
 AliXtAnalysis.cxx:191
 AliXtAnalysis.cxx:192
 AliXtAnalysis.cxx:193
 AliXtAnalysis.cxx:194
 AliXtAnalysis.cxx:195
 AliXtAnalysis.cxx:196
 AliXtAnalysis.cxx:197
 AliXtAnalysis.cxx:198
 AliXtAnalysis.cxx:199
 AliXtAnalysis.cxx:200
 AliXtAnalysis.cxx:201
 AliXtAnalysis.cxx:202
 AliXtAnalysis.cxx:203
 AliXtAnalysis.cxx:204
 AliXtAnalysis.cxx:205
 AliXtAnalysis.cxx:206
 AliXtAnalysis.cxx:207
 AliXtAnalysis.cxx:208
 AliXtAnalysis.cxx:209
 AliXtAnalysis.cxx:210
 AliXtAnalysis.cxx:211
 AliXtAnalysis.cxx:212
 AliXtAnalysis.cxx:213
 AliXtAnalysis.cxx:214
 AliXtAnalysis.cxx:215
 AliXtAnalysis.cxx:216
 AliXtAnalysis.cxx:217
 AliXtAnalysis.cxx:218
 AliXtAnalysis.cxx:219
 AliXtAnalysis.cxx:220
 AliXtAnalysis.cxx:221
 AliXtAnalysis.cxx:222
 AliXtAnalysis.cxx:223
 AliXtAnalysis.cxx:224
 AliXtAnalysis.cxx:225
 AliXtAnalysis.cxx:226
 AliXtAnalysis.cxx:227
 AliXtAnalysis.cxx:228
 AliXtAnalysis.cxx:229
 AliXtAnalysis.cxx:230
 AliXtAnalysis.cxx:231
 AliXtAnalysis.cxx:232
 AliXtAnalysis.cxx:233
 AliXtAnalysis.cxx:234
 AliXtAnalysis.cxx:235
 AliXtAnalysis.cxx:236
 AliXtAnalysis.cxx:237
 AliXtAnalysis.cxx:238
 AliXtAnalysis.cxx:239
 AliXtAnalysis.cxx:240
 AliXtAnalysis.cxx:241
 AliXtAnalysis.cxx:242
 AliXtAnalysis.cxx:243
 AliXtAnalysis.cxx:244
 AliXtAnalysis.cxx:245
 AliXtAnalysis.cxx:246
 AliXtAnalysis.cxx:247
 AliXtAnalysis.cxx:248
 AliXtAnalysis.cxx:249
 AliXtAnalysis.cxx:250
 AliXtAnalysis.cxx:251
 AliXtAnalysis.cxx:252
 AliXtAnalysis.cxx:253
 AliXtAnalysis.cxx:254
 AliXtAnalysis.cxx:255
 AliXtAnalysis.cxx:256
 AliXtAnalysis.cxx:257
 AliXtAnalysis.cxx:258
 AliXtAnalysis.cxx:259
 AliXtAnalysis.cxx:260
 AliXtAnalysis.cxx:261
 AliXtAnalysis.cxx:262
 AliXtAnalysis.cxx:263
 AliXtAnalysis.cxx:264
 AliXtAnalysis.cxx:265
 AliXtAnalysis.cxx:266
 AliXtAnalysis.cxx:267
 AliXtAnalysis.cxx:268
 AliXtAnalysis.cxx:269
 AliXtAnalysis.cxx:270
 AliXtAnalysis.cxx:271
 AliXtAnalysis.cxx:272
 AliXtAnalysis.cxx:273
 AliXtAnalysis.cxx:274
 AliXtAnalysis.cxx:275
 AliXtAnalysis.cxx:276
 AliXtAnalysis.cxx:277
 AliXtAnalysis.cxx:278
 AliXtAnalysis.cxx:279
 AliXtAnalysis.cxx:280
 AliXtAnalysis.cxx:281
 AliXtAnalysis.cxx:282
 AliXtAnalysis.cxx:283
 AliXtAnalysis.cxx:284
 AliXtAnalysis.cxx:285
 AliXtAnalysis.cxx:286
 AliXtAnalysis.cxx:287
 AliXtAnalysis.cxx:288
 AliXtAnalysis.cxx:289
 AliXtAnalysis.cxx:290
 AliXtAnalysis.cxx:291
 AliXtAnalysis.cxx:292
 AliXtAnalysis.cxx:293
 AliXtAnalysis.cxx:294
 AliXtAnalysis.cxx:295
 AliXtAnalysis.cxx:296
 AliXtAnalysis.cxx:297
 AliXtAnalysis.cxx:298
 AliXtAnalysis.cxx:299
 AliXtAnalysis.cxx:300
 AliXtAnalysis.cxx:301
 AliXtAnalysis.cxx:302
 AliXtAnalysis.cxx:303
 AliXtAnalysis.cxx:304
 AliXtAnalysis.cxx:305
 AliXtAnalysis.cxx:306
 AliXtAnalysis.cxx:307
 AliXtAnalysis.cxx:308
 AliXtAnalysis.cxx:309
 AliXtAnalysis.cxx:310
 AliXtAnalysis.cxx:311
 AliXtAnalysis.cxx:312
 AliXtAnalysis.cxx:313
 AliXtAnalysis.cxx:314
 AliXtAnalysis.cxx:315
 AliXtAnalysis.cxx:316
 AliXtAnalysis.cxx:317
 AliXtAnalysis.cxx:318
 AliXtAnalysis.cxx:319
 AliXtAnalysis.cxx:320
 AliXtAnalysis.cxx:321
 AliXtAnalysis.cxx:322
 AliXtAnalysis.cxx:323
 AliXtAnalysis.cxx:324
 AliXtAnalysis.cxx:325
 AliXtAnalysis.cxx:326
 AliXtAnalysis.cxx:327
 AliXtAnalysis.cxx:328
 AliXtAnalysis.cxx:329
 AliXtAnalysis.cxx:330
 AliXtAnalysis.cxx:331
 AliXtAnalysis.cxx:332
 AliXtAnalysis.cxx:333
 AliXtAnalysis.cxx:334
 AliXtAnalysis.cxx:335
 AliXtAnalysis.cxx:336
 AliXtAnalysis.cxx:337
 AliXtAnalysis.cxx:338
 AliXtAnalysis.cxx:339
 AliXtAnalysis.cxx:340
 AliXtAnalysis.cxx:341
 AliXtAnalysis.cxx:342
 AliXtAnalysis.cxx:343
 AliXtAnalysis.cxx:344
 AliXtAnalysis.cxx:345
 AliXtAnalysis.cxx:346
 AliXtAnalysis.cxx:347
 AliXtAnalysis.cxx:348
 AliXtAnalysis.cxx:349
 AliXtAnalysis.cxx:350
 AliXtAnalysis.cxx:351
 AliXtAnalysis.cxx:352
 AliXtAnalysis.cxx:353
 AliXtAnalysis.cxx:354
 AliXtAnalysis.cxx:355
 AliXtAnalysis.cxx:356
 AliXtAnalysis.cxx:357
 AliXtAnalysis.cxx:358
 AliXtAnalysis.cxx:359
 AliXtAnalysis.cxx:360
 AliXtAnalysis.cxx:361
 AliXtAnalysis.cxx:362
 AliXtAnalysis.cxx:363
 AliXtAnalysis.cxx:364
 AliXtAnalysis.cxx:365
 AliXtAnalysis.cxx:366
 AliXtAnalysis.cxx:367
 AliXtAnalysis.cxx:368
 AliXtAnalysis.cxx:369
 AliXtAnalysis.cxx:370
 AliXtAnalysis.cxx:371
 AliXtAnalysis.cxx:372
 AliXtAnalysis.cxx:373
 AliXtAnalysis.cxx:374
 AliXtAnalysis.cxx:375
 AliXtAnalysis.cxx:376
 AliXtAnalysis.cxx:377
 AliXtAnalysis.cxx:378
 AliXtAnalysis.cxx:379
 AliXtAnalysis.cxx:380
 AliXtAnalysis.cxx:381
 AliXtAnalysis.cxx:382
 AliXtAnalysis.cxx:383
 AliXtAnalysis.cxx:384
 AliXtAnalysis.cxx:385