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.                  *
 **************************************************************************/

//*************************************************************************
// Class AliAnalysisTaskIPInfo
// AliAnalysisTask to extract from the ESD the IP position and sigma
// as well as to estimate the primary vertex and tracks DCA resolution.
// Uses external class AliIntSpotEstimator
//
// Author: ruben.shahoyan@cern.ch
//*************************************************************************

#include <TChain.h>
#include <TTree.h>
#include <TNtuple.h>
#include <TBranch.h>
#include <TClonesArray.h>
#include <TObjArray.h>
#include <TH1F.h>
#include <TH2F.h>  
#include <TNtuple.h>  
#include <TCanvas.h>

#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"

#include "AliESDtrack.h"
#include "AliExternalTrackParam.h"
#include "AliESDVertex.h"
#include "AliESDEvent.h"
#include "AliESDfriend.h"
#include "AliVertexerTracks.h"
#include "AliESDInputHandler.h"
#include "AliAnalysisTaskIPInfo.h"
#include "AliIntSpotEstimator.h"
#include "AliMultiplicity.h"


ClassImp(AliAnalysisTaskIPInfo)

const Char_t* AliAnalysisTaskIPInfo::fEstNames[kNEst] = {"ITSTPC","TPC","SPD"};

//________________________________________________________________________
AliAnalysisTaskIPInfo::AliAnalysisTaskIPInfo(const char *name) 
: AliAnalysisTask(name, "IP analysis"),
  fESD(0),fESDfriend(0),fOutput(0),fTracks(50)
{

  // Define input and output slots here
  // Input slot #0 works with a TChain
  DefineInput(0, TChain::Class());
  // Output slot #0 writes into a TList container
  DefineOutput(0, TList::Class());  //My private output
  //
  for (int i=0;i<kNEst;i++) fIPEst[i] = 0;
  //
}

//________________________________________________________________________
AliAnalysisTaskIPInfo::~AliAnalysisTaskIPInfo()
{
  // Destructor
  if (fOutput) {
    delete fOutput;
    fOutput = 0;
  }
}
//________________________________________________________________________
void AliAnalysisTaskIPInfo::SetIPCenIni(Int_t estID, Double_t x,Double_t y,Double_t z)
{
  // set initial estimate of the IP center
  if (estID<0 || estID>= kNEst) return;
  fIPCenIni[estID][0] = x;
  fIPCenIni[estID][1] = y;
  fIPCenIni[estID][2] = z;
}

//________________________________________________________________________
void AliAnalysisTaskIPInfo::SetOptions(Int_t estID, Bool_t recoVtx,
				       Double_t outcut,Int_t ntrIP,Int_t nPhiBins,Int_t nestb,
				       Double_t estmin,Double_t estmax,
				       Int_t ntrBins,Int_t ntMn,Int_t ntMx,
				       Int_t nPBins,Double_t pmn,Double_t pmx,Bool_t fillNt)
{
  // set options for estimators
  if (estID<0 || estID>= kNEst) return;
  fNTrMinIP[estID] = ntrIP;
  fRecoVtx[estID]  = recoVtx;
  fNPhiBins[estID] = nPhiBins;
  fNEstb[estID]    = nestb;
  fNTrBins[estID]  = ntrBins;
  fNPBins[estID]   = nPBins;
  fNTrMin[estID]   = ntMn;
  fNTrMax[estID]   = ntMx;
  fOutCut[estID]   = outcut;
  fEstMin[estID]   = estmin;
  fEstMax[estID]   = estmax;
  fPMin[estID]     = pmn;
  fPMax[estID]     = pmx;
  fFillNt[estID]   = fillNt;
}

//________________________________________________________________________
void AliAnalysisTaskIPInfo::ConnectInputData(Option_t *) 
{
  // Connect ESD or AOD here
  // Called once
  //
  AliInfo("HERE");
  TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
  if (!tree) {
    Printf("ERROR: Could not read chain from input slot 0");
  } 
  else {
    tree->SetBranchAddress("ESDfriend.",&fESDfriend);
    AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());    
    if (!esdH) Printf("ERROR: Could not get ESDInputHandler");
    else fESD = esdH->GetEvent();
  }
  //
  return;
}

//________________________________________________________________________
void AliAnalysisTaskIPInfo::CreateOutputObjects()
{
  // Create estimators
  // Several histograms are more conveniently managed in a TList
  fOutput = new TList;
  fOutput->SetOwner();
  //
  Double_t err[3]={0.0400,0.0400,7.5};
  //
  for (int i=0;i<kNEst;i++) if (fNEstb[i]>1) {
      TString nm   = GetName();
      TString nmes = fEstNames[i];
      nm += nmes;
      fIPEst[i] = new AliIntSpotEstimator(nm.Data(),fOutCut[i],fNTrMinIP[i],fNPhiBins[i],
					  fNEstb[i],fEstMin[i],fEstMax[i],
					 fNTrBins[i],fNTrMin[i],fNTrMax[i],
					 fNPBins[i],fPMin[i],fPMax[i],fFillNt[i]);
      AliESDVertex *initVertex = new AliESDVertex(fIPCenIni[i],err);
      fIPEst[i]->GetVertexer()->SetVtxStart(initVertex);
      delete initVertex;
      fIPEst[i]->GetVertexer()->SetConstraintOff();
      fIPEst[i]->GetVertexer()->SetMinClusters(2);
      fIPEst[i]->SetIPCenIni(fIPCenIni[i]);
      if (nmes == "TPC") fIPEst[i]->GetVertexer()->SetTPCMode();
      else               fIPEst[i]->GetVertexer()->SetITSMode();
      //
      fOutput->Add(fIPEst[i]);
      if (fIPEst[i]->GetNtuple()) fOutput->Add(fIPEst[i]->GetNtuple());
    }
  //
  return;
}

//________________________________________________________________________
void AliAnalysisTaskIPInfo::Exec(Option_t *) 
{
  static TClonesArray tracks("AliExternalTrackParam",50);
  //
  // Main loop
  // Called for each event
  if (!fESD) {
    Printf("ERROR: fESD not available");
    return;
  }
  fESD->SetESDfriend(fESDfriend);
  //
  const AliESDVertex *vtx;
  UShort_t *trackID;
  Int_t ntracks;
  //
  for (int ie=0;ie<kNEst;ie++) {
    //
    if (!fIPEst[ie]) continue;
    if (ie==kTPC) {
      fIPEst[kTPC]->GetVertexer()->SetFieldkG( fESD->GetMagneticField() );
      vtx = fRecoVtx[kTPC] ? fIPEst[kTPC]->GetVertexer()->FindPrimaryVertex(fESD) : fESD->GetPrimaryVertexTPC();
      if (vtx) {
	ntracks = vtx->GetNIndices();
	trackID = (UShort_t*)vtx->GetIndices();
	for (int i=ntracks;i--;) fTracks.Add((TObject*)fESD->GetTrack(trackID[i])->GetTPCInnerParam());
	fIPEst[kTPC]->ProcessEvent(&fTracks);
	fTracks.Clear();
      }
    }
    else if (ie==kITSTPC) {
      fIPEst[kITSTPC]->GetVertexer()->SetFieldkG( fESD->GetMagneticField() );
      vtx = fRecoVtx[kITSTPC] ? fIPEst[kITSTPC]->GetVertexer()->FindPrimaryVertex(fESD) : fESD->GetPrimaryVertex();
      if (vtx) {
	ntracks = vtx->GetNIndices();
	trackID = (UShort_t*)vtx->GetIndices();
	for (int i=ntracks;i--;) fTracks.Add((TObject*)fESD->GetTrack(trackID[i]));
	fIPEst[kITSTPC]->ProcessEvent(&fTracks);
	fTracks.Clear();
      }
    }
    else if (ie==kSPD) {
      fIPEst[kSPD]->GetVertexer()->SetFieldkG( fESD->GetMagneticField() );
      ntracks = CreateSPDTracklets(tracks);
      for (int i=ntracks;i--;) fTracks.Add((TObject*)tracks[i]);
      fIPEst[kSPD]->ProcessEvent(&fTracks);
      fTracks.Clear();
    }
  }
  //
  PostData(0, fOutput);
  //
  return;
}      

//________________________________________________________________________
Int_t AliAnalysisTaskIPInfo::CreateSPDTracklets(TClonesArray& tracks)
{
  // create traclets from multiplicity class
  double cv[21] = {
    25e-4,
    0   ,  25e-4,
    0   ,     0,  40e-2,
    0   ,     0,      0,   1e-2,
    0   ,     0,      0,      0,   1e-2,
    0   ,     0,      0,      0,      0,   1e-2
  };
  //
  double xyzt[3],pxyz[3];
  int nSPDtracks = 0;
  tracks.Delete();
  const AliMultiplicity *mult = fESD->GetMultiplicity();
  const AliESDVertex *spdVtx  = fESD->GetPrimaryVertexSPD();
  int nTracklets = 0;
  if (mult && spdVtx && (nTracklets=mult->GetNumberOfTracklets())>2 ) {
    const Double_t kRLay1=3.9, kRLay2=7.6;
    double xv = spdVtx->GetX();
    double yv = spdVtx->GetY();
    double zv = spdVtx->GetZ();
    for (int i=0;i<nTracklets;i++) { // get cluster coordinates from tracklet
      double phi1 = mult->GetPhi(i);
      double tht1 = mult->GetTheta(i);
      double phi2 = phi1 - mult->GetDeltaPhi(i);
      double tht2 = tht1 - mult->GetDeltaTheta(i);
      double cs = TMath::Cos(phi1);
      double sn = TMath::Sin(tht1);
      double det = xv*sn+yv*sn;
      det = det*det + kRLay1*kRLay1;
      double t  = -(xv*cs+yv*sn) + TMath::Sqrt(det);
      double x1 = cs*t;
      double y1 = sn*t;
      double z1 = zv + TMath::Sqrt(x1*x1+y1*y1)/TMath::Tan(tht1);
      x1 += xv;
      y1 += yv;
      //
      cs = TMath::Cos(phi2);
      sn = TMath::Sin(tht2);
      det = xv*sn+yv*sn;
      det = det*det + kRLay2*kRLay2;
      t  = -(xv*cs+yv*sn) + TMath::Sqrt(det);
      double dx = cs*t;
      double dy = sn*t;
      double dz = zv + TMath::Sqrt(dx*dx+dy*dy)/TMath::Tan(tht2);
      dx += xv-x1;
      dy += yv-y1;
      dz += -z1;
      double dr = TMath::Sqrt(dx*dx+dy*dy+dz*dz);
      pxyz[0] = dx/dr; // direction cosines
      pxyz[1] = dy/dr;
      pxyz[2] = dz/dr;
      t = (xv-x1)*pxyz[0] + (yv-y1)*pxyz[1] + (zv-z1)*pxyz[2];
      xyzt[0] = x1 + t*pxyz[0];  // PCA to vertex
      xyzt[1] = y1 + t*pxyz[1];
      xyzt[2] = z1 + t*pxyz[2];
      //
      new(tracks[nSPDtracks++]) AliExternalTrackParam(xyzt,pxyz,cv,0);
    }
  }
  return nSPDtracks;
}

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