ROOT logo

#include "AliAnalysisTaskFirstPhysics.h"

#include "TH1D.h"
#include "TH2D.h"
#include "TList.h"
#include "TString.h"

#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"
#include "AliESDtrackCuts.h"
#include "AliESDEvent.h"
#include "AliESDHeader.h"
#include "AliMCEvent.h"
#include "AliMultiplicity.h"

#include "AliGenEventHeader.h"
#include "AliGenPythiaEventHeader.h"
#include "AliGenDPMjetEventHeader.h"
#include "AliStack.h"

ClassImp(AliAnalysisTaskFirstPhysics)

//________________________________________________________________________
AliAnalysisTaskFirstPhysics::AliAnalysisTaskFirstPhysics(const char *name) :
  AliAnalysisTaskSE(name),
  fESD(0),
  fMCEvent(0),
  fOutput(0),
  fbReadMC(0),
  fMCProcessType(kProcND),
  fTrigger(0),
  fCutTrackPtMin(0.15),
  fCutTrackPtMax(100),
  fCutEta(0.8),
  fCutVertexZ(10)
{
  DefineOutput(1, TList::Class());
  for (Int_t i = 0; i < knTrackCuts; i ++) {
    fTrackCuts[i] = 0;
  }
}

//________________________________________________________________________
AliAnalysisTaskFirstPhysics::~AliAnalysisTaskFirstPhysics()
{
  // Destructor. Clean-up the output list, but not the histograms that are put inside
  // (the list is owner and will clean-up these histograms). Protect in PROOF case.
  if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
    delete fOutput;
  }
  for (Int_t i = 0; i < knTrackCuts; i ++) {
    delete fTrackCuts[i];
    fTrackCuts[i] = 0;
  }
  if (fTrigger) {
    delete fTrigger;
  }
}

//________________________________________________________________________
void AliAnalysisTaskFirstPhysics::PrepareOutputList()
{
  if (fOutput) {
    AliError("fOutput already initialised.");
    return;
  }
  fOutput = new TList();
  fOutput->SetOwner();
  TH1::SetDefaultSumw2(kTRUE);
  if (fTrigger) {
    AliError("fTrigger is already initialised.");
    return;
  }
  fTrigger = new AliTriggerAnalysis;
}

//________________________________________________________________________
void AliAnalysisTaskFirstPhysics::PrepareDefaultTrackCuts()
{
  // quality cut on ITS+TPC tracks
  fTrackCuts[kTrackCutQGlo] = new AliESDtrackCuts();
  // TPC
  fTrackCuts[kTrackCutQGlo]->SetMinNClustersTPC(70);
  fTrackCuts[kTrackCutQGlo]->SetMaxChi2PerClusterTPC(4);
  fTrackCuts[kTrackCutQGlo]->SetAcceptKinkDaughters(kFALSE);
  fTrackCuts[kTrackCutQGlo]->SetRequireTPCRefit(kTRUE);
  // ITS
  fTrackCuts[kTrackCutQGlo]->SetRequireITSRefit(kTRUE);
  fTrackCuts[kTrackCutQGlo]->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
  fTrackCuts[kTrackCutQGlo]->SetEtaRange(-fCutEta, fCutEta);
  fTrackCuts[kTrackCutQGlo]->SetPtRange(fCutTrackPtMin, fCutTrackPtMax);
  // quality cut on ITS_SA tracks (complementary to ITS+TPC)
  fTrackCuts[kTrackCutQITS] = new AliESDtrackCuts();
  fTrackCuts[kTrackCutQITS]->SetRequireITSRefit(kTRUE);
  fTrackCuts[kTrackCutQITS]->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
  fTrackCuts[kTrackCutQITS]->SetEtaRange(-fCutEta, fCutEta);
  // primary selection for tracks with SPD hits
  fTrackCuts[kTrackCutDCAwSPD] = new AliESDtrackCuts();
  fTrackCuts[kTrackCutDCAwSPD]->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
  fTrackCuts[kTrackCutDCAwSPD]->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
  fTrackCuts[kTrackCutDCAwSPD]->SetMaxDCAToVertexZ(0.5);
  fTrackCuts[kTrackCutDCAwSPD]->SetEtaRange(-fCutEta, fCutEta);
  // primary selection for tracks w/o SPD hits
  fTrackCuts[kTrackCutDCAwoSPD] = new AliESDtrackCuts();
  fTrackCuts[kTrackCutDCAwoSPD]->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
  fTrackCuts[kTrackCutDCAwoSPD]->SetMaxDCAToVertexXYPtDep("1.5*(0.0182+0.0350/pt^1.01)");
  fTrackCuts[kTrackCutDCAwoSPD]->SetMaxDCAToVertexZ(0.5);
  fTrackCuts[kTrackCutDCAwoSPD]->SetEtaRange(-fCutEta, fCutEta);

  // tracks without SPD hits
  fTrackCuts[kTrackCutNoSPD] = new AliESDtrackCuts();
  fTrackCuts[kTrackCutNoSPD]->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
  // tracks from TPC SA
  fTrackCuts[kTrackCutTPConly] = new AliESDtrackCuts();
  fTrackCuts[kTrackCutTPConly]->SetRequireTPCStandAlone(kTRUE);
}

//________________________________________________________________________
void AliAnalysisTaskFirstPhysics::UserCreateOutputObjects()
{
  PrepareOutputList();
  // Define cuts
  PrepareDefaultTrackCuts();

  // create more histograms here using UserHisto1d and UserHisto2d

  PostData(1, fOutput); // Post data for ALL output slots >0 here, to get at least an empty histogram
}

//________________________________________________________________________
bool AliAnalysisTaskFirstPhysics::GetESDEvent()
{
  fESD = 0;
  // Get a pointer to the reconstructed event
  AliVEvent *event = InputEvent();
  if (!event) {
    AliError("ERROR: Could not retrieve event.");
    return false;
  }
  // try to access the ESD information
  AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
  if (!esd) {
    AliError("InputEvent() is not AliESDEvent.");
    return false;
  }
  fESD = esd;
  return true;
}

//________________________________________________________________________
bool AliAnalysisTaskFirstPhysics::CheckVertex()
{
  // check for good reconstructed vertex
  if (!(fESD->GetPrimaryVertex()->GetStatus()) ||
      !(fESD->GetPrimaryVertexSPD()->GetStatus())) {
    return false;
  }
  // if vertex is from spd vertexZ, require more stringent cut
  if (fESD->GetPrimaryVertex()->IsFromVertexerZ() &&
      (fESD->GetPrimaryVertex()->GetDispersion() > 0.02 ||
       fESD->GetPrimaryVertex()->GetZRes() > 0.25 )) {
    return false;
  }
  if (TMath::Abs(fESD->GetPrimaryVertex()->GetZ()) > fCutVertexZ) {
    return false;
  }
  return true;
}

//________________________________________________________________________
bool AliAnalysisTaskFirstPhysics::CheckVertexMC() {
  if (!fbReadMC) {
    return false;
  }
  if (TMath::Abs(fMCEvent->GetPrimaryVertex()->GetZ()) > fCutVertexZ) {
    return false;
  }
  return true;
}

//________________________________________________________________________
bool AliAnalysisTaskFirstPhysics::PrepareMCInfo()
{
  fbReadMC = true;
  fMCEvent = MCEvent();
  if (!fMCEvent) {
    fbReadMC = false;
  }
  if (fbReadMC) {
    AliDebug(4, TString::Format("MC particles: %d", fMCEvent->GetNumberOfTracks()));
    AliDebug(4, TString::Format("number of particles in the stack: %d", fMCEvent->Stack()->GetNtrack()));
    AliGenPythiaEventHeader* pythiaGenHeader = 0;
    AliGenDPMjetEventHeader* dpmHeader = 0;
    pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(fMCEvent->GenEventHeader());
    dpmHeader = dynamic_cast<AliGenDPMjetEventHeader*>(fMCEvent->GenEventHeader());
    // MC event classification
    Int_t iProcessType = 0;
    Int_t iSD1flag = 0, iSD2flag = 0, iDDflag = 0,
      iCDflag = 0, iELflag = 0, iNDflag = 0;
    if (pythiaGenHeader) {
      iProcessType = pythiaGenHeader->ProcessType();
      iSD1flag = 92;
      iSD2flag = 93;
      iDDflag = 94;
      iELflag = 91;
      iCDflag = -2;
      iNDflag = -1;
      AliDebug(5, TString::Format("Pythia event, %d type", iProcessType));
    } else if (dpmHeader) {
      iProcessType = dpmHeader->ProcessType();
      iSD1flag = 5;
      iSD2flag = 6;
      iDDflag = 7;
      iELflag = 2;
      iCDflag = 4;
      iNDflag = 1;
      AliDebug(5, TString::Format("Phojet event, %d type", iProcessType));
    } else {
      AliError("neither pythia nor phojet event");
    }
    if (iProcessType == iSD1flag) {
      fMCProcessType = kProcSD1;
    } else if (iProcessType == iSD2flag) {
      fMCProcessType = kProcSD2;
    } else if (iProcessType == iDDflag) {
      fMCProcessType = kProcDD;
    } else if (iProcessType == iELflag) {
      fMCProcessType = kProcEL;
    } else if (iProcessType == iCDflag) {
      fMCProcessType = kProcCD;
    } else if (iProcessType == iNDflag) {
      fMCProcessType = kProcND;
    } else {
      fMCProcessType = kProcIndef;
    }
  }
  return fbReadMC;
}

//________________________________________________________________________
void AliAnalysisTaskFirstPhysics::UserExec(Option_t *)
{
  if (!GetESDEvent()) {
    AliError("Unable to read the ESD");
    return;
  }
  if (!CheckVertex()) {
    return;
  }

  // custom code comes here

  PostData(1, fOutput);
}

//________________________________________________________________________
TH1D* AliAnalysisTaskFirstPhysics::UserHisto1d(const char *name, const char *title, const char *xlabel, Int_t nbinsx, Double_t xlow, Double_t xup)
{
  TH1D *hist =  new TH1D(name, title, nbinsx, xlow, xup);
  hist->GetXaxis()->SetTitle(xlabel);
  fOutput->Add(hist);
  return hist;
}

//________________________________________________________________________
TH2D* AliAnalysisTaskFirstPhysics::UserHisto2d(const char *name, const char *title, const char *xlabel, Int_t nbinsx, Double_t xlow, Double_t xup, const char *ylabel, Int_t nbinsy, Double_t ylow, Double_t yup)
{
  TH2D *hist =  new TH2D(name, title, nbinsx, xlow, xup, nbinsy, ylow, yup);
  hist->GetXaxis()->SetTitle(xlabel);
  hist->GetYaxis()->SetTitle(ylabel);
  fOutput->Add(hist);
  return hist;
}

//________________________________________________________________________
bool AliAnalysisTaskFirstPhysics::GetHisto1FromOutput(const char *name, TH1D *&h) const
{
  h = dynamic_cast<TH1D*> (fOutput->FindObject(name));
  if (!h) {
    AliError(TString::Format("Unable to load histogram from output: %s", name));
    return false;
  } else {
    return true;
  }
}

//________________________________________________________________________
bool AliAnalysisTaskFirstPhysics::GetHisto2FromOutput(const char *name, TH2D *&h) const
{
  h = dynamic_cast<TH2D*> (fOutput->FindObject(name));
  if (!h) {
    AliError(TString::Format("Unable to load histogram from output: %s", name));
    return false;
  } else {
    return true;
  }
}

//________________________________________________________________________
void AliAnalysisTaskFirstPhysics::Terminate(Option_t *)
{
  fOutput = dynamic_cast<TList*> (GetOutputData(1));
  if(!fOutput) {
    AliError("Could not retrieve TList fOutput.");
    return;
  }
}
 AliAnalysisTaskFirstPhysics.cxx:1
 AliAnalysisTaskFirstPhysics.cxx:2
 AliAnalysisTaskFirstPhysics.cxx:3
 AliAnalysisTaskFirstPhysics.cxx:4
 AliAnalysisTaskFirstPhysics.cxx:5
 AliAnalysisTaskFirstPhysics.cxx:6
 AliAnalysisTaskFirstPhysics.cxx:7
 AliAnalysisTaskFirstPhysics.cxx:8
 AliAnalysisTaskFirstPhysics.cxx:9
 AliAnalysisTaskFirstPhysics.cxx:10
 AliAnalysisTaskFirstPhysics.cxx:11
 AliAnalysisTaskFirstPhysics.cxx:12
 AliAnalysisTaskFirstPhysics.cxx:13
 AliAnalysisTaskFirstPhysics.cxx:14
 AliAnalysisTaskFirstPhysics.cxx:15
 AliAnalysisTaskFirstPhysics.cxx:16
 AliAnalysisTaskFirstPhysics.cxx:17
 AliAnalysisTaskFirstPhysics.cxx:18
 AliAnalysisTaskFirstPhysics.cxx:19
 AliAnalysisTaskFirstPhysics.cxx:20
 AliAnalysisTaskFirstPhysics.cxx:21
 AliAnalysisTaskFirstPhysics.cxx:22
 AliAnalysisTaskFirstPhysics.cxx:23
 AliAnalysisTaskFirstPhysics.cxx:24
 AliAnalysisTaskFirstPhysics.cxx:25
 AliAnalysisTaskFirstPhysics.cxx:26
 AliAnalysisTaskFirstPhysics.cxx:27
 AliAnalysisTaskFirstPhysics.cxx:28
 AliAnalysisTaskFirstPhysics.cxx:29
 AliAnalysisTaskFirstPhysics.cxx:30
 AliAnalysisTaskFirstPhysics.cxx:31
 AliAnalysisTaskFirstPhysics.cxx:32
 AliAnalysisTaskFirstPhysics.cxx:33
 AliAnalysisTaskFirstPhysics.cxx:34
 AliAnalysisTaskFirstPhysics.cxx:35
 AliAnalysisTaskFirstPhysics.cxx:36
 AliAnalysisTaskFirstPhysics.cxx:37
 AliAnalysisTaskFirstPhysics.cxx:38
 AliAnalysisTaskFirstPhysics.cxx:39
 AliAnalysisTaskFirstPhysics.cxx:40
 AliAnalysisTaskFirstPhysics.cxx:41
 AliAnalysisTaskFirstPhysics.cxx:42
 AliAnalysisTaskFirstPhysics.cxx:43
 AliAnalysisTaskFirstPhysics.cxx:44
 AliAnalysisTaskFirstPhysics.cxx:45
 AliAnalysisTaskFirstPhysics.cxx:46
 AliAnalysisTaskFirstPhysics.cxx:47
 AliAnalysisTaskFirstPhysics.cxx:48
 AliAnalysisTaskFirstPhysics.cxx:49
 AliAnalysisTaskFirstPhysics.cxx:50
 AliAnalysisTaskFirstPhysics.cxx:51
 AliAnalysisTaskFirstPhysics.cxx:52
 AliAnalysisTaskFirstPhysics.cxx:53
 AliAnalysisTaskFirstPhysics.cxx:54
 AliAnalysisTaskFirstPhysics.cxx:55
 AliAnalysisTaskFirstPhysics.cxx:56
 AliAnalysisTaskFirstPhysics.cxx:57
 AliAnalysisTaskFirstPhysics.cxx:58
 AliAnalysisTaskFirstPhysics.cxx:59
 AliAnalysisTaskFirstPhysics.cxx:60
 AliAnalysisTaskFirstPhysics.cxx:61
 AliAnalysisTaskFirstPhysics.cxx:62
 AliAnalysisTaskFirstPhysics.cxx:63
 AliAnalysisTaskFirstPhysics.cxx:64
 AliAnalysisTaskFirstPhysics.cxx:65
 AliAnalysisTaskFirstPhysics.cxx:66
 AliAnalysisTaskFirstPhysics.cxx:67
 AliAnalysisTaskFirstPhysics.cxx:68
 AliAnalysisTaskFirstPhysics.cxx:69
 AliAnalysisTaskFirstPhysics.cxx:70
 AliAnalysisTaskFirstPhysics.cxx:71
 AliAnalysisTaskFirstPhysics.cxx:72
 AliAnalysisTaskFirstPhysics.cxx:73
 AliAnalysisTaskFirstPhysics.cxx:74
 AliAnalysisTaskFirstPhysics.cxx:75
 AliAnalysisTaskFirstPhysics.cxx:76
 AliAnalysisTaskFirstPhysics.cxx:77
 AliAnalysisTaskFirstPhysics.cxx:78
 AliAnalysisTaskFirstPhysics.cxx:79
 AliAnalysisTaskFirstPhysics.cxx:80
 AliAnalysisTaskFirstPhysics.cxx:81
 AliAnalysisTaskFirstPhysics.cxx:82
 AliAnalysisTaskFirstPhysics.cxx:83
 AliAnalysisTaskFirstPhysics.cxx:84
 AliAnalysisTaskFirstPhysics.cxx:85
 AliAnalysisTaskFirstPhysics.cxx:86
 AliAnalysisTaskFirstPhysics.cxx:87
 AliAnalysisTaskFirstPhysics.cxx:88
 AliAnalysisTaskFirstPhysics.cxx:89
 AliAnalysisTaskFirstPhysics.cxx:90
 AliAnalysisTaskFirstPhysics.cxx:91
 AliAnalysisTaskFirstPhysics.cxx:92
 AliAnalysisTaskFirstPhysics.cxx:93
 AliAnalysisTaskFirstPhysics.cxx:94
 AliAnalysisTaskFirstPhysics.cxx:95
 AliAnalysisTaskFirstPhysics.cxx:96
 AliAnalysisTaskFirstPhysics.cxx:97
 AliAnalysisTaskFirstPhysics.cxx:98
 AliAnalysisTaskFirstPhysics.cxx:99
 AliAnalysisTaskFirstPhysics.cxx:100
 AliAnalysisTaskFirstPhysics.cxx:101
 AliAnalysisTaskFirstPhysics.cxx:102
 AliAnalysisTaskFirstPhysics.cxx:103
 AliAnalysisTaskFirstPhysics.cxx:104
 AliAnalysisTaskFirstPhysics.cxx:105
 AliAnalysisTaskFirstPhysics.cxx:106
 AliAnalysisTaskFirstPhysics.cxx:107
 AliAnalysisTaskFirstPhysics.cxx:108
 AliAnalysisTaskFirstPhysics.cxx:109
 AliAnalysisTaskFirstPhysics.cxx:110
 AliAnalysisTaskFirstPhysics.cxx:111
 AliAnalysisTaskFirstPhysics.cxx:112
 AliAnalysisTaskFirstPhysics.cxx:113
 AliAnalysisTaskFirstPhysics.cxx:114
 AliAnalysisTaskFirstPhysics.cxx:115
 AliAnalysisTaskFirstPhysics.cxx:116
 AliAnalysisTaskFirstPhysics.cxx:117
 AliAnalysisTaskFirstPhysics.cxx:118
 AliAnalysisTaskFirstPhysics.cxx:119
 AliAnalysisTaskFirstPhysics.cxx:120
 AliAnalysisTaskFirstPhysics.cxx:121
 AliAnalysisTaskFirstPhysics.cxx:122
 AliAnalysisTaskFirstPhysics.cxx:123
 AliAnalysisTaskFirstPhysics.cxx:124
 AliAnalysisTaskFirstPhysics.cxx:125
 AliAnalysisTaskFirstPhysics.cxx:126
 AliAnalysisTaskFirstPhysics.cxx:127
 AliAnalysisTaskFirstPhysics.cxx:128
 AliAnalysisTaskFirstPhysics.cxx:129
 AliAnalysisTaskFirstPhysics.cxx:130
 AliAnalysisTaskFirstPhysics.cxx:131
 AliAnalysisTaskFirstPhysics.cxx:132
 AliAnalysisTaskFirstPhysics.cxx:133
 AliAnalysisTaskFirstPhysics.cxx:134
 AliAnalysisTaskFirstPhysics.cxx:135
 AliAnalysisTaskFirstPhysics.cxx:136
 AliAnalysisTaskFirstPhysics.cxx:137
 AliAnalysisTaskFirstPhysics.cxx:138
 AliAnalysisTaskFirstPhysics.cxx:139
 AliAnalysisTaskFirstPhysics.cxx:140
 AliAnalysisTaskFirstPhysics.cxx:141
 AliAnalysisTaskFirstPhysics.cxx:142
 AliAnalysisTaskFirstPhysics.cxx:143
 AliAnalysisTaskFirstPhysics.cxx:144
 AliAnalysisTaskFirstPhysics.cxx:145
 AliAnalysisTaskFirstPhysics.cxx:146
 AliAnalysisTaskFirstPhysics.cxx:147
 AliAnalysisTaskFirstPhysics.cxx:148
 AliAnalysisTaskFirstPhysics.cxx:149
 AliAnalysisTaskFirstPhysics.cxx:150
 AliAnalysisTaskFirstPhysics.cxx:151
 AliAnalysisTaskFirstPhysics.cxx:152
 AliAnalysisTaskFirstPhysics.cxx:153
 AliAnalysisTaskFirstPhysics.cxx:154
 AliAnalysisTaskFirstPhysics.cxx:155
 AliAnalysisTaskFirstPhysics.cxx:156
 AliAnalysisTaskFirstPhysics.cxx:157
 AliAnalysisTaskFirstPhysics.cxx:158
 AliAnalysisTaskFirstPhysics.cxx:159
 AliAnalysisTaskFirstPhysics.cxx:160
 AliAnalysisTaskFirstPhysics.cxx:161
 AliAnalysisTaskFirstPhysics.cxx:162
 AliAnalysisTaskFirstPhysics.cxx:163
 AliAnalysisTaskFirstPhysics.cxx:164
 AliAnalysisTaskFirstPhysics.cxx:165
 AliAnalysisTaskFirstPhysics.cxx:166
 AliAnalysisTaskFirstPhysics.cxx:167
 AliAnalysisTaskFirstPhysics.cxx:168
 AliAnalysisTaskFirstPhysics.cxx:169
 AliAnalysisTaskFirstPhysics.cxx:170
 AliAnalysisTaskFirstPhysics.cxx:171
 AliAnalysisTaskFirstPhysics.cxx:172
 AliAnalysisTaskFirstPhysics.cxx:173
 AliAnalysisTaskFirstPhysics.cxx:174
 AliAnalysisTaskFirstPhysics.cxx:175
 AliAnalysisTaskFirstPhysics.cxx:176
 AliAnalysisTaskFirstPhysics.cxx:177
 AliAnalysisTaskFirstPhysics.cxx:178
 AliAnalysisTaskFirstPhysics.cxx:179
 AliAnalysisTaskFirstPhysics.cxx:180
 AliAnalysisTaskFirstPhysics.cxx:181
 AliAnalysisTaskFirstPhysics.cxx:182
 AliAnalysisTaskFirstPhysics.cxx:183
 AliAnalysisTaskFirstPhysics.cxx:184
 AliAnalysisTaskFirstPhysics.cxx:185
 AliAnalysisTaskFirstPhysics.cxx:186
 AliAnalysisTaskFirstPhysics.cxx:187
 AliAnalysisTaskFirstPhysics.cxx:188
 AliAnalysisTaskFirstPhysics.cxx:189
 AliAnalysisTaskFirstPhysics.cxx:190
 AliAnalysisTaskFirstPhysics.cxx:191
 AliAnalysisTaskFirstPhysics.cxx:192
 AliAnalysisTaskFirstPhysics.cxx:193
 AliAnalysisTaskFirstPhysics.cxx:194
 AliAnalysisTaskFirstPhysics.cxx:195
 AliAnalysisTaskFirstPhysics.cxx:196
 AliAnalysisTaskFirstPhysics.cxx:197
 AliAnalysisTaskFirstPhysics.cxx:198
 AliAnalysisTaskFirstPhysics.cxx:199
 AliAnalysisTaskFirstPhysics.cxx:200
 AliAnalysisTaskFirstPhysics.cxx:201
 AliAnalysisTaskFirstPhysics.cxx:202
 AliAnalysisTaskFirstPhysics.cxx:203
 AliAnalysisTaskFirstPhysics.cxx:204
 AliAnalysisTaskFirstPhysics.cxx:205
 AliAnalysisTaskFirstPhysics.cxx:206
 AliAnalysisTaskFirstPhysics.cxx:207
 AliAnalysisTaskFirstPhysics.cxx:208
 AliAnalysisTaskFirstPhysics.cxx:209
 AliAnalysisTaskFirstPhysics.cxx:210
 AliAnalysisTaskFirstPhysics.cxx:211
 AliAnalysisTaskFirstPhysics.cxx:212
 AliAnalysisTaskFirstPhysics.cxx:213
 AliAnalysisTaskFirstPhysics.cxx:214
 AliAnalysisTaskFirstPhysics.cxx:215
 AliAnalysisTaskFirstPhysics.cxx:216
 AliAnalysisTaskFirstPhysics.cxx:217
 AliAnalysisTaskFirstPhysics.cxx:218
 AliAnalysisTaskFirstPhysics.cxx:219
 AliAnalysisTaskFirstPhysics.cxx:220
 AliAnalysisTaskFirstPhysics.cxx:221
 AliAnalysisTaskFirstPhysics.cxx:222
 AliAnalysisTaskFirstPhysics.cxx:223
 AliAnalysisTaskFirstPhysics.cxx:224
 AliAnalysisTaskFirstPhysics.cxx:225
 AliAnalysisTaskFirstPhysics.cxx:226
 AliAnalysisTaskFirstPhysics.cxx:227
 AliAnalysisTaskFirstPhysics.cxx:228
 AliAnalysisTaskFirstPhysics.cxx:229
 AliAnalysisTaskFirstPhysics.cxx:230
 AliAnalysisTaskFirstPhysics.cxx:231
 AliAnalysisTaskFirstPhysics.cxx:232
 AliAnalysisTaskFirstPhysics.cxx:233
 AliAnalysisTaskFirstPhysics.cxx:234
 AliAnalysisTaskFirstPhysics.cxx:235
 AliAnalysisTaskFirstPhysics.cxx:236
 AliAnalysisTaskFirstPhysics.cxx:237
 AliAnalysisTaskFirstPhysics.cxx:238
 AliAnalysisTaskFirstPhysics.cxx:239
 AliAnalysisTaskFirstPhysics.cxx:240
 AliAnalysisTaskFirstPhysics.cxx:241
 AliAnalysisTaskFirstPhysics.cxx:242
 AliAnalysisTaskFirstPhysics.cxx:243
 AliAnalysisTaskFirstPhysics.cxx:244
 AliAnalysisTaskFirstPhysics.cxx:245
 AliAnalysisTaskFirstPhysics.cxx:246
 AliAnalysisTaskFirstPhysics.cxx:247
 AliAnalysisTaskFirstPhysics.cxx:248
 AliAnalysisTaskFirstPhysics.cxx:249
 AliAnalysisTaskFirstPhysics.cxx:250
 AliAnalysisTaskFirstPhysics.cxx:251
 AliAnalysisTaskFirstPhysics.cxx:252
 AliAnalysisTaskFirstPhysics.cxx:253
 AliAnalysisTaskFirstPhysics.cxx:254
 AliAnalysisTaskFirstPhysics.cxx:255
 AliAnalysisTaskFirstPhysics.cxx:256
 AliAnalysisTaskFirstPhysics.cxx:257
 AliAnalysisTaskFirstPhysics.cxx:258
 AliAnalysisTaskFirstPhysics.cxx:259
 AliAnalysisTaskFirstPhysics.cxx:260
 AliAnalysisTaskFirstPhysics.cxx:261
 AliAnalysisTaskFirstPhysics.cxx:262
 AliAnalysisTaskFirstPhysics.cxx:263
 AliAnalysisTaskFirstPhysics.cxx:264
 AliAnalysisTaskFirstPhysics.cxx:265
 AliAnalysisTaskFirstPhysics.cxx:266
 AliAnalysisTaskFirstPhysics.cxx:267
 AliAnalysisTaskFirstPhysics.cxx:268
 AliAnalysisTaskFirstPhysics.cxx:269
 AliAnalysisTaskFirstPhysics.cxx:270
 AliAnalysisTaskFirstPhysics.cxx:271
 AliAnalysisTaskFirstPhysics.cxx:272
 AliAnalysisTaskFirstPhysics.cxx:273
 AliAnalysisTaskFirstPhysics.cxx:274
 AliAnalysisTaskFirstPhysics.cxx:275
 AliAnalysisTaskFirstPhysics.cxx:276
 AliAnalysisTaskFirstPhysics.cxx:277
 AliAnalysisTaskFirstPhysics.cxx:278
 AliAnalysisTaskFirstPhysics.cxx:279
 AliAnalysisTaskFirstPhysics.cxx:280
 AliAnalysisTaskFirstPhysics.cxx:281
 AliAnalysisTaskFirstPhysics.cxx:282
 AliAnalysisTaskFirstPhysics.cxx:283
 AliAnalysisTaskFirstPhysics.cxx:284
 AliAnalysisTaskFirstPhysics.cxx:285
 AliAnalysisTaskFirstPhysics.cxx:286
 AliAnalysisTaskFirstPhysics.cxx:287
 AliAnalysisTaskFirstPhysics.cxx:288
 AliAnalysisTaskFirstPhysics.cxx:289
 AliAnalysisTaskFirstPhysics.cxx:290
 AliAnalysisTaskFirstPhysics.cxx:291
 AliAnalysisTaskFirstPhysics.cxx:292
 AliAnalysisTaskFirstPhysics.cxx:293
 AliAnalysisTaskFirstPhysics.cxx:294
 AliAnalysisTaskFirstPhysics.cxx:295
 AliAnalysisTaskFirstPhysics.cxx:296
 AliAnalysisTaskFirstPhysics.cxx:297
 AliAnalysisTaskFirstPhysics.cxx:298
 AliAnalysisTaskFirstPhysics.cxx:299
 AliAnalysisTaskFirstPhysics.cxx:300
 AliAnalysisTaskFirstPhysics.cxx:301
 AliAnalysisTaskFirstPhysics.cxx:302
 AliAnalysisTaskFirstPhysics.cxx:303
 AliAnalysisTaskFirstPhysics.cxx:304
 AliAnalysisTaskFirstPhysics.cxx:305
 AliAnalysisTaskFirstPhysics.cxx:306
 AliAnalysisTaskFirstPhysics.cxx:307
 AliAnalysisTaskFirstPhysics.cxx:308