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

//-----------------------------------------------------------------
//         AliAnalysisTaskSpectraAOD class
//-----------------------------------------------------------------

#include "TChain.h"
#include "TTree.h"
#include "TLegend.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TCanvas.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
#include "AliAODTrack.h"
#include "AliAODMCParticle.h"
#include "AliVParticle.h"
#include "AliAODEvent.h"
#include "AliAODInputHandler.h"
#include "AliAnalysisTaskSpectraAOD.h"
#include "AliAnalysisTaskESDfilter.h"
#include "AliAnalysisDataContainer.h"
#include "AliSpectraAODHistoManager.h"
#include "AliSpectraAODTrackCuts.h"
#include "AliSpectraAODEventCuts.h"
#include "AliCentrality.h"
#include "TProof.h"
#include "AliPID.h"
#include "AliVEvent.h"
#include "AliPIDResponse.h"
#include "AliStack.h"
#include "AliSpectraAODPID.h"
#include <TMCProcess.h>

#include <iostream>




using namespace AliSpectraNameSpace;
using namespace std;

ClassImp(AliAnalysisTaskSpectraAOD) // EX1 This stuff tells root to implement the streamer, inspector methods etc (we discussed about it today)

//________________________________________________________________________
AliAnalysisTaskSpectraAOD::AliAnalysisTaskSpectraAOD(const char *name) : AliAnalysisTaskSE(name), fAOD(0), fHistMan(0), fTrackCuts(0), fEventCuts(0),  fPID(0), fIsMC(0), fNRebin(0)
{
  // Default constructor
  
  DefineInput(0, TChain::Class());
  DefineOutput(1, AliSpectraAODHistoManager::Class());
  DefineOutput(2, AliSpectraAODEventCuts::Class());
  DefineOutput(3, AliSpectraAODTrackCuts::Class());
  DefineOutput(4, AliSpectraAODPID::Class());
  fNRebin=0;
  
}
//________________________________________________________________________
//________________________________________________________________________
void AliAnalysisTaskSpectraAOD::UserCreateOutputObjects()
{
  // create output objects
  fHistMan = new AliSpectraAODHistoManager("SpectraHistos",fNRebin);

  if (!fTrackCuts) AliFatal("Track Cuts should be set in the steering macro");
  if (!fEventCuts) AliFatal("Event Cuts should be set in the steering macro");
  if (!fPID)       AliFatal("PID object should be set in the steering macro");

  PostData(1, fHistMan  );
  PostData(2, fEventCuts);
  PostData(3, fTrackCuts);
  PostData(4, fPID      );

}
//________________________________________________________________________
void AliAnalysisTaskSpectraAOD::UserExec(Option_t *)
{
  // main event loop
  //Printf("ALIVE");
  fAOD = dynamic_cast<AliAODEvent*>(fInputEvent);
  if (!fAOD) {
    AliWarning("ERROR: AliAODEvent not available \n");
    return;
  }
  
  if (strcmp(fAOD->ClassName(), "AliAODEvent"))
    {
      AliFatal("Not processing AODs");
    }
  
  if(!fEventCuts->IsSelected(fAOD,fTrackCuts))return;//event selection
  
  //AliCentrality fAliCentral*;
  //   if ((fAOD->GetCentrality())->GetCentralityPercentile("V0M") > 5.) return;
  
  // First do MC to fill up the MC particle array, such that we can use it later
  TClonesArray *arrayMC = 0;
  if (fIsMC)
    {
      arrayMC = (TClonesArray*) fAOD->GetList()->FindObject(AliAODMCParticle::StdBranchName());
      if (!arrayMC) {
	AliFatal("Error: MC particles branch not found!\n");
      }
      Int_t nMC = arrayMC->GetEntries();
      for (Int_t iMC = 0; iMC < nMC; iMC++)
	{
	  AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(iMC);
	  if(!partMC->Charge()) continue;//Skip neutrals
	  //if(partMC->Eta() > fTrackCuts->GetEtaMin() && partMC->Eta() < fTrackCuts->GetEtaMax()){//charged hadron are filled inside the eta acceptance
	  //Printf("%f     %f-%f",partMC->Eta(),fTrackCuts->GetEtaMin(),fTrackCuts->GetEtaMax());
	  if(partMC->Eta() < fTrackCuts->GetEtaMin() || partMC->Eta() > fTrackCuts->GetEtaMax())continue;//ETA CUT ON GENERATED!!!!!!!!!!!!!!!!!!!!!!!!!!
	  fHistMan->GetPtHistogram(kHistPtGen)->Fill(partMC->Pt(),partMC->IsPhysicalPrimary());
	  
	  //rapidity cut
	  if(TMath::Abs(partMC->Y())   > fTrackCuts->GetY()  ) continue;	    
	  // check for true PID + and fill P_t histos 
	  Int_t charge = partMC->Charge() > 0 ? kChPos : kChNeg ;
	  Int_t id = fPID->GetParticleSpecie(partMC);
	  if(id != kSpUndefined) {
	    fHistMan->GetHistogram2D(kHistPtGenTruePrimary,id,charge)->Fill(partMC->Pt(),partMC->IsPhysicalPrimary());
	  }
	}
    }
  
  Double_t mass[3]={1.39570000000000000e-01,4.93676999999999977e-01,9.38271999999999995e-01};//FIXME masses to be taken from AliHelperPID
  //main loop on tracks
  for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++) {
    AliAODTrack* track = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTracks));
    if(!track) AliFatal("Not a standard AOD");
    if (!fTrackCuts->IsSelected(track,kTRUE)) continue;
    
    fPID->FillQAHistos(fHistMan, track, fTrackCuts);
    
    //calculate DCA for AOD track
    Double_t dca=track->DCA();
    if(dca==-999.){// track->DCA() does not work in old AOD production
      Double_t d[2], covd[3];
      AliAODTrack* track_clone=(AliAODTrack*)track->Clone("track_clone"); // need to clone because PropagateToDCA updates the track parameters
      Bool_t isDCA = track_clone->PropagateToDCA(fAOD->GetPrimaryVertex(),fAOD->GetMagneticField(),9999.,d,covd);
      delete track_clone;
      if(!isDCA)d[0]=-999.;
      dca=d[0];
    }
    fHistMan->GetPtHistogram(kHistPtRec)->Fill(track->Pt(),dca);  // PT histo
    
    // get identity and charge
    Int_t idRec  = fPID->GetParticleSpecie(fHistMan,track, fTrackCuts);
    
    Int_t charge = track->Charge() > 0 ? kChPos : kChNeg;
    
    // Fill histograms, only if inside y and nsigma acceptance
    if(idRec != kSpUndefined){
      if(fTrackCuts->CheckYCut (mass[idRec]))fHistMan->GetHistogram2D(kHistPtRecSigma,idRec,charge)->Fill(track->Pt(),dca);
    }//can't put a continue because we still have to fill allcharged primaries, done later
    
    /* MC Part */
    if (arrayMC) {
      AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(TMath::Abs(track->GetLabel()));
      if (!partMC) { 
	AliError("Cannot get MC particle");
	continue; 
      }
      // Check if it is primary, secondary from material or secondary from weak decay
      Bool_t isPrimary           = partMC->IsPhysicalPrimary();
      Bool_t isSecondaryMaterial = kFALSE; 
      Bool_t isSecondaryWeak     = kFALSE; 
      if(!isPrimary) {
	Int_t mfl=-999,codemoth=-999;
	Int_t indexMoth=partMC->GetMother(); // FIXME ignore fakes? TO BE CHECKED, on ESD is GetFirstMother()
	if(indexMoth>=0){//is not fake
	  AliAODMCParticle* moth = (AliAODMCParticle*) arrayMC->At(indexMoth);
	  codemoth = TMath::Abs(moth->GetPdgCode());
	  mfl = Int_t (codemoth/ TMath::Power(10, Int_t(TMath::Log10(codemoth))));
	}
	//Int_t uniqueID = partMC->GetUniqueID();
	//cout<<"uniqueID: "<<partMC->GetUniqueID()<<"       "<<kPDecay<<endl;
	//cout<<"status: "<<partMC->GetStatus()<<"       "<<kPDecay<<endl;
	// if(uniqueID == kPDecay)Printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
	if(mfl==3) isSecondaryWeak     = kTRUE; // add if(partMC->GetStatus() & kPDecay)? FIXME
	else       isSecondaryMaterial = kTRUE;
      }
      
      if (isPrimary)fHistMan->GetPtHistogram(kHistPtRecPrimary)->Fill(track->Pt(),dca);  // PT histo of primaries
      
      //nsigma cut (reconstructed nsigma)
      if(idRec == kSpUndefined) continue;
      
      // rapidity cut (reconstructed pt and identity)
      if(!fTrackCuts->CheckYCut (mass[idRec])) continue;
      
      // Get true ID
      Int_t idGen     = fPID->GetParticleSpecie(partMC);
      //if(TMath::Abs(partMC->Y())   > fTrackCuts->GetY()  ) continue;	    // FIXME: do we need a rapidity cut on the generated?
      // Fill histograms for primaries
      
      if (idRec == idGen) fHistMan->GetHistogram2D(kHistPtRecTrue,  idGen, charge)->Fill(track->Pt(),dca); 
      
      if (isPrimary) {
	fHistMan                    ->GetHistogram2D(kHistPtRecSigmaPrimary, idRec, charge)->Fill(track->Pt(),dca); 
	if(idGen != kSpUndefined) {
	  fHistMan                    ->GetHistogram2D(kHistPtRecPrimary,      idGen, charge)->Fill(track->Pt(),dca);
	  if (idRec == idGen) fHistMan->GetHistogram2D(kHistPtRecTruePrimary,  idGen, charge)->Fill(track->Pt(),dca); 
	}
      }
      //25th Apr - Muons are added to Pions -- FIXME
      if ( partMC->PdgCode() == 13 && idRec == kSpPion) { 
	fHistMan->GetPtHistogram(kHistPtRecTrueMuonPlus)->Fill(track->Pt(),dca); 
	if(isPrimary)
	  fHistMan->GetPtHistogram(kHistPtRecTruePrimaryMuonPlus)->Fill(track->Pt(),dca); 
      }
      if ( partMC->PdgCode() == -13 && idRec == kSpPion) { 
	fHistMan->GetPtHistogram(kHistPtRecTrueMuonMinus)->Fill(track->Pt(),dca); 
	if (isPrimary) {
	  fHistMan->GetPtHistogram(kHistPtRecTruePrimaryMuonMinus)->Fill(track->Pt(),dca); 
	}
      }
      
      ///..... END FIXME
      
      // Fill secondaries
      if(isSecondaryWeak    )  fHistMan->GetHistogram2D(kHistPtRecSigmaSecondaryWeakDecay, idRec, charge)->Fill(track->Pt(),dca);
      if(isSecondaryMaterial)  fHistMan->GetHistogram2D(kHistPtRecSigmaSecondaryMaterial , idRec, charge)->Fill(track->Pt(),dca);
      
    }//end if(arrayMC)
  } // end loop on tracks
  
  PostData(1, fHistMan  );
  PostData(2, fEventCuts);
  PostData(3, fTrackCuts);
  PostData(4, fPID      );
}

//_________________________________________________________________
void   AliAnalysisTaskSpectraAOD::Terminate(Option_t *)
{
  // Terminate
}
 AliAnalysisTaskSpectraAOD.cxx:1
 AliAnalysisTaskSpectraAOD.cxx:2
 AliAnalysisTaskSpectraAOD.cxx:3
 AliAnalysisTaskSpectraAOD.cxx:4
 AliAnalysisTaskSpectraAOD.cxx:5
 AliAnalysisTaskSpectraAOD.cxx:6
 AliAnalysisTaskSpectraAOD.cxx:7
 AliAnalysisTaskSpectraAOD.cxx:8
 AliAnalysisTaskSpectraAOD.cxx:9
 AliAnalysisTaskSpectraAOD.cxx:10
 AliAnalysisTaskSpectraAOD.cxx:11
 AliAnalysisTaskSpectraAOD.cxx:12
 AliAnalysisTaskSpectraAOD.cxx:13
 AliAnalysisTaskSpectraAOD.cxx:14
 AliAnalysisTaskSpectraAOD.cxx:15
 AliAnalysisTaskSpectraAOD.cxx:16
 AliAnalysisTaskSpectraAOD.cxx:17
 AliAnalysisTaskSpectraAOD.cxx:18
 AliAnalysisTaskSpectraAOD.cxx:19
 AliAnalysisTaskSpectraAOD.cxx:20
 AliAnalysisTaskSpectraAOD.cxx:21
 AliAnalysisTaskSpectraAOD.cxx:22
 AliAnalysisTaskSpectraAOD.cxx:23
 AliAnalysisTaskSpectraAOD.cxx:24
 AliAnalysisTaskSpectraAOD.cxx:25
 AliAnalysisTaskSpectraAOD.cxx:26
 AliAnalysisTaskSpectraAOD.cxx:27
 AliAnalysisTaskSpectraAOD.cxx:28
 AliAnalysisTaskSpectraAOD.cxx:29
 AliAnalysisTaskSpectraAOD.cxx:30
 AliAnalysisTaskSpectraAOD.cxx:31
 AliAnalysisTaskSpectraAOD.cxx:32
 AliAnalysisTaskSpectraAOD.cxx:33
 AliAnalysisTaskSpectraAOD.cxx:34
 AliAnalysisTaskSpectraAOD.cxx:35
 AliAnalysisTaskSpectraAOD.cxx:36
 AliAnalysisTaskSpectraAOD.cxx:37
 AliAnalysisTaskSpectraAOD.cxx:38
 AliAnalysisTaskSpectraAOD.cxx:39
 AliAnalysisTaskSpectraAOD.cxx:40
 AliAnalysisTaskSpectraAOD.cxx:41
 AliAnalysisTaskSpectraAOD.cxx:42
 AliAnalysisTaskSpectraAOD.cxx:43
 AliAnalysisTaskSpectraAOD.cxx:44
 AliAnalysisTaskSpectraAOD.cxx:45
 AliAnalysisTaskSpectraAOD.cxx:46
 AliAnalysisTaskSpectraAOD.cxx:47
 AliAnalysisTaskSpectraAOD.cxx:48
 AliAnalysisTaskSpectraAOD.cxx:49
 AliAnalysisTaskSpectraAOD.cxx:50
 AliAnalysisTaskSpectraAOD.cxx:51
 AliAnalysisTaskSpectraAOD.cxx:52
 AliAnalysisTaskSpectraAOD.cxx:53
 AliAnalysisTaskSpectraAOD.cxx:54
 AliAnalysisTaskSpectraAOD.cxx:55
 AliAnalysisTaskSpectraAOD.cxx:56
 AliAnalysisTaskSpectraAOD.cxx:57
 AliAnalysisTaskSpectraAOD.cxx:58
 AliAnalysisTaskSpectraAOD.cxx:59
 AliAnalysisTaskSpectraAOD.cxx:60
 AliAnalysisTaskSpectraAOD.cxx:61
 AliAnalysisTaskSpectraAOD.cxx:62
 AliAnalysisTaskSpectraAOD.cxx:63
 AliAnalysisTaskSpectraAOD.cxx:64
 AliAnalysisTaskSpectraAOD.cxx:65
 AliAnalysisTaskSpectraAOD.cxx:66
 AliAnalysisTaskSpectraAOD.cxx:67
 AliAnalysisTaskSpectraAOD.cxx:68
 AliAnalysisTaskSpectraAOD.cxx:69
 AliAnalysisTaskSpectraAOD.cxx:70
 AliAnalysisTaskSpectraAOD.cxx:71
 AliAnalysisTaskSpectraAOD.cxx:72
 AliAnalysisTaskSpectraAOD.cxx:73
 AliAnalysisTaskSpectraAOD.cxx:74
 AliAnalysisTaskSpectraAOD.cxx:75
 AliAnalysisTaskSpectraAOD.cxx:76
 AliAnalysisTaskSpectraAOD.cxx:77
 AliAnalysisTaskSpectraAOD.cxx:78
 AliAnalysisTaskSpectraAOD.cxx:79
 AliAnalysisTaskSpectraAOD.cxx:80
 AliAnalysisTaskSpectraAOD.cxx:81
 AliAnalysisTaskSpectraAOD.cxx:82
 AliAnalysisTaskSpectraAOD.cxx:83
 AliAnalysisTaskSpectraAOD.cxx:84
 AliAnalysisTaskSpectraAOD.cxx:85
 AliAnalysisTaskSpectraAOD.cxx:86
 AliAnalysisTaskSpectraAOD.cxx:87
 AliAnalysisTaskSpectraAOD.cxx:88
 AliAnalysisTaskSpectraAOD.cxx:89
 AliAnalysisTaskSpectraAOD.cxx:90
 AliAnalysisTaskSpectraAOD.cxx:91
 AliAnalysisTaskSpectraAOD.cxx:92
 AliAnalysisTaskSpectraAOD.cxx:93
 AliAnalysisTaskSpectraAOD.cxx:94
 AliAnalysisTaskSpectraAOD.cxx:95
 AliAnalysisTaskSpectraAOD.cxx:96
 AliAnalysisTaskSpectraAOD.cxx:97
 AliAnalysisTaskSpectraAOD.cxx:98
 AliAnalysisTaskSpectraAOD.cxx:99
 AliAnalysisTaskSpectraAOD.cxx:100
 AliAnalysisTaskSpectraAOD.cxx:101
 AliAnalysisTaskSpectraAOD.cxx:102
 AliAnalysisTaskSpectraAOD.cxx:103
 AliAnalysisTaskSpectraAOD.cxx:104
 AliAnalysisTaskSpectraAOD.cxx:105
 AliAnalysisTaskSpectraAOD.cxx:106
 AliAnalysisTaskSpectraAOD.cxx:107
 AliAnalysisTaskSpectraAOD.cxx:108
 AliAnalysisTaskSpectraAOD.cxx:109
 AliAnalysisTaskSpectraAOD.cxx:110
 AliAnalysisTaskSpectraAOD.cxx:111
 AliAnalysisTaskSpectraAOD.cxx:112
 AliAnalysisTaskSpectraAOD.cxx:113
 AliAnalysisTaskSpectraAOD.cxx:114
 AliAnalysisTaskSpectraAOD.cxx:115
 AliAnalysisTaskSpectraAOD.cxx:116
 AliAnalysisTaskSpectraAOD.cxx:117
 AliAnalysisTaskSpectraAOD.cxx:118
 AliAnalysisTaskSpectraAOD.cxx:119
 AliAnalysisTaskSpectraAOD.cxx:120
 AliAnalysisTaskSpectraAOD.cxx:121
 AliAnalysisTaskSpectraAOD.cxx:122
 AliAnalysisTaskSpectraAOD.cxx:123
 AliAnalysisTaskSpectraAOD.cxx:124
 AliAnalysisTaskSpectraAOD.cxx:125
 AliAnalysisTaskSpectraAOD.cxx:126
 AliAnalysisTaskSpectraAOD.cxx:127
 AliAnalysisTaskSpectraAOD.cxx:128
 AliAnalysisTaskSpectraAOD.cxx:129
 AliAnalysisTaskSpectraAOD.cxx:130
 AliAnalysisTaskSpectraAOD.cxx:131
 AliAnalysisTaskSpectraAOD.cxx:132
 AliAnalysisTaskSpectraAOD.cxx:133
 AliAnalysisTaskSpectraAOD.cxx:134
 AliAnalysisTaskSpectraAOD.cxx:135
 AliAnalysisTaskSpectraAOD.cxx:136
 AliAnalysisTaskSpectraAOD.cxx:137
 AliAnalysisTaskSpectraAOD.cxx:138
 AliAnalysisTaskSpectraAOD.cxx:139
 AliAnalysisTaskSpectraAOD.cxx:140
 AliAnalysisTaskSpectraAOD.cxx:141
 AliAnalysisTaskSpectraAOD.cxx:142
 AliAnalysisTaskSpectraAOD.cxx:143
 AliAnalysisTaskSpectraAOD.cxx:144
 AliAnalysisTaskSpectraAOD.cxx:145
 AliAnalysisTaskSpectraAOD.cxx:146
 AliAnalysisTaskSpectraAOD.cxx:147
 AliAnalysisTaskSpectraAOD.cxx:148
 AliAnalysisTaskSpectraAOD.cxx:149
 AliAnalysisTaskSpectraAOD.cxx:150
 AliAnalysisTaskSpectraAOD.cxx:151
 AliAnalysisTaskSpectraAOD.cxx:152
 AliAnalysisTaskSpectraAOD.cxx:153
 AliAnalysisTaskSpectraAOD.cxx:154
 AliAnalysisTaskSpectraAOD.cxx:155
 AliAnalysisTaskSpectraAOD.cxx:156
 AliAnalysisTaskSpectraAOD.cxx:157
 AliAnalysisTaskSpectraAOD.cxx:158
 AliAnalysisTaskSpectraAOD.cxx:159
 AliAnalysisTaskSpectraAOD.cxx:160
 AliAnalysisTaskSpectraAOD.cxx:161
 AliAnalysisTaskSpectraAOD.cxx:162
 AliAnalysisTaskSpectraAOD.cxx:163
 AliAnalysisTaskSpectraAOD.cxx:164
 AliAnalysisTaskSpectraAOD.cxx:165
 AliAnalysisTaskSpectraAOD.cxx:166
 AliAnalysisTaskSpectraAOD.cxx:167
 AliAnalysisTaskSpectraAOD.cxx:168
 AliAnalysisTaskSpectraAOD.cxx:169
 AliAnalysisTaskSpectraAOD.cxx:170
 AliAnalysisTaskSpectraAOD.cxx:171
 AliAnalysisTaskSpectraAOD.cxx:172
 AliAnalysisTaskSpectraAOD.cxx:173
 AliAnalysisTaskSpectraAOD.cxx:174
 AliAnalysisTaskSpectraAOD.cxx:175
 AliAnalysisTaskSpectraAOD.cxx:176
 AliAnalysisTaskSpectraAOD.cxx:177
 AliAnalysisTaskSpectraAOD.cxx:178
 AliAnalysisTaskSpectraAOD.cxx:179
 AliAnalysisTaskSpectraAOD.cxx:180
 AliAnalysisTaskSpectraAOD.cxx:181
 AliAnalysisTaskSpectraAOD.cxx:182
 AliAnalysisTaskSpectraAOD.cxx:183
 AliAnalysisTaskSpectraAOD.cxx:184
 AliAnalysisTaskSpectraAOD.cxx:185
 AliAnalysisTaskSpectraAOD.cxx:186
 AliAnalysisTaskSpectraAOD.cxx:187
 AliAnalysisTaskSpectraAOD.cxx:188
 AliAnalysisTaskSpectraAOD.cxx:189
 AliAnalysisTaskSpectraAOD.cxx:190
 AliAnalysisTaskSpectraAOD.cxx:191
 AliAnalysisTaskSpectraAOD.cxx:192
 AliAnalysisTaskSpectraAOD.cxx:193
 AliAnalysisTaskSpectraAOD.cxx:194
 AliAnalysisTaskSpectraAOD.cxx:195
 AliAnalysisTaskSpectraAOD.cxx:196
 AliAnalysisTaskSpectraAOD.cxx:197
 AliAnalysisTaskSpectraAOD.cxx:198
 AliAnalysisTaskSpectraAOD.cxx:199
 AliAnalysisTaskSpectraAOD.cxx:200
 AliAnalysisTaskSpectraAOD.cxx:201
 AliAnalysisTaskSpectraAOD.cxx:202
 AliAnalysisTaskSpectraAOD.cxx:203
 AliAnalysisTaskSpectraAOD.cxx:204
 AliAnalysisTaskSpectraAOD.cxx:205
 AliAnalysisTaskSpectraAOD.cxx:206
 AliAnalysisTaskSpectraAOD.cxx:207
 AliAnalysisTaskSpectraAOD.cxx:208
 AliAnalysisTaskSpectraAOD.cxx:209
 AliAnalysisTaskSpectraAOD.cxx:210
 AliAnalysisTaskSpectraAOD.cxx:211
 AliAnalysisTaskSpectraAOD.cxx:212
 AliAnalysisTaskSpectraAOD.cxx:213
 AliAnalysisTaskSpectraAOD.cxx:214
 AliAnalysisTaskSpectraAOD.cxx:215
 AliAnalysisTaskSpectraAOD.cxx:216
 AliAnalysisTaskSpectraAOD.cxx:217
 AliAnalysisTaskSpectraAOD.cxx:218
 AliAnalysisTaskSpectraAOD.cxx:219
 AliAnalysisTaskSpectraAOD.cxx:220
 AliAnalysisTaskSpectraAOD.cxx:221
 AliAnalysisTaskSpectraAOD.cxx:222
 AliAnalysisTaskSpectraAOD.cxx:223
 AliAnalysisTaskSpectraAOD.cxx:224
 AliAnalysisTaskSpectraAOD.cxx:225
 AliAnalysisTaskSpectraAOD.cxx:226
 AliAnalysisTaskSpectraAOD.cxx:227
 AliAnalysisTaskSpectraAOD.cxx:228
 AliAnalysisTaskSpectraAOD.cxx:229
 AliAnalysisTaskSpectraAOD.cxx:230
 AliAnalysisTaskSpectraAOD.cxx:231
 AliAnalysisTaskSpectraAOD.cxx:232
 AliAnalysisTaskSpectraAOD.cxx:233
 AliAnalysisTaskSpectraAOD.cxx:234
 AliAnalysisTaskSpectraAOD.cxx:235
 AliAnalysisTaskSpectraAOD.cxx:236
 AliAnalysisTaskSpectraAOD.cxx:237
 AliAnalysisTaskSpectraAOD.cxx:238
 AliAnalysisTaskSpectraAOD.cxx:239
 AliAnalysisTaskSpectraAOD.cxx:240
 AliAnalysisTaskSpectraAOD.cxx:241
 AliAnalysisTaskSpectraAOD.cxx:242
 AliAnalysisTaskSpectraAOD.cxx:243
 AliAnalysisTaskSpectraAOD.cxx:244
 AliAnalysisTaskSpectraAOD.cxx:245
 AliAnalysisTaskSpectraAOD.cxx:246
 AliAnalysisTaskSpectraAOD.cxx:247
 AliAnalysisTaskSpectraAOD.cxx:248
 AliAnalysisTaskSpectraAOD.cxx:249
 AliAnalysisTaskSpectraAOD.cxx:250