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


//-----------------------------------------------------------------------
// Author : A. Mastroserio
//-----------------------------------------------------------------------


#ifndef ALIANALYSISTASKSPD_CXX
#define ALIANALYSISTASKSPD_CXX

#include "AliAnalysisTaskSPD.h"
#include "TClonesArray.h"
#include "TBranch.h"
#include "TH1I.h"
#include "TH2D.h"
#include "TFile.h"
#include "AliSPDUtils.h"
#include "AliESDEvent.h"
#include "TChain.h"
#include "AliLog.h"
#include "AliESDInputHandlerRP.h"
#include "AliAnalysisManager.h"
#include "AliMultiplicity.h"
#include "AliCDBPath.h"
#include "AliCDBManager.h"
#include "AliCDBEntry.h"
#include "AliCDBStorage.h"
#include "AliGeomManager.h"
#include "AliITSRecPoint.h"
#include "AliITSsegmentationSPD.h"
ClassImp(AliAnalysisTaskSPD)
  //__________________________________________________________________________
  AliAnalysisTaskSPD::AliAnalysisTaskSPD() :
    fSegSPD(0x0),
    fOutput(0x0),
    fRunNb(999),
    fOCDBLocation("local://$ALICE_ROOT/OCDB"),
    fHI(kFALSE),
    fTest(kFALSE)
{
  //
  //Default ctor
  //
}
//___________________________________________________________________________
AliAnalysisTaskSPD::AliAnalysisTaskSPD(const Char_t* name) :
  AliAnalysisTaskSE(name),
  fSegSPD(0x0),
  fOutput(0x0),
  fRunNb(999),
  fOCDBLocation("local://$ALICE_ROOT/OCDB"),
  fHI(kFALSE),
  fTest(kFALSE)
{
  //
  // Constructor. Initialization of Inputs and Outputs
  //
  Info("AliAnalysisTaskSPD","Calling Constructor");

  DefineOutput(1,TList::Class());
  // 
}

//___________________________________________________________________________
AliAnalysisTaskSPD& AliAnalysisTaskSPD::operator=(const AliAnalysisTaskSPD& c) 
{
  //
  // Assignment operator
  //
  if (this!=&c) {
    AliAnalysisTaskSE::operator=(c) ;
    fSegSPD = c.fSegSPD ;
    fOutput = c.fOutput ;
    fRunNb = c.fRunNb;
    fOCDBLocation = c.fOCDBLocation;
    fHI = c.fHI;
    fTest = c.fTest;
  }
  return *this;
}

//___________________________________________________________________________
AliAnalysisTaskSPD::AliAnalysisTaskSPD(const AliAnalysisTaskSPD& c) :
  AliAnalysisTaskSE(c),
  fSegSPD(c.fSegSPD),
  fOutput(c.fOutput),
  fRunNb(c.fRunNb),
  fOCDBLocation(c.fOCDBLocation),
  fHI(c.fHI),
  fTest(c.fTest)
{
  //
  // Copy Constructor
  //

}

//___________________________________________________________________________
AliAnalysisTaskSPD::~AliAnalysisTaskSPD() {
  //
  //destructor
  //
 
  Info("~AliAnalysisTaskSPD","Calling Destructor");
 if (AliAnalysisManager::GetAnalysisManager()->IsProofMode()) return; 
 if (fSegSPD) delete fSegSPD ;
   if (fOutput) {
    delete fOutput;
    fOutput = 0;
  }
}
//___________________________________________________________________________
void AliAnalysisTaskSPD::UserCreateOutputObjects() {

  Info("CreateOutputObjects","CreateOutputObjects of task %s", GetName());
  if(fRunNb!=999){
    // Geometry is loaded (including ITS alignment) by AliTaskCDBconnect (A.G. 14/10/2011) 
    if (fTest) LoadGeometryFromOCDB();
  }
  fSegSPD = new AliITSsegmentationSPD();

  //slot #1
  OpenFile(1);
  fOutput = new TList();
  fOutput->SetOwner();
  
  //
  // Booking rec points related histograms
  //0
  TH2D *hLocalMapL1 = new TH2D("hLocalMapL1"," Local coordinates  - Layer 1",330,-16.5,16.5,205,-0.5,40.5); // safe limits for local coordinates in a module : z = -4,4, x = -1,1;
  hLocalMapL1->SetXTitle("direction Z [cm]");
  hLocalMapL1->SetYTitle("direction X [cm]");
  fOutput->AddLast(hLocalMapL1);
  //1
  TH2D *hLocalMapL2 = new TH2D("hLocalMapL2"," Local coordinates  - Layer 2",330,-16.5,16.5,405,-0.5,80.5);
  hLocalMapL2->SetXTitle("direction Z [cm]");
  hLocalMapL2->SetYTitle("direction X [cm]");
  fOutput->AddLast(hLocalMapL2);
  //2
  TH1F *hClusterModYield = new TH1F("hClusterModYield","Cluster yield in modules",241,-0.5,240.5);
  hClusterModYield->SetXTitle("module number");
  fOutput->AddLast(hClusterModYield);
  // 3
  TH1F *hClusterYield = new TH1F("hClusterYield","Cluster yield per chip",1200,-0.5,1199.5) ;
  hClusterYield->SetXTitle("chip key");
  fOutput->AddLast(hClusterYield); 
  //4
  TH1F *hClusterYieldOnline = new TH1F("hClusterYieldOnline","Cluster yield per chip (online coord eq*60+hs*10+chip)",1200,-0.5,1199.5) ;
  hClusterYieldOnline->SetXTitle("chip");
  fOutput->AddLast(hClusterYieldOnline);
  //5
  TH1F *hFiredChip = new TH1F("hFiredChip","Fired chip (at least one cluster)",1200,-0.5,1199.5);
  hFiredChip->SetXTitle("chip key");
  fOutput->AddLast(hFiredChip);
  //6
  TH1F *hFOFiredChip = new TH1F("hFOFiredChip","FO Fired chip ",1200,-0.5,1199.5);
  hFOFiredChip->SetXTitle("chip key");
  fOutput->AddLast(hFOFiredChip);
  //7
  TH1F *hFOgood = new TH1F("hFOgood"," FO-good (at least one cluster) ",1200,-0.5,1199.5);
  hFOgood->SetXTitle("chip key");
  fOutput->AddLast(hFOgood);
  //8
  TH2F *hFOgoodPerBC = new TH2F("hFOgoodPerBCmod4"," FO-good signals in BCmod4 ",1200,-0.5,1199.5,4,-0.5,3.5);
  hFOgoodPerBC->SetXTitle("chip key");
  fOutput->AddLast(hFOgoodPerBC);
  //9
  TH2F *hFiredChipsPerBC = new TH2F("hFiredChipsPerBCmod4"," fired chips in BCmod4 ",1200,-0.5,1199.5,4,-0.5,3.5);
  hFiredChipsPerBC->SetXTitle("chip key");
  fOutput->AddLast(hFiredChipsPerBC);
  //10
  TH1F *hFOnoisy = new TH1F("hFOnoisy","FO-noisy (no cluster)",1200,-0.5,1199.5);
  hFOnoisy->SetXTitle("chip key");
  fOutput->AddLast(hFOnoisy);

  //
  // Booking ESD related histograms
  //

  Int_t nbin, nTrMax;
  if(fHI) {
   nbin   =  800;
   nTrMax = 8000;
  } else {
  nbin =  500;
  nTrMax = 500; 
  }

  // 11
  TH1I *hTracklets = new TH1I("hNtracklets","Tracklet distribution",nbin,0,nTrMax);
  hTracklets->SetXTitle("# Tracklets");
  fOutput->AddLast(hTracklets);
  //12
  TH2F *hSPDphivsSPDeta= new TH2F("hSPDphivsSPDeta", "Tracklets - #varphi vs #eta",120,-3.,3,360,0.,2*TMath::Pi());
  hSPDphivsSPDeta->GetXaxis()->SetTitle("Pseudorapidity #eta");
  hSPDphivsSPDeta->GetYaxis()->SetTitle("#varphi [rad]");
  fOutput->AddLast(hSPDphivsSPDeta);
  //13
  TH1F *hSPDphiZpos= new TH1F("hSPDphiZpos", "Tracklets - #varphi (Z>0)",360,0.,2*TMath::Pi());
  hSPDphiZpos->SetXTitle("#varphi [rad]");
  fOutput->AddLast(hSPDphiZpos);
  //14
  TH1F *hSPDphiZneg= new TH1F("hSPDphiZneg", "Tracklets - #varphi (Z<0)",360,0.,2*TMath::Pi());
  hSPDphiZneg->SetXTitle("#varphi [rad]");
  fOutput->AddLast(hSPDphiZneg);
  //15
  TH1F *hVertexZ = new TH1F("hVertexZ","Vertex Z distribution",300,-15,15);
  hVertexZ->SetXTitle("Z Vertex [cm]");
  fOutput->AddLast(hVertexZ); 
  //16
  TH2F *hTracklVsClu1 = new TH2F("hTrackVsClu1","Tracklet Vs Clusters Layer 1",nbin/2,0,1.5*nTrMax,nbin/2,0,nTrMax);
  hTracklVsClu1->SetXTitle("clusters SPD Layer 1");
  hTracklVsClu1->SetYTitle("tracklets");
  fOutput->AddLast(hTracklVsClu1);
  //17
  TH2F *hTracklVsClu2 = new TH2F("hTrackVsClu2","Tracklet Vs Clusters Layer 2",nbin/2,0,1.5*nTrMax,nbin/2,0,nTrMax);
  hTracklVsClu2->SetXTitle("clusters SPD Layer 2");
  hTracklVsClu2->SetYTitle("tracklets");
  fOutput->AddLast(hTracklVsClu2);
  //18
  TH1I *hEventsProcessed = new TH1I("hEventsProcessed","Number of processed events",1,0,1) ;
  fOutput->AddLast(hEventsProcessed);

  PostData(1,fOutput);
}
//_________________________________________________
void AliAnalysisTaskSPD::UserExec(Option_t *)
{
  //
  // Main loop function
  //
  AliESDInputHandlerRP *hand = dynamic_cast<AliESDInputHandlerRP*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
  if(!hand) {
    printf("No AliESDInputHandlerRP \n");  
    return;
  }

  AliESDEvent *ESD = hand->GetEvent();
  if(!ESD) {
    printf("No AliESDEvent \n");
    return;
  }

  Bool_t recP = kTRUE;
  TTree * treeRP = hand->GetTreeR("ITS");
  if(!treeRP) {
    //AliWarning("No ITS RecPoints tree ");
    recP=kFALSE;
  }

  

  // ESD related histograms
 
   const AliESDVertex *vertex = ESD->GetPrimaryVertexSPD();
   const AliMultiplicity *mult = ESD->GetMultiplicity();
 
   // Event selection
   if(!vertex) return;
   if(!vertex->GetStatus()) return;
   if(vertex->GetNContributors() < 1) return;

  ((TH1I*)fOutput->At(18))->Fill(0);
   
  ((TH1I*)fOutput->At(11))->Fill(mult->GetNumberOfTracklets());
  UInt_t bc = (UInt_t)ESD->GetBunchCrossNumber();
  for(Int_t iChipKey=0; iChipKey < 1200; iChipKey++){
    if(mult->TestFiredChipMap(iChipKey)) {
     ((TH1F*)fOutput->At(5))->Fill(iChipKey);
     if(bc>0)((TH2F*)fOutput->At(9))->Fill(iChipKey,bc%4);   
     }
    if(mult->TestFastOrFiredChips(iChipKey)) ((TH1F*)fOutput->At(6))->Fill(iChipKey);
    if(mult->TestFastOrFiredChips(iChipKey) && mult->TestFiredChipMap(iChipKey)) {
      ((TH1F*)fOutput->At(7))->Fill(iChipKey);
      if(bc>0) ((TH2F*)fOutput->At(8))->Fill(iChipKey,bc%4);
     
    }
    if(mult->TestFastOrFiredChips(iChipKey) && !mult->TestFiredChipMap(iChipKey)) ((TH1F*)fOutput->At(10))->Fill(iChipKey);
  }
  
  
  Double_t vtxPos[3] = {999, 999, 999};
  if(vertex){
    vertex->GetXYZ(vtxPos);
 
    ((TH1F*)fOutput->At(15))->Fill(vtxPos[2]);

    ((TH2F*)fOutput->At(16))->Fill(mult->GetNumberOfITSClusters(0),mult->GetNumberOfTracklets());
    ((TH2F*)fOutput->At(17))->Fill(mult->GetNumberOfITSClusters(1),mult->GetNumberOfTracklets());
 
    for(Int_t iTracklet =0; iTracklet < mult->GetNumberOfTracklets(); iTracklet++){

      Float_t phiTr= mult->GetPhi(iTracklet);
      Float_t etaTr =mult->GetEta(iTracklet);

      ((TH2F*)fOutput->At(12))->Fill(etaTr,phiTr);

      // Z pos or Z neg
      Float_t z = vtxPos[2] + 3.9 / TMath::Tan(2 * TMath::ATan(TMath::Exp(- etaTr)));
      if(z>0) ((TH1F*)fOutput->At(13))->Fill(phiTr);
      else ((TH1F*)fOutput->At(14))->Fill(phiTr);
    }
  } 
  
  
  if(recP){
  // RecPoints info

  TClonesArray statITSrec("AliITSRecPoint");
  TClonesArray *ITSCluster = &statITSrec;
  TBranch* branch=treeRP->GetBranch("ITSRecPoints");
  if(!branch) {
    printf("NO treeRP branch available. Exiting...\n");
    return;
  }

  branch->SetAddress(&ITSCluster);

  for(Int_t iMod=0;iMod<240;iMod++){
    branch->GetEvent(iMod);
    Int_t nrecp = statITSrec.GetEntries();
    if(nrecp>0) ((TH1F*)fOutput->At(2))->Fill(iMod,nrecp);
  
    for(Int_t irec=0;irec<nrecp;irec++) {
      AliITSRecPoint *recp = (AliITSRecPoint*)statITSrec.At(irec);
      Int_t lay=recp->GetLayer();
      if(lay>1) continue;

      // ----  Filling maps (local coordinates rearranged) -----
      Float_t local[3]={-1,-1};
      local[1]=recp->GetDetLocalX();
      local[0]=recp->GetDetLocalZ();
      Int_t eq = AliSPDUtils::GetOnlineEqIdFromOffline(iMod);
      Int_t hs = AliSPDUtils::GetOnlineHSFromOffline(iMod);
      Int_t row, col;
      fSegSPD->LocalToDet(0.5,local[0],row,col);
      Int_t chip = AliSPDUtils::GetOnlineChipFromOffline(iMod,col);
     
      Double_t locx, locz, equip;
      Double_t corrlocz =0;
      if(lay==0) corrlocz=local[0];
      else corrlocz = -local[0];
      // rearranging local geometry
      if(eq<10) equip=eq;
      else equip=eq-10;
      if(eq<10){
	if(chip<5) locz =corrlocz +8 +4;
	else locz = corrlocz+4;
      } else {
	if(chip<5) locz = corrlocz-8-4;
	else locz = corrlocz-4;
      }
      // filling maps
      if(lay==0){
	locx = (local[1]+1) + hs*2 +equip*4;
	((TH2D*)fOutput->At(0))->Fill(locz,locx);
	
      } else {
	locx = (local[1]+1) + (hs-2)*2 +equip*8;
	((TH2D*)fOutput->At(1))->Fill(locz,locx);
      }
      // ---- End Filling maps (local coordinates rearranged) -----
    
      ((TH1F*)fOutput->At(3))->Fill(AliSPDUtils::GetOfflineChipKeyFromOnline(eq,hs,chip));
      ((TH1F*)fOutput->At(4))->Fill(eq*60+hs*10+chip);
   
    }
  }
 }// end if rec points are available
 
  
  
  
  /* PostData(0) is taken care of by AliAnalysisTaskSE */
  PostData(1,fOutput) ;

}


//___________________________________________________________________________
void AliAnalysisTaskSPD::Terminate(Option_t*)
{
  // The Terminate() function is the last function to be called during
  // a query. It always runs on the client, it can be used to present
  // the results graphically or save the results to file.

  AliAnalysisTaskSE::Terminate();
}



//___________________________________________________________________________
void AliAnalysisTaskSPD::LoadGeometryFromOCDB(){
  //method to get the gGeomanager
  // it is called at the CreatedOutputObject stage
  // to comply with the CAF environment

  if(fTest){ 
  AliCDBManager *man = AliCDBManager::Instance();
  man->SetDefaultStorage(fOCDBLocation.Data());
  man->SetRun(fRunNb);  
  }

  if(!AliCDBManager::Instance()){
  AliWarning("No CDB MANAGER, geometry can not be loaded");
  return;
  }

  AliCDBEntry* obj =(AliCDBManager::Instance())->Get(AliCDBPath("GRP", "Geometry", "Data"));
  if (obj)
      AliGeomManager::SetGeometry((TGeoManager*)obj->GetObject());
  AliGeomManager::GetNalignable("ITS");
  AliGeomManager::ApplyAlignObjsFromCDB("ITS"); 
}


#endif
 AliAnalysisTaskSPD.cxx:1
 AliAnalysisTaskSPD.cxx:2
 AliAnalysisTaskSPD.cxx:3
 AliAnalysisTaskSPD.cxx:4
 AliAnalysisTaskSPD.cxx:5
 AliAnalysisTaskSPD.cxx:6
 AliAnalysisTaskSPD.cxx:7
 AliAnalysisTaskSPD.cxx:8
 AliAnalysisTaskSPD.cxx:9
 AliAnalysisTaskSPD.cxx:10
 AliAnalysisTaskSPD.cxx:11
 AliAnalysisTaskSPD.cxx:12
 AliAnalysisTaskSPD.cxx:13
 AliAnalysisTaskSPD.cxx:14
 AliAnalysisTaskSPD.cxx:15
 AliAnalysisTaskSPD.cxx:16
 AliAnalysisTaskSPD.cxx:17
 AliAnalysisTaskSPD.cxx:18
 AliAnalysisTaskSPD.cxx:19
 AliAnalysisTaskSPD.cxx:20
 AliAnalysisTaskSPD.cxx:21
 AliAnalysisTaskSPD.cxx:22
 AliAnalysisTaskSPD.cxx:23
 AliAnalysisTaskSPD.cxx:24
 AliAnalysisTaskSPD.cxx:25
 AliAnalysisTaskSPD.cxx:26
 AliAnalysisTaskSPD.cxx:27
 AliAnalysisTaskSPD.cxx:28
 AliAnalysisTaskSPD.cxx:29
 AliAnalysisTaskSPD.cxx:30
 AliAnalysisTaskSPD.cxx:31
 AliAnalysisTaskSPD.cxx:32
 AliAnalysisTaskSPD.cxx:33
 AliAnalysisTaskSPD.cxx:34
 AliAnalysisTaskSPD.cxx:35
 AliAnalysisTaskSPD.cxx:36
 AliAnalysisTaskSPD.cxx:37
 AliAnalysisTaskSPD.cxx:38
 AliAnalysisTaskSPD.cxx:39
 AliAnalysisTaskSPD.cxx:40
 AliAnalysisTaskSPD.cxx:41
 AliAnalysisTaskSPD.cxx:42
 AliAnalysisTaskSPD.cxx:43
 AliAnalysisTaskSPD.cxx:44
 AliAnalysisTaskSPD.cxx:45
 AliAnalysisTaskSPD.cxx:46
 AliAnalysisTaskSPD.cxx:47
 AliAnalysisTaskSPD.cxx:48
 AliAnalysisTaskSPD.cxx:49
 AliAnalysisTaskSPD.cxx:50
 AliAnalysisTaskSPD.cxx:51
 AliAnalysisTaskSPD.cxx:52
 AliAnalysisTaskSPD.cxx:53
 AliAnalysisTaskSPD.cxx:54
 AliAnalysisTaskSPD.cxx:55
 AliAnalysisTaskSPD.cxx:56
 AliAnalysisTaskSPD.cxx:57
 AliAnalysisTaskSPD.cxx:58
 AliAnalysisTaskSPD.cxx:59
 AliAnalysisTaskSPD.cxx:60
 AliAnalysisTaskSPD.cxx:61
 AliAnalysisTaskSPD.cxx:62
 AliAnalysisTaskSPD.cxx:63
 AliAnalysisTaskSPD.cxx:64
 AliAnalysisTaskSPD.cxx:65
 AliAnalysisTaskSPD.cxx:66
 AliAnalysisTaskSPD.cxx:67
 AliAnalysisTaskSPD.cxx:68
 AliAnalysisTaskSPD.cxx:69
 AliAnalysisTaskSPD.cxx:70
 AliAnalysisTaskSPD.cxx:71
 AliAnalysisTaskSPD.cxx:72
 AliAnalysisTaskSPD.cxx:73
 AliAnalysisTaskSPD.cxx:74
 AliAnalysisTaskSPD.cxx:75
 AliAnalysisTaskSPD.cxx:76
 AliAnalysisTaskSPD.cxx:77
 AliAnalysisTaskSPD.cxx:78
 AliAnalysisTaskSPD.cxx:79
 AliAnalysisTaskSPD.cxx:80
 AliAnalysisTaskSPD.cxx:81
 AliAnalysisTaskSPD.cxx:82
 AliAnalysisTaskSPD.cxx:83
 AliAnalysisTaskSPD.cxx:84
 AliAnalysisTaskSPD.cxx:85
 AliAnalysisTaskSPD.cxx:86
 AliAnalysisTaskSPD.cxx:87
 AliAnalysisTaskSPD.cxx:88
 AliAnalysisTaskSPD.cxx:89
 AliAnalysisTaskSPD.cxx:90
 AliAnalysisTaskSPD.cxx:91
 AliAnalysisTaskSPD.cxx:92
 AliAnalysisTaskSPD.cxx:93
 AliAnalysisTaskSPD.cxx:94
 AliAnalysisTaskSPD.cxx:95
 AliAnalysisTaskSPD.cxx:96
 AliAnalysisTaskSPD.cxx:97
 AliAnalysisTaskSPD.cxx:98
 AliAnalysisTaskSPD.cxx:99
 AliAnalysisTaskSPD.cxx:100
 AliAnalysisTaskSPD.cxx:101
 AliAnalysisTaskSPD.cxx:102
 AliAnalysisTaskSPD.cxx:103
 AliAnalysisTaskSPD.cxx:104
 AliAnalysisTaskSPD.cxx:105
 AliAnalysisTaskSPD.cxx:106
 AliAnalysisTaskSPD.cxx:107
 AliAnalysisTaskSPD.cxx:108
 AliAnalysisTaskSPD.cxx:109
 AliAnalysisTaskSPD.cxx:110
 AliAnalysisTaskSPD.cxx:111
 AliAnalysisTaskSPD.cxx:112
 AliAnalysisTaskSPD.cxx:113
 AliAnalysisTaskSPD.cxx:114
 AliAnalysisTaskSPD.cxx:115
 AliAnalysisTaskSPD.cxx:116
 AliAnalysisTaskSPD.cxx:117
 AliAnalysisTaskSPD.cxx:118
 AliAnalysisTaskSPD.cxx:119
 AliAnalysisTaskSPD.cxx:120
 AliAnalysisTaskSPD.cxx:121
 AliAnalysisTaskSPD.cxx:122
 AliAnalysisTaskSPD.cxx:123
 AliAnalysisTaskSPD.cxx:124
 AliAnalysisTaskSPD.cxx:125
 AliAnalysisTaskSPD.cxx:126
 AliAnalysisTaskSPD.cxx:127
 AliAnalysisTaskSPD.cxx:128
 AliAnalysisTaskSPD.cxx:129
 AliAnalysisTaskSPD.cxx:130
 AliAnalysisTaskSPD.cxx:131
 AliAnalysisTaskSPD.cxx:132
 AliAnalysisTaskSPD.cxx:133
 AliAnalysisTaskSPD.cxx:134
 AliAnalysisTaskSPD.cxx:135
 AliAnalysisTaskSPD.cxx:136
 AliAnalysisTaskSPD.cxx:137
 AliAnalysisTaskSPD.cxx:138
 AliAnalysisTaskSPD.cxx:139
 AliAnalysisTaskSPD.cxx:140
 AliAnalysisTaskSPD.cxx:141
 AliAnalysisTaskSPD.cxx:142
 AliAnalysisTaskSPD.cxx:143
 AliAnalysisTaskSPD.cxx:144
 AliAnalysisTaskSPD.cxx:145
 AliAnalysisTaskSPD.cxx:146
 AliAnalysisTaskSPD.cxx:147
 AliAnalysisTaskSPD.cxx:148
 AliAnalysisTaskSPD.cxx:149
 AliAnalysisTaskSPD.cxx:150
 AliAnalysisTaskSPD.cxx:151
 AliAnalysisTaskSPD.cxx:152
 AliAnalysisTaskSPD.cxx:153
 AliAnalysisTaskSPD.cxx:154
 AliAnalysisTaskSPD.cxx:155
 AliAnalysisTaskSPD.cxx:156
 AliAnalysisTaskSPD.cxx:157
 AliAnalysisTaskSPD.cxx:158
 AliAnalysisTaskSPD.cxx:159
 AliAnalysisTaskSPD.cxx:160
 AliAnalysisTaskSPD.cxx:161
 AliAnalysisTaskSPD.cxx:162
 AliAnalysisTaskSPD.cxx:163
 AliAnalysisTaskSPD.cxx:164
 AliAnalysisTaskSPD.cxx:165
 AliAnalysisTaskSPD.cxx:166
 AliAnalysisTaskSPD.cxx:167
 AliAnalysisTaskSPD.cxx:168
 AliAnalysisTaskSPD.cxx:169
 AliAnalysisTaskSPD.cxx:170
 AliAnalysisTaskSPD.cxx:171
 AliAnalysisTaskSPD.cxx:172
 AliAnalysisTaskSPD.cxx:173
 AliAnalysisTaskSPD.cxx:174
 AliAnalysisTaskSPD.cxx:175
 AliAnalysisTaskSPD.cxx:176
 AliAnalysisTaskSPD.cxx:177
 AliAnalysisTaskSPD.cxx:178
 AliAnalysisTaskSPD.cxx:179
 AliAnalysisTaskSPD.cxx:180
 AliAnalysisTaskSPD.cxx:181
 AliAnalysisTaskSPD.cxx:182
 AliAnalysisTaskSPD.cxx:183
 AliAnalysisTaskSPD.cxx:184
 AliAnalysisTaskSPD.cxx:185
 AliAnalysisTaskSPD.cxx:186
 AliAnalysisTaskSPD.cxx:187
 AliAnalysisTaskSPD.cxx:188
 AliAnalysisTaskSPD.cxx:189
 AliAnalysisTaskSPD.cxx:190
 AliAnalysisTaskSPD.cxx:191
 AliAnalysisTaskSPD.cxx:192
 AliAnalysisTaskSPD.cxx:193
 AliAnalysisTaskSPD.cxx:194
 AliAnalysisTaskSPD.cxx:195
 AliAnalysisTaskSPD.cxx:196
 AliAnalysisTaskSPD.cxx:197
 AliAnalysisTaskSPD.cxx:198
 AliAnalysisTaskSPD.cxx:199
 AliAnalysisTaskSPD.cxx:200
 AliAnalysisTaskSPD.cxx:201
 AliAnalysisTaskSPD.cxx:202
 AliAnalysisTaskSPD.cxx:203
 AliAnalysisTaskSPD.cxx:204
 AliAnalysisTaskSPD.cxx:205
 AliAnalysisTaskSPD.cxx:206
 AliAnalysisTaskSPD.cxx:207
 AliAnalysisTaskSPD.cxx:208
 AliAnalysisTaskSPD.cxx:209
 AliAnalysisTaskSPD.cxx:210
 AliAnalysisTaskSPD.cxx:211
 AliAnalysisTaskSPD.cxx:212
 AliAnalysisTaskSPD.cxx:213
 AliAnalysisTaskSPD.cxx:214
 AliAnalysisTaskSPD.cxx:215
 AliAnalysisTaskSPD.cxx:216
 AliAnalysisTaskSPD.cxx:217
 AliAnalysisTaskSPD.cxx:218
 AliAnalysisTaskSPD.cxx:219
 AliAnalysisTaskSPD.cxx:220
 AliAnalysisTaskSPD.cxx:221
 AliAnalysisTaskSPD.cxx:222
 AliAnalysisTaskSPD.cxx:223
 AliAnalysisTaskSPD.cxx:224
 AliAnalysisTaskSPD.cxx:225
 AliAnalysisTaskSPD.cxx:226
 AliAnalysisTaskSPD.cxx:227
 AliAnalysisTaskSPD.cxx:228
 AliAnalysisTaskSPD.cxx:229
 AliAnalysisTaskSPD.cxx:230
 AliAnalysisTaskSPD.cxx:231
 AliAnalysisTaskSPD.cxx:232
 AliAnalysisTaskSPD.cxx:233
 AliAnalysisTaskSPD.cxx:234
 AliAnalysisTaskSPD.cxx:235
 AliAnalysisTaskSPD.cxx:236
 AliAnalysisTaskSPD.cxx:237
 AliAnalysisTaskSPD.cxx:238
 AliAnalysisTaskSPD.cxx:239
 AliAnalysisTaskSPD.cxx:240
 AliAnalysisTaskSPD.cxx:241
 AliAnalysisTaskSPD.cxx:242
 AliAnalysisTaskSPD.cxx:243
 AliAnalysisTaskSPD.cxx:244
 AliAnalysisTaskSPD.cxx:245
 AliAnalysisTaskSPD.cxx:246
 AliAnalysisTaskSPD.cxx:247
 AliAnalysisTaskSPD.cxx:248
 AliAnalysisTaskSPD.cxx:249
 AliAnalysisTaskSPD.cxx:250
 AliAnalysisTaskSPD.cxx:251
 AliAnalysisTaskSPD.cxx:252
 AliAnalysisTaskSPD.cxx:253
 AliAnalysisTaskSPD.cxx:254
 AliAnalysisTaskSPD.cxx:255
 AliAnalysisTaskSPD.cxx:256
 AliAnalysisTaskSPD.cxx:257
 AliAnalysisTaskSPD.cxx:258
 AliAnalysisTaskSPD.cxx:259
 AliAnalysisTaskSPD.cxx:260
 AliAnalysisTaskSPD.cxx:261
 AliAnalysisTaskSPD.cxx:262
 AliAnalysisTaskSPD.cxx:263
 AliAnalysisTaskSPD.cxx:264
 AliAnalysisTaskSPD.cxx:265
 AliAnalysisTaskSPD.cxx:266
 AliAnalysisTaskSPD.cxx:267
 AliAnalysisTaskSPD.cxx:268
 AliAnalysisTaskSPD.cxx:269
 AliAnalysisTaskSPD.cxx:270
 AliAnalysisTaskSPD.cxx:271
 AliAnalysisTaskSPD.cxx:272
 AliAnalysisTaskSPD.cxx:273
 AliAnalysisTaskSPD.cxx:274
 AliAnalysisTaskSPD.cxx:275
 AliAnalysisTaskSPD.cxx:276
 AliAnalysisTaskSPD.cxx:277
 AliAnalysisTaskSPD.cxx:278
 AliAnalysisTaskSPD.cxx:279
 AliAnalysisTaskSPD.cxx:280
 AliAnalysisTaskSPD.cxx:281
 AliAnalysisTaskSPD.cxx:282
 AliAnalysisTaskSPD.cxx:283
 AliAnalysisTaskSPD.cxx:284
 AliAnalysisTaskSPD.cxx:285
 AliAnalysisTaskSPD.cxx:286
 AliAnalysisTaskSPD.cxx:287
 AliAnalysisTaskSPD.cxx:288
 AliAnalysisTaskSPD.cxx:289
 AliAnalysisTaskSPD.cxx:290
 AliAnalysisTaskSPD.cxx:291
 AliAnalysisTaskSPD.cxx:292
 AliAnalysisTaskSPD.cxx:293
 AliAnalysisTaskSPD.cxx:294
 AliAnalysisTaskSPD.cxx:295
 AliAnalysisTaskSPD.cxx:296
 AliAnalysisTaskSPD.cxx:297
 AliAnalysisTaskSPD.cxx:298
 AliAnalysisTaskSPD.cxx:299
 AliAnalysisTaskSPD.cxx:300
 AliAnalysisTaskSPD.cxx:301
 AliAnalysisTaskSPD.cxx:302
 AliAnalysisTaskSPD.cxx:303
 AliAnalysisTaskSPD.cxx:304
 AliAnalysisTaskSPD.cxx:305
 AliAnalysisTaskSPD.cxx:306
 AliAnalysisTaskSPD.cxx:307
 AliAnalysisTaskSPD.cxx:308
 AliAnalysisTaskSPD.cxx:309
 AliAnalysisTaskSPD.cxx:310
 AliAnalysisTaskSPD.cxx:311
 AliAnalysisTaskSPD.cxx:312
 AliAnalysisTaskSPD.cxx:313
 AliAnalysisTaskSPD.cxx:314
 AliAnalysisTaskSPD.cxx:315
 AliAnalysisTaskSPD.cxx:316
 AliAnalysisTaskSPD.cxx:317
 AliAnalysisTaskSPD.cxx:318
 AliAnalysisTaskSPD.cxx:319
 AliAnalysisTaskSPD.cxx:320
 AliAnalysisTaskSPD.cxx:321
 AliAnalysisTaskSPD.cxx:322
 AliAnalysisTaskSPD.cxx:323
 AliAnalysisTaskSPD.cxx:324
 AliAnalysisTaskSPD.cxx:325
 AliAnalysisTaskSPD.cxx:326
 AliAnalysisTaskSPD.cxx:327
 AliAnalysisTaskSPD.cxx:328
 AliAnalysisTaskSPD.cxx:329
 AliAnalysisTaskSPD.cxx:330
 AliAnalysisTaskSPD.cxx:331
 AliAnalysisTaskSPD.cxx:332
 AliAnalysisTaskSPD.cxx:333
 AliAnalysisTaskSPD.cxx:334
 AliAnalysisTaskSPD.cxx:335
 AliAnalysisTaskSPD.cxx:336
 AliAnalysisTaskSPD.cxx:337
 AliAnalysisTaskSPD.cxx:338
 AliAnalysisTaskSPD.cxx:339
 AliAnalysisTaskSPD.cxx:340
 AliAnalysisTaskSPD.cxx:341
 AliAnalysisTaskSPD.cxx:342
 AliAnalysisTaskSPD.cxx:343
 AliAnalysisTaskSPD.cxx:344
 AliAnalysisTaskSPD.cxx:345
 AliAnalysisTaskSPD.cxx:346
 AliAnalysisTaskSPD.cxx:347
 AliAnalysisTaskSPD.cxx:348
 AliAnalysisTaskSPD.cxx:349
 AliAnalysisTaskSPD.cxx:350
 AliAnalysisTaskSPD.cxx:351
 AliAnalysisTaskSPD.cxx:352
 AliAnalysisTaskSPD.cxx:353
 AliAnalysisTaskSPD.cxx:354
 AliAnalysisTaskSPD.cxx:355
 AliAnalysisTaskSPD.cxx:356
 AliAnalysisTaskSPD.cxx:357
 AliAnalysisTaskSPD.cxx:358
 AliAnalysisTaskSPD.cxx:359
 AliAnalysisTaskSPD.cxx:360
 AliAnalysisTaskSPD.cxx:361
 AliAnalysisTaskSPD.cxx:362
 AliAnalysisTaskSPD.cxx:363
 AliAnalysisTaskSPD.cxx:364
 AliAnalysisTaskSPD.cxx:365
 AliAnalysisTaskSPD.cxx:366
 AliAnalysisTaskSPD.cxx:367
 AliAnalysisTaskSPD.cxx:368
 AliAnalysisTaskSPD.cxx:369
 AliAnalysisTaskSPD.cxx:370
 AliAnalysisTaskSPD.cxx:371
 AliAnalysisTaskSPD.cxx:372
 AliAnalysisTaskSPD.cxx:373
 AliAnalysisTaskSPD.cxx:374
 AliAnalysisTaskSPD.cxx:375
 AliAnalysisTaskSPD.cxx:376
 AliAnalysisTaskSPD.cxx:377
 AliAnalysisTaskSPD.cxx:378
 AliAnalysisTaskSPD.cxx:379
 AliAnalysisTaskSPD.cxx:380
 AliAnalysisTaskSPD.cxx:381
 AliAnalysisTaskSPD.cxx:382
 AliAnalysisTaskSPD.cxx:383
 AliAnalysisTaskSPD.cxx:384
 AliAnalysisTaskSPD.cxx:385
 AliAnalysisTaskSPD.cxx:386
 AliAnalysisTaskSPD.cxx:387
 AliAnalysisTaskSPD.cxx:388
 AliAnalysisTaskSPD.cxx:389
 AliAnalysisTaskSPD.cxx:390
 AliAnalysisTaskSPD.cxx:391
 AliAnalysisTaskSPD.cxx:392
 AliAnalysisTaskSPD.cxx:393
 AliAnalysisTaskSPD.cxx:394
 AliAnalysisTaskSPD.cxx:395
 AliAnalysisTaskSPD.cxx:396
 AliAnalysisTaskSPD.cxx:397
 AliAnalysisTaskSPD.cxx:398
 AliAnalysisTaskSPD.cxx:399
 AliAnalysisTaskSPD.cxx:400
 AliAnalysisTaskSPD.cxx:401
 AliAnalysisTaskSPD.cxx:402
 AliAnalysisTaskSPD.cxx:403
 AliAnalysisTaskSPD.cxx:404
 AliAnalysisTaskSPD.cxx:405
 AliAnalysisTaskSPD.cxx:406
 AliAnalysisTaskSPD.cxx:407
 AliAnalysisTaskSPD.cxx:408
 AliAnalysisTaskSPD.cxx:409
 AliAnalysisTaskSPD.cxx:410
 AliAnalysisTaskSPD.cxx:411
 AliAnalysisTaskSPD.cxx:412
 AliAnalysisTaskSPD.cxx:413
 AliAnalysisTaskSPD.cxx:414
 AliAnalysisTaskSPD.cxx:415
 AliAnalysisTaskSPD.cxx:416
 AliAnalysisTaskSPD.cxx:417
 AliAnalysisTaskSPD.cxx:418
 AliAnalysisTaskSPD.cxx:419
 AliAnalysisTaskSPD.cxx:420
 AliAnalysisTaskSPD.cxx:421
 AliAnalysisTaskSPD.cxx:422
 AliAnalysisTaskSPD.cxx:423
 AliAnalysisTaskSPD.cxx:424
 AliAnalysisTaskSPD.cxx:425
 AliAnalysisTaskSPD.cxx:426
 AliAnalysisTaskSPD.cxx:427
 AliAnalysisTaskSPD.cxx:428
 AliAnalysisTaskSPD.cxx:429
 AliAnalysisTaskSPD.cxx:430
 AliAnalysisTaskSPD.cxx:431