ROOT logo
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisDataContainer.h"
#include "AliITSRecPoint.h"
#include "AliESDEvent.h"
#include "AliTrackPointArray.h"
#include "AliITSgeomTGeo.h"
#include "AliESDfriend.h"
#include "AliCDBManager.h"
#include "AliCDBEntry.h"
#include "AliITSCalibrationSDD.h"
#include "AliITSresponseSDD.h"
#include "AliTriggerConfiguration.h"
#include "AliGeomManager.h"
#include <TSystem.h>
#include <TTree.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TChain.h>
#include <TGeoGlobalMagField.h>
#include "AliESDInputHandlerRP.h"
/**************************************************************************
 * Copyright(c) 1998-2010, 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.                  *
 **************************************************************************/

//*************************************************************************
// Implementation of class AliAnalysiTaskSDDRP
// AliAnalysisTaskSE to extract from ESD + ESDfreinds + ITS rec points
// performance plots for SDD detector
//
// Author: F. Prino, prino@to.infn.it
//*************************************************************************


#include "AliAnalysisTaskSDDRP.h"

ClassImp(AliAnalysisTaskSDDRP)
//______________________________________________________________________________
AliAnalysisTaskSDDRP::AliAnalysisTaskSDDRP() : AliAnalysisTaskSE("SDD RecPoints"), 
  fOutput(0),
  fHistNEvents(0),
  fHistCluInLay(0),
  fHistAllPMod(0),
  fHistGoodPMod(0),
  fHistBadRegMod(0),
  fHistMissPMod(0),
  fHistSkippedMod(0),
  fHistOutAccMod(0),
  fHistNoRefitMod(0),
  fHistAllPXloc(0),
  fHistGoodPXloc(0),
  fHistBadRegXloc(0),
  fHistMissPXloc(0),
  fHistAllPZloc(0),
  fHistGoodPZloc(0),
  fHistBadRegZloc(0),
  fHistMissPZloc(0),
  fHistdEdxL3VsP(0),
  fHistdEdxL4VsP(0),
  fHistdEdxVsMod(0),
  fRecPMod(0),
  fTrackPMod(0),
  fGoodAnMod(0),
  fRecPLadLay3(0),
  fRecPLadLay4(0),
  fTrackPLadLay3(0),
  fTrackPLadLay4(0),
  fGoodAnLadLay3(0),
  fGoodAnLadLay4(0),
  fDriftTimeRP(0),
  fDriftTimeTPAll(0),
  fDriftTimeTPNoExtra(0),
  fDriftTimeTPExtra(0),
  fCluSizAnVsTime(0),
  fCluSizTbVsTime(0),
  fResp(0),
  fTrigConfig(0),
  fUseITSsaTracks(kFALSE),
  fMinITSpts(3),
  fMinTPCpts(70),
  fMinPfordEdx(0.5),
  fTriggerClass(""),
  fOnlyEventsWithSDD(kTRUE),
  fExcludeBadMod(kFALSE)
{
  //
  DefineOutput(1, TList::Class());
}


//___________________________________________________________________________
AliAnalysisTaskSDDRP::~AliAnalysisTaskSDDRP(){
  //
  if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
    delete fOutput;
    fOutput = 0;
  }
  
}


//___________________________________________________________________________

void AliAnalysisTaskSDDRP::UserCreateOutputObjects() {

  fOutput = new TList();
  fOutput->SetOwner();
  fOutput->SetName("OutputHistos");

  fHistNEvents = new TH1F("hNEvents", "Number of processed events",5,-1.5,3.5);
  fHistNEvents->GetXaxis()->SetBinLabel(1,"All events");
  fHistNEvents->GetXaxis()->SetBinLabel(2,"Selected triggers"); 
  fHistNEvents->GetXaxis()->SetBinLabel(3,"Without SDD"); 
  fHistNEvents->GetXaxis()->SetBinLabel(4,"With SDD"); 
  fHistNEvents->GetXaxis()->SetBinLabel(5,"Analyzed events"); 
  fHistNEvents->Sumw2();
  fHistNEvents->SetMinimum(0);
  fOutput->Add(fHistNEvents);

  fHistCluInLay = new TH1F("hCluInLay","hCluInLay",7,-1.5,5.5);
  fHistCluInLay->Sumw2();
  fHistCluInLay->SetMinimum(0);
  fOutput->Add(fHistCluInLay);

  // -- Module histos

  fHistAllPMod  = new TH1F("hAllPmod","Crossing Tracks vs. Module",260,239.5,499.5);
  fHistAllPMod->Sumw2();
  fHistAllPMod->SetMinimum(0);
  fOutput->Add(fHistAllPMod);

  fHistGoodPMod  = new TH1F("hGoodPmod","PointsAssocToTrack per Module",260,239.5,499.5);
  fHistGoodPMod->Sumw2();
  fHistGoodPMod->SetMinimum(0);
  fOutput->Add(fHistGoodPMod);

  fHistBadRegMod  = new TH1F("hBadRegmod","Tracks in BadRegion per Module",260,239.5,499.5);
  fHistBadRegMod->Sumw2();
  fHistBadRegMod->SetMinimum(0);
  fOutput->Add(fHistBadRegMod);

  fHistMissPMod  = new TH1F("hMissPmod","Missing Points per Module",260,239.5,499.5);
  fHistMissPMod->Sumw2();
  fHistMissPMod->SetMinimum(0);
  fOutput->Add(fHistMissPMod);

  fHistSkippedMod  = new TH1F("hSkippedmod","Tracks in Skipped Module",260,239.5,499.5);
  fHistSkippedMod->Sumw2();
  fHistSkippedMod->SetMinimum(0);
  fOutput->Add(fHistSkippedMod);

  fHistOutAccMod  = new TH1F("hOutAccmod","Tracks outside zAcc per Module",260,239.5,499.5);
  fHistOutAccMod->Sumw2();
  fHistOutAccMod->SetMinimum(0);
  fOutput->Add(fHistOutAccMod);

  fHistNoRefitMod  = new TH1F("hNoRefitmod","Points rejected in refit per Module",260,239.5,499.5);
  fHistNoRefitMod->Sumw2();
  fHistNoRefitMod->SetMinimum(0);
  fOutput->Add(fHistNoRefitMod);



  fRecPMod = new TH1F("hRPMod","Rec Points per Module",260,239.5,499.5);
  fRecPMod->Sumw2();
  fRecPMod->SetMinimum(0);
  fOutput->Add(fRecPMod);

  fTrackPMod = new TH1F("hTPMod","Track Points per Module",260,239.5,499.5);
  fTrackPMod->Sumw2();
  fTrackPMod->SetMinimum(0);
  fOutput->Add(fTrackPMod);

  fGoodAnMod = new TH1F("hGAMod","Good Anodes per Module",260,239.5,499.5);
  fOutput->Add(fGoodAnMod);

  // -- Local coordinates

  fHistAllPXloc  = new TH1F("hAllPxloc","Crossing Tracks vs. Xloc",75, -3.75, 3.75);
  fHistAllPXloc->Sumw2();
  fHistAllPXloc->SetMinimum(0);
  fOutput->Add(fHistAllPXloc);

  fHistGoodPXloc  = new TH1F("hGoodPxloc","PointsAssocToTrack vs. Xloc",75, -3.75, 3.75);
  fHistGoodPXloc->Sumw2();
  fHistGoodPXloc->SetMinimum(0);
  fOutput->Add(fHistGoodPXloc);

  fHistBadRegXloc  = new TH1F("hBadRegxloc","Tracks in BadRegion vs. Xloc",75, -3.75, 3.75);
  fHistBadRegXloc->Sumw2();
  fHistBadRegXloc->SetMinimum(0);
  fOutput->Add(fHistBadRegXloc);

  fHistMissPXloc  = new TH1F("hMissPxloc","Missing Points vs. Xloc",75, -3.75, 3.75);
  fHistMissPXloc->Sumw2();
  fHistMissPXloc->SetMinimum(0);
  fOutput->Add(fHistMissPXloc);

  fHistAllPZloc  = new TH1F("hAllPzloc","Crossing Tracks vs. Zloc",77, -3.85, 3.85);
  fHistAllPZloc->Sumw2();
  fHistAllPZloc->SetMinimum(0);
  fOutput->Add(fHistAllPZloc);

  fHistGoodPZloc  = new TH1F("hGoodPzloc","PointsAssocToTrack vs. Zloc",77, -3.85, 3.85);
  fHistGoodPZloc->Sumw2();
  fHistGoodPZloc->SetMinimum(0);
  fOutput->Add(fHistGoodPZloc);

  fHistBadRegZloc  = new TH1F("hBadRegzloc","Tracks in BadRegion vs. Zloc",77, -3.85, 3.85);
  fHistBadRegZloc->Sumw2();
  fHistBadRegZloc->SetMinimum(0);
  fOutput->Add(fHistBadRegZloc);

  fHistMissPZloc  = new TH1F("hMissPzloc","Missing Points vs. Zloc",77, -3.85, 3.85);
  fHistMissPZloc->Sumw2();
  fHistMissPZloc->SetMinimum(0);
  fOutput->Add(fHistMissPZloc);

  // -- Ladder histos

  fRecPLadLay3 = new TH1F("hRPLad3","Rec Points per Ladder Layer 3",14,-0.5,13.5);
  fRecPLadLay3->Sumw2();
  fRecPLadLay3->SetMinimum(0);
  fOutput->Add(fRecPLadLay3);

  fRecPLadLay4 = new TH1F("hRPLad4","Rec Points per Ladder Layer 4",22,-0.5,21.5);
  fRecPLadLay4->Sumw2();
  fRecPLadLay4->SetMinimum(0);
  fOutput->Add(fRecPLadLay4);

  fTrackPLadLay3 = new TH1F("hTPLad3","Track Points per Ladder Layer 3",14,-0.5,13.5);
  fTrackPLadLay3->Sumw2();
  fTrackPLadLay3->SetMinimum(0);
  fOutput->Add(fTrackPLadLay3);

  fTrackPLadLay4 = new TH1F("hTPLad4","Track Points per Ladder Layer 4",22,-0.5,21.5);
  fTrackPLadLay4->Sumw2();
  fTrackPLadLay4->SetMinimum(0);
  fOutput->Add(fTrackPLadLay4);

  fGoodAnLadLay3 = new TH1F("hGALad3","Good Anodes per Ladder Layer 3",14,-0.5,13.5);
  fOutput->Add(fGoodAnLadLay3);

  fGoodAnLadLay4 = new TH1F("hGALad4","Good Anodes per Ladder Layer 4",22,-0.5,21.5);
  fOutput->Add(fGoodAnLadLay4);

  fDriftTimeRP=new TH1F("hDrTimRP","Drift Time from Rec Points (ns)",640,0.,6400.);
  fDriftTimeRP->Sumw2();
  fDriftTimeRP->SetMinimum(0.);
  fOutput->Add(fDriftTimeRP);

  fDriftTimeTPAll=new TH1F("hDrTimTPAll","Drift Time from Track Points (ns)",640,0.,6400.);
  fDriftTimeTPAll->Sumw2();
  fDriftTimeTPAll->SetMinimum(0.);
  fOutput->Add(fDriftTimeTPAll);

  fDriftTimeTPNoExtra=new TH1F("hDrTimTPNoExtra","Drift Time from Track Points (ns)",640,0.,6400.);
  fDriftTimeTPNoExtra->Sumw2();
  fDriftTimeTPNoExtra->SetMinimum(0.);
  fOutput->Add(fDriftTimeTPNoExtra);

  fDriftTimeTPExtra=new TH1F("hDrTimTPExtra","Drift Time from Track Points (ns)",640,0.,6400.);
  fDriftTimeTPExtra->Sumw2();
  fDriftTimeTPExtra->SetMinimum(0.);
  fOutput->Add(fDriftTimeTPExtra);

  // dE/dx histos

  fHistdEdxL3VsP=new TH2F("hdEdxL3VsP","dE/dx vs. p lay3",40,0.,2.,100,0.,500.);
  fHistdEdxL3VsP->Sumw2();
  fHistdEdxL3VsP->SetMinimum(0);
  fOutput->Add(fHistdEdxL3VsP);

  fHistdEdxL4VsP=new TH2F("hdEdxL4VsP","dE/dx vs. p lay4",40,0.,2.,100,0.,500);
  fHistdEdxL4VsP->Sumw2();
  fHistdEdxL4VsP->SetMinimum(0);
  fOutput->Add(fHistdEdxL4VsP);

  fHistdEdxVsMod=new TH2F("hdEdxVsMod","dE/dx vs. mod",260,239.5,499.5,100,0.,500.);
  fHistdEdxVsMod->Sumw2();
  fHistdEdxVsMod->SetMinimum(0);
  fOutput->Add(fHistdEdxVsMod);

  for(Int_t it=0; it<8; it++){
    fSignalTime[it]=new TH1F(Form("hSigTimeInt%d",it),Form("hSigTimeInt%d",it),100,0.,300.);
    fSignalTime[it]->Sumw2();
    fSignalTime[it]->SetMinimum(0);
    fOutput->Add(fSignalTime[it]);
  }

  // cluster size histos
  
  fCluSizAnVsTime = new TH2F("hCluSizAn","hCluSizAn",40,0.,6400.,15,-0.5,14.5);
  fCluSizAnVsTime->Sumw2();
  fCluSizAnVsTime->SetMinimum(0);
  fOutput->Add(fCluSizAnVsTime);

  fCluSizTbVsTime = new TH2F("hCluSizTb","hCluSizTb",40,0.,6400.,15,-0.5,14.5);
  fCluSizTbVsTime->Sumw2();
  fCluSizTbVsTime->SetMinimum(0);
  fOutput->Add(fCluSizTbVsTime);


    // Read dead channels from OCDB

// == Not allowed in QA train. This is set by AliTaskCDBconnect. (A.G. 14/10/2011)
// If needed for independent use of the task, protect via a flag that is OFF by default.
/*
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) AliFatal("No analysis manager");

  AliCDBManager* man = AliCDBManager::Instance();
  man->SetDefaultStorage("raw://");
  Int_t nrun=mgr->GetRunFromPath();
  man->SetRun(nrun);
*/  
    
  PostData(1, fOutput);

}
//______________________________________________________________________________
void AliAnalysisTaskSDDRP::UserExec(Option_t *)
{
  //
  static Bool_t initCalib = kFALSE;
  AliESDEvent *esd = (AliESDEvent*) (InputEvent());
  if(!esd) {
    printf("AliAnalysisTaskSDDRP::Exec(): bad ESD\n");
    return;
  } 


  if(!ESDfriend()) {
    printf("AliAnalysisTaskSDDRP::Exec(): bad ESDfriend\n");
    return;
  }
  
// Code below moved from UserCreateOutputObjects where the run for OCDB may not 
// be yet properly set. Make sure this is called only once. (A.G. 14/10/2011)

/************/
  if (!initCalib) {
    AliCDBManager* man = AliCDBManager::Instance();
    if (!man) {
       AliFatal("CDB not set but needed by AliAnalysisTaskSDDRP");
       return;
    }   
    AliCDBEntry* eT=(AliCDBEntry*)man->Get("GRP/CTP/Config");
    if(eT){
      eT->PrintId();
      eT->PrintMetaData();
      fTrigConfig=(AliTriggerConfiguration*)eT->GetObject();
    }
    if(!eT || !fTrigConfig){
      AliError("Cannot retrieve CDB entry for GRP/CTP/Config");
      return;      
    }
    AliCDBEntry* eR=(AliCDBEntry*)man->Get("ITS/Calib/RespSDD");
    if (eR) {
      eR->PrintId();
      eR->PrintMetaData();
      fResp=(AliITSresponseSDD*)eR->GetObject();
    }else{
      AliError("Cannot retrieve CDB entry for ITS/Calib/RespSDD");
      return;
    }
    AliCDBEntry* eC=(AliCDBEntry*)man->Get("ITS/Calib/CalibSDD");
    if (!eC) {
       AliError("Cannot retrieve CDB entry for ITS/Calib/CalibSDD");
       return;
    }   
    Int_t countGood3[14];
    Int_t countGood4[22];
    Int_t countGoodMod[260];
    eC->PrintId();
    eC->PrintMetaData();
    TObjArray* calsdd=(TObjArray*)eC->GetObject();
    for(Int_t ilad=0;ilad<14;ilad++) countGood3[ilad]=0;
    for(Int_t ilad=0;ilad<22;ilad++) countGood4[ilad]=0;
    for(Int_t imod=0;imod<260;imod++) countGoodMod[imod]=0;
    for(Int_t imod=0;imod<260;imod++){
      AliITSCalibrationSDD* cal=(AliITSCalibrationSDD*)calsdd->At(imod);
      if(cal->IsBad()) continue;
	   Int_t modId=imod+AliITSgeomTGeo::GetModuleIndex(3,1,1);
      Int_t lay,lad,det;
      AliITSgeomTGeo::GetModuleId(modId,lay,lad,det);
      if(fExcludeBadMod && !CheckModule(lay,lad,det)) continue;
      for(Int_t ian=0; ian<512; ian++){
        if(cal->IsBadChannel(ian)) continue;
        countGoodMod[imod]++;
        if(lay==3) countGood3[lad-1]++;
        else if(lay==4) countGood4[lad-1]++;
      }
    }
  
    for(Int_t imod=0;imod<260;imod++) fGoodAnMod->SetBinContent(imod+1,countGoodMod[imod]);
    fGoodAnMod->SetMinimum(0);
    for(Int_t ilad=0;ilad<14;ilad++) fGoodAnLadLay3->SetBinContent(ilad+1,countGood3[ilad]);
    fGoodAnLadLay3->SetMinimum(0);    
    for(Int_t ilad=0;ilad<22;ilad++) fGoodAnLadLay4->SetBinContent(ilad+1,countGood4[ilad]);
    fGoodAnLadLay4->SetMinimum(0);
    initCalib = kTRUE;
  }  
/************/
  
  PostData(1, fOutput);

  fHistNEvents->Fill(-1);

  TString firedTriggerClasses=esd->GetFiredTriggerClasses();
  if(!firedTriggerClasses.Contains(fTriggerClass.Data())) return;
  fHistNEvents->Fill(0);

  Bool_t sddOK=esd->IsDetectorInTriggerCluster("ITSSDD",fTrigConfig);
  if(!sddOK) fHistNEvents->Fill(1.);
  else fHistNEvents->Fill(2.);
  if(fOnlyEventsWithSDD && !sddOK) return; 
  else fHistNEvents->Fill(3.);
  
  const AliTrackPointArray *array = 0;
  Int_t ntracks = esd->GetNumberOfTracks();
  for (Int_t itrack=0; itrack < ntracks; itrack++) {
    AliESDtrack * track = esd->GetTrack(itrack);
    if (!track) continue;

    Bool_t accept=kTRUE;
    if(fUseITSsaTracks){ 
      if(track->GetNcls(1)>0) accept=kFALSE;
    }else{
      if(track->GetNcls(1)<fMinTPCpts) accept=kFALSE;
    }
    if(track->GetNcls(0) < fMinITSpts) accept=kFALSE;    
    Int_t trstatus=track->GetStatus();
    if(!(trstatus&AliESDtrack::kITSrefit)) accept=kFALSE;
    if(!accept) continue;

    fHistCluInLay->Fill(-1.); // bin -1 counts accepted tracks
    UChar_t clumap=track->GetITSClusterMap();
    for(Int_t iBit=0; iBit<6; iBit++){
      if(clumap&(1<<iBit)) fHistCluInLay->Fill(iBit);
    }


    Double_t dedx[4];
    track->GetITSdEdxSamples(dedx);
    Float_t mom=track->P();
    Int_t iMod,status;
    Float_t xloc,zloc;
    for(Int_t iLay=2; iLay<=3; iLay++){
      Bool_t ok=track->GetITSModuleIndexInfo(iLay,iMod,status,xloc,zloc);
      if(ok){
	iMod+=240;
	fHistAllPMod->Fill(iMod);
	fHistAllPXloc->Fill(xloc);
	fHistAllPZloc->Fill(zloc);
	if(status==1){
	  fHistGoodPMod->Fill(iMod);
	  fHistGoodPXloc->Fill(xloc);
	  fHistGoodPZloc->Fill(zloc);
	  if(mom>fMinPfordEdx) fHistdEdxVsMod->Fill(iMod,dedx[iLay-2]);
	  if(iLay==2) fHistdEdxL3VsP->Fill(mom,dedx[0]);
	  else fHistdEdxL4VsP->Fill(mom,dedx[1]);
	}
	else if(status==2){ 
	  fHistBadRegMod->Fill(iMod);
	  fHistBadRegXloc->Fill(xloc);
	  fHistBadRegZloc->Fill(zloc);
	}
	else if(status==3) fHistSkippedMod->Fill(iMod);
	else if(status==4) fHistOutAccMod->Fill(iMod);
	else if(status==5){
	  fHistMissPMod->Fill(iMod);
	  fHistMissPXloc->Fill(xloc);
	  fHistMissPZloc->Fill(zloc);
	}
	else if(status==6) fHistNoRefitMod->Fill(iMod);
      }
    }


    array = track->GetTrackPointArray();
    if(!array) continue;
    for(Int_t ipt=0; ipt<array->GetNPoints(); ipt++) {
      AliTrackPoint point;
      Int_t modId;
      array->GetPoint(point,ipt);
      Int_t volId = point.GetVolumeID();
      Int_t layerId = AliGeomManager::VolUIDToLayer(volId,modId);
      if(layerId<3 || layerId>4) continue;
      modId+=AliITSgeomTGeo::GetModuleIndex(layerId,1,1);
      Int_t lay,lad,det;
      AliITSgeomTGeo::GetModuleId(modId,lay,lad,det);
      if(fExcludeBadMod && !CheckModule(lay,lad,det)) continue;
      fTrackPMod->Fill(modId);
      fDriftTimeTPAll->Fill(point.GetDriftTime());
      if(point.IsExtra()) fDriftTimeTPExtra->Fill(point.GetDriftTime());
      else fDriftTimeTPNoExtra->Fill(point.GetDriftTime());
      Float_t dtime=point.GetDriftTime()-fResp->GetTimeZero(modId);
      Int_t cluTyp=point.GetClusterType();
      Int_t clSizAn=(cluTyp>>8)&0xFF;
      Int_t clSizTb=cluTyp&0xFF;
      fCluSizAnVsTime->Fill(dtime,clSizAn);
      fCluSizTbVsTime->Fill(dtime,clSizTb);
      Int_t theBin=int(dtime/6500.*8.);
      if(layerId==3){ 
	fTrackPLadLay3->Fill(lad-1);	  
	if(dedx[0]>0. && track->P()>fMinPfordEdx) fSignalTime[theBin]->Fill(dedx[0]);
      }
      if(layerId==4){
	fTrackPLadLay4->Fill(lad-1);
	if(dedx[1]>0.&& track->P()>fMinPfordEdx) fSignalTime[theBin]->Fill(dedx[1]);
      }
    }
  }

  AliESDInputHandlerRP *hand = dynamic_cast<AliESDInputHandlerRP*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
  TTree* tR = 0;
  if (hand) tR = hand->GetTreeR("ITS");
  if (tR){
    TClonesArray *ITSrec= new TClonesArray("AliITSRecPoint");
    TBranch *branch =tR->GetBranch("ITSRecPoints");
    branch->SetAddress(&ITSrec);
    for (Int_t modId=240; modId<500; modId++){
      Int_t lay,lad,det;
      AliITSgeomTGeo::GetModuleId(modId,lay,lad,det);
      if(fExcludeBadMod && !CheckModule(lay,lad,det)) continue;
      branch->GetEvent(modId);
      Int_t nrecp = ITSrec->GetEntries();	
      fRecPMod->Fill(modId,nrecp);	  
      if(lay==3) fRecPLadLay3->Fill(lad-1,nrecp);
      if(lay==4) fRecPLadLay4->Fill(lad-1,nrecp);
      for(Int_t irec=0;irec<nrecp;irec++) {
	AliITSRecPoint *recp = (AliITSRecPoint*)ITSrec->At(irec);
	fDriftTimeRP->Fill(recp->GetDriftTime());
      }
    }
    ITSrec->Delete();
    delete ITSrec;
  }
  PostData(1,fOutput);
  
}
//______________________________________________________________________________
Bool_t AliAnalysisTaskSDDRP::CheckModule(Int_t lay, Int_t lad, Int_t det) const{
  //
  if(lay==4){
    if(lad==3 && det==5) return kFALSE; // 1500 V
    if(lad==3 && det==6) return kFALSE; // 0 V
    if(lad==3 && det==7) return kFALSE; // 1500 V
    if(lad==4 && det==1) return kFALSE; // 0 V
    if(lad==4 && det==2) return kFALSE; // 1500 V
    if(lad==7 && det==5) return kFALSE; // 0 MV
    if(lad==9 && det==3) return kFALSE; // 1500 V
    if(lad==9 && det==4) return kFALSE; // 0 V
    if(lad==9 && det==5) return kFALSE; // 1500 V
    if(lad==11 && det==6) return kFALSE; // 1500 V
    if(lad==11 && det==7) return kFALSE; // 0 V
    if(lad==11 && det==8) return kFALSE; // 1500 V
    if(lad==18 && det==5) return kFALSE; // 1500 V
    if(lad==18 && det==6) return kFALSE; // 0 V
    if(lad==18 && det==7) return kFALSE; // 1500 V
    if(lad==22 && det==1) return kFALSE; // 0 V
    if(lad==22 && det==2) return kFALSE; // 1500 V
  }
  if(lay==3){
    if(lad==4 && det==4) return kFALSE; // 1500 V 
    if(lad==3) return kFALSE;  // swapped in geometry
  }
  return kTRUE;
}

//______________________________________________________________________________
void AliAnalysisTaskSDDRP::Terminate(Option_t */*option*/)
{
  // Terminate analysis
  fOutput = dynamic_cast<TList*> (GetOutputData(1));
  if (!fOutput) {     
    printf("ERROR: fOutput not available\n");
    return;
  }
  fHistNEvents= dynamic_cast<TH1F*>(fOutput->FindObject("hNEvents"));
  fHistCluInLay= dynamic_cast<TH1F*>(fOutput->FindObject("hCluInLay"));

  fHistAllPMod= dynamic_cast<TH1F*>(fOutput->FindObject("hAllPMod"));
  fHistGoodPMod= dynamic_cast<TH1F*>(fOutput->FindObject("hGoodPMod"));
  fHistBadRegMod= dynamic_cast<TH1F*>(fOutput->FindObject("hBadRegMod"));
  fHistMissPMod= dynamic_cast<TH1F*>(fOutput->FindObject("hMissPMod"));
  fHistSkippedMod= dynamic_cast<TH1F*>(fOutput->FindObject("hSkippedMod"));
  fHistOutAccMod= dynamic_cast<TH1F*>(fOutput->FindObject("hOutAccMod"));
  fHistNoRefitMod= dynamic_cast<TH1F*>(fOutput->FindObject("hNoRefitMod"));

  fHistAllPXloc= dynamic_cast<TH1F*>(fOutput->FindObject("hAllPxloc"));
  fHistGoodPXloc= dynamic_cast<TH1F*>(fOutput->FindObject("hGoodPxloc"));
  fHistBadRegXloc= dynamic_cast<TH1F*>(fOutput->FindObject("hBadRegxloc"));
  fHistMissPXloc= dynamic_cast<TH1F*>(fOutput->FindObject("hMissPxloc"));
  fHistAllPZloc= dynamic_cast<TH1F*>(fOutput->FindObject("hAllPzloc"));
  fHistGoodPZloc= dynamic_cast<TH1F*>(fOutput->FindObject("hGoodPzloc"));
  fHistBadRegZloc= dynamic_cast<TH1F*>(fOutput->FindObject("fHistBadRegZloc"));
  fHistMissPZloc= dynamic_cast<TH1F*>(fOutput->FindObject("hMissPzloc"));

  fHistdEdxL3VsP= dynamic_cast<TH2F*>(fOutput->FindObject("hdEdxL3VsP"));
  fHistdEdxL4VsP= dynamic_cast<TH2F*>(fOutput->FindObject("hdEdxL4VsP"));
  fHistdEdxVsMod= dynamic_cast<TH2F*>(fOutput->FindObject("hdEdxVsMod"));

  fRecPMod= dynamic_cast<TH1F*>(fOutput->FindObject("hRPMod"));
  fTrackPMod= dynamic_cast<TH1F*>(fOutput->FindObject("hTPMod"));
  fGoodAnMod= dynamic_cast<TH1F*>(fOutput->FindObject("hGAMod"));

  fRecPLadLay3= dynamic_cast<TH1F*>(fOutput->FindObject("hRPLad3"));
  fRecPLadLay4= dynamic_cast<TH1F*>(fOutput->FindObject("hRPLad4"));
  fTrackPLadLay3= dynamic_cast<TH1F*>(fOutput->FindObject("hTPLad3"));
  fTrackPLadLay4= dynamic_cast<TH1F*>(fOutput->FindObject("hTPLad4"));
  fGoodAnLadLay3= dynamic_cast<TH1F*>(fOutput->FindObject("hGALad3"));
  fGoodAnLadLay4= dynamic_cast<TH1F*>(fOutput->FindObject("hGALad4"));

  fDriftTimeRP= dynamic_cast<TH1F*>(fOutput->FindObject("hDrTimRP"));
  fDriftTimeTPAll= dynamic_cast<TH1F*>(fOutput->FindObject("hDrTimTPAll"));
  fDriftTimeTPNoExtra= dynamic_cast<TH1F*>(fOutput->FindObject("hDrTimTPNoExtra"));
  fDriftTimeTPExtra= dynamic_cast<TH1F*>(fOutput->FindObject("hDrTimTPExtra"));

  for(Int_t it=0; it<8; it++){
    fSignalTime[it]= dynamic_cast<TH1F*>(fOutput->FindObject(Form("hSigTimeInt%d",it)));
  }
  fCluSizAnVsTime= dynamic_cast<TH2F*>(fOutput->FindObject("hCluSizAn"));
  fCluSizTbVsTime= dynamic_cast<TH2F*>(fOutput->FindObject("hCluSizTb"));

  return;
}





 AliAnalysisTaskSDDRP.cxx:1
 AliAnalysisTaskSDDRP.cxx:2
 AliAnalysisTaskSDDRP.cxx:3
 AliAnalysisTaskSDDRP.cxx:4
 AliAnalysisTaskSDDRP.cxx:5
 AliAnalysisTaskSDDRP.cxx:6
 AliAnalysisTaskSDDRP.cxx:7
 AliAnalysisTaskSDDRP.cxx:8
 AliAnalysisTaskSDDRP.cxx:9
 AliAnalysisTaskSDDRP.cxx:10
 AliAnalysisTaskSDDRP.cxx:11
 AliAnalysisTaskSDDRP.cxx:12
 AliAnalysisTaskSDDRP.cxx:13
 AliAnalysisTaskSDDRP.cxx:14
 AliAnalysisTaskSDDRP.cxx:15
 AliAnalysisTaskSDDRP.cxx:16
 AliAnalysisTaskSDDRP.cxx:17
 AliAnalysisTaskSDDRP.cxx:18
 AliAnalysisTaskSDDRP.cxx:19
 AliAnalysisTaskSDDRP.cxx:20
 AliAnalysisTaskSDDRP.cxx:21
 AliAnalysisTaskSDDRP.cxx:22
 AliAnalysisTaskSDDRP.cxx:23
 AliAnalysisTaskSDDRP.cxx:24
 AliAnalysisTaskSDDRP.cxx:25
 AliAnalysisTaskSDDRP.cxx:26
 AliAnalysisTaskSDDRP.cxx:27
 AliAnalysisTaskSDDRP.cxx:28
 AliAnalysisTaskSDDRP.cxx:29
 AliAnalysisTaskSDDRP.cxx:30
 AliAnalysisTaskSDDRP.cxx:31
 AliAnalysisTaskSDDRP.cxx:32
 AliAnalysisTaskSDDRP.cxx:33
 AliAnalysisTaskSDDRP.cxx:34
 AliAnalysisTaskSDDRP.cxx:35
 AliAnalysisTaskSDDRP.cxx:36
 AliAnalysisTaskSDDRP.cxx:37
 AliAnalysisTaskSDDRP.cxx:38
 AliAnalysisTaskSDDRP.cxx:39
 AliAnalysisTaskSDDRP.cxx:40
 AliAnalysisTaskSDDRP.cxx:41
 AliAnalysisTaskSDDRP.cxx:42
 AliAnalysisTaskSDDRP.cxx:43
 AliAnalysisTaskSDDRP.cxx:44
 AliAnalysisTaskSDDRP.cxx:45
 AliAnalysisTaskSDDRP.cxx:46
 AliAnalysisTaskSDDRP.cxx:47
 AliAnalysisTaskSDDRP.cxx:48
 AliAnalysisTaskSDDRP.cxx:49
 AliAnalysisTaskSDDRP.cxx:50
 AliAnalysisTaskSDDRP.cxx:51
 AliAnalysisTaskSDDRP.cxx:52
 AliAnalysisTaskSDDRP.cxx:53
 AliAnalysisTaskSDDRP.cxx:54
 AliAnalysisTaskSDDRP.cxx:55
 AliAnalysisTaskSDDRP.cxx:56
 AliAnalysisTaskSDDRP.cxx:57
 AliAnalysisTaskSDDRP.cxx:58
 AliAnalysisTaskSDDRP.cxx:59
 AliAnalysisTaskSDDRP.cxx:60
 AliAnalysisTaskSDDRP.cxx:61
 AliAnalysisTaskSDDRP.cxx:62
 AliAnalysisTaskSDDRP.cxx:63
 AliAnalysisTaskSDDRP.cxx:64
 AliAnalysisTaskSDDRP.cxx:65
 AliAnalysisTaskSDDRP.cxx:66
 AliAnalysisTaskSDDRP.cxx:67
 AliAnalysisTaskSDDRP.cxx:68
 AliAnalysisTaskSDDRP.cxx:69
 AliAnalysisTaskSDDRP.cxx:70
 AliAnalysisTaskSDDRP.cxx:71
 AliAnalysisTaskSDDRP.cxx:72
 AliAnalysisTaskSDDRP.cxx:73
 AliAnalysisTaskSDDRP.cxx:74
 AliAnalysisTaskSDDRP.cxx:75
 AliAnalysisTaskSDDRP.cxx:76
 AliAnalysisTaskSDDRP.cxx:77
 AliAnalysisTaskSDDRP.cxx:78
 AliAnalysisTaskSDDRP.cxx:79
 AliAnalysisTaskSDDRP.cxx:80
 AliAnalysisTaskSDDRP.cxx:81
 AliAnalysisTaskSDDRP.cxx:82
 AliAnalysisTaskSDDRP.cxx:83
 AliAnalysisTaskSDDRP.cxx:84
 AliAnalysisTaskSDDRP.cxx:85
 AliAnalysisTaskSDDRP.cxx:86
 AliAnalysisTaskSDDRP.cxx:87
 AliAnalysisTaskSDDRP.cxx:88
 AliAnalysisTaskSDDRP.cxx:89
 AliAnalysisTaskSDDRP.cxx:90
 AliAnalysisTaskSDDRP.cxx:91
 AliAnalysisTaskSDDRP.cxx:92
 AliAnalysisTaskSDDRP.cxx:93
 AliAnalysisTaskSDDRP.cxx:94
 AliAnalysisTaskSDDRP.cxx:95
 AliAnalysisTaskSDDRP.cxx:96
 AliAnalysisTaskSDDRP.cxx:97
 AliAnalysisTaskSDDRP.cxx:98
 AliAnalysisTaskSDDRP.cxx:99
 AliAnalysisTaskSDDRP.cxx:100
 AliAnalysisTaskSDDRP.cxx:101
 AliAnalysisTaskSDDRP.cxx:102
 AliAnalysisTaskSDDRP.cxx:103
 AliAnalysisTaskSDDRP.cxx:104
 AliAnalysisTaskSDDRP.cxx:105
 AliAnalysisTaskSDDRP.cxx:106
 AliAnalysisTaskSDDRP.cxx:107
 AliAnalysisTaskSDDRP.cxx:108
 AliAnalysisTaskSDDRP.cxx:109
 AliAnalysisTaskSDDRP.cxx:110
 AliAnalysisTaskSDDRP.cxx:111
 AliAnalysisTaskSDDRP.cxx:112
 AliAnalysisTaskSDDRP.cxx:113
 AliAnalysisTaskSDDRP.cxx:114
 AliAnalysisTaskSDDRP.cxx:115
 AliAnalysisTaskSDDRP.cxx:116
 AliAnalysisTaskSDDRP.cxx:117
 AliAnalysisTaskSDDRP.cxx:118
 AliAnalysisTaskSDDRP.cxx:119
 AliAnalysisTaskSDDRP.cxx:120
 AliAnalysisTaskSDDRP.cxx:121
 AliAnalysisTaskSDDRP.cxx:122
 AliAnalysisTaskSDDRP.cxx:123
 AliAnalysisTaskSDDRP.cxx:124
 AliAnalysisTaskSDDRP.cxx:125
 AliAnalysisTaskSDDRP.cxx:126
 AliAnalysisTaskSDDRP.cxx:127
 AliAnalysisTaskSDDRP.cxx:128
 AliAnalysisTaskSDDRP.cxx:129
 AliAnalysisTaskSDDRP.cxx:130
 AliAnalysisTaskSDDRP.cxx:131
 AliAnalysisTaskSDDRP.cxx:132
 AliAnalysisTaskSDDRP.cxx:133
 AliAnalysisTaskSDDRP.cxx:134
 AliAnalysisTaskSDDRP.cxx:135
 AliAnalysisTaskSDDRP.cxx:136
 AliAnalysisTaskSDDRP.cxx:137
 AliAnalysisTaskSDDRP.cxx:138
 AliAnalysisTaskSDDRP.cxx:139
 AliAnalysisTaskSDDRP.cxx:140
 AliAnalysisTaskSDDRP.cxx:141
 AliAnalysisTaskSDDRP.cxx:142
 AliAnalysisTaskSDDRP.cxx:143
 AliAnalysisTaskSDDRP.cxx:144
 AliAnalysisTaskSDDRP.cxx:145
 AliAnalysisTaskSDDRP.cxx:146
 AliAnalysisTaskSDDRP.cxx:147
 AliAnalysisTaskSDDRP.cxx:148
 AliAnalysisTaskSDDRP.cxx:149
 AliAnalysisTaskSDDRP.cxx:150
 AliAnalysisTaskSDDRP.cxx:151
 AliAnalysisTaskSDDRP.cxx:152
 AliAnalysisTaskSDDRP.cxx:153
 AliAnalysisTaskSDDRP.cxx:154
 AliAnalysisTaskSDDRP.cxx:155
 AliAnalysisTaskSDDRP.cxx:156
 AliAnalysisTaskSDDRP.cxx:157
 AliAnalysisTaskSDDRP.cxx:158
 AliAnalysisTaskSDDRP.cxx:159
 AliAnalysisTaskSDDRP.cxx:160
 AliAnalysisTaskSDDRP.cxx:161
 AliAnalysisTaskSDDRP.cxx:162
 AliAnalysisTaskSDDRP.cxx:163
 AliAnalysisTaskSDDRP.cxx:164
 AliAnalysisTaskSDDRP.cxx:165
 AliAnalysisTaskSDDRP.cxx:166
 AliAnalysisTaskSDDRP.cxx:167
 AliAnalysisTaskSDDRP.cxx:168
 AliAnalysisTaskSDDRP.cxx:169
 AliAnalysisTaskSDDRP.cxx:170
 AliAnalysisTaskSDDRP.cxx:171
 AliAnalysisTaskSDDRP.cxx:172
 AliAnalysisTaskSDDRP.cxx:173
 AliAnalysisTaskSDDRP.cxx:174
 AliAnalysisTaskSDDRP.cxx:175
 AliAnalysisTaskSDDRP.cxx:176
 AliAnalysisTaskSDDRP.cxx:177
 AliAnalysisTaskSDDRP.cxx:178
 AliAnalysisTaskSDDRP.cxx:179
 AliAnalysisTaskSDDRP.cxx:180
 AliAnalysisTaskSDDRP.cxx:181
 AliAnalysisTaskSDDRP.cxx:182
 AliAnalysisTaskSDDRP.cxx:183
 AliAnalysisTaskSDDRP.cxx:184
 AliAnalysisTaskSDDRP.cxx:185
 AliAnalysisTaskSDDRP.cxx:186
 AliAnalysisTaskSDDRP.cxx:187
 AliAnalysisTaskSDDRP.cxx:188
 AliAnalysisTaskSDDRP.cxx:189
 AliAnalysisTaskSDDRP.cxx:190
 AliAnalysisTaskSDDRP.cxx:191
 AliAnalysisTaskSDDRP.cxx:192
 AliAnalysisTaskSDDRP.cxx:193
 AliAnalysisTaskSDDRP.cxx:194
 AliAnalysisTaskSDDRP.cxx:195
 AliAnalysisTaskSDDRP.cxx:196
 AliAnalysisTaskSDDRP.cxx:197
 AliAnalysisTaskSDDRP.cxx:198
 AliAnalysisTaskSDDRP.cxx:199
 AliAnalysisTaskSDDRP.cxx:200
 AliAnalysisTaskSDDRP.cxx:201
 AliAnalysisTaskSDDRP.cxx:202
 AliAnalysisTaskSDDRP.cxx:203
 AliAnalysisTaskSDDRP.cxx:204
 AliAnalysisTaskSDDRP.cxx:205
 AliAnalysisTaskSDDRP.cxx:206
 AliAnalysisTaskSDDRP.cxx:207
 AliAnalysisTaskSDDRP.cxx:208
 AliAnalysisTaskSDDRP.cxx:209
 AliAnalysisTaskSDDRP.cxx:210
 AliAnalysisTaskSDDRP.cxx:211
 AliAnalysisTaskSDDRP.cxx:212
 AliAnalysisTaskSDDRP.cxx:213
 AliAnalysisTaskSDDRP.cxx:214
 AliAnalysisTaskSDDRP.cxx:215
 AliAnalysisTaskSDDRP.cxx:216
 AliAnalysisTaskSDDRP.cxx:217
 AliAnalysisTaskSDDRP.cxx:218
 AliAnalysisTaskSDDRP.cxx:219
 AliAnalysisTaskSDDRP.cxx:220
 AliAnalysisTaskSDDRP.cxx:221
 AliAnalysisTaskSDDRP.cxx:222
 AliAnalysisTaskSDDRP.cxx:223
 AliAnalysisTaskSDDRP.cxx:224
 AliAnalysisTaskSDDRP.cxx:225
 AliAnalysisTaskSDDRP.cxx:226
 AliAnalysisTaskSDDRP.cxx:227
 AliAnalysisTaskSDDRP.cxx:228
 AliAnalysisTaskSDDRP.cxx:229
 AliAnalysisTaskSDDRP.cxx:230
 AliAnalysisTaskSDDRP.cxx:231
 AliAnalysisTaskSDDRP.cxx:232
 AliAnalysisTaskSDDRP.cxx:233
 AliAnalysisTaskSDDRP.cxx:234
 AliAnalysisTaskSDDRP.cxx:235
 AliAnalysisTaskSDDRP.cxx:236
 AliAnalysisTaskSDDRP.cxx:237
 AliAnalysisTaskSDDRP.cxx:238
 AliAnalysisTaskSDDRP.cxx:239
 AliAnalysisTaskSDDRP.cxx:240
 AliAnalysisTaskSDDRP.cxx:241
 AliAnalysisTaskSDDRP.cxx:242
 AliAnalysisTaskSDDRP.cxx:243
 AliAnalysisTaskSDDRP.cxx:244
 AliAnalysisTaskSDDRP.cxx:245
 AliAnalysisTaskSDDRP.cxx:246
 AliAnalysisTaskSDDRP.cxx:247
 AliAnalysisTaskSDDRP.cxx:248
 AliAnalysisTaskSDDRP.cxx:249
 AliAnalysisTaskSDDRP.cxx:250
 AliAnalysisTaskSDDRP.cxx:251
 AliAnalysisTaskSDDRP.cxx:252
 AliAnalysisTaskSDDRP.cxx:253
 AliAnalysisTaskSDDRP.cxx:254
 AliAnalysisTaskSDDRP.cxx:255
 AliAnalysisTaskSDDRP.cxx:256
 AliAnalysisTaskSDDRP.cxx:257
 AliAnalysisTaskSDDRP.cxx:258
 AliAnalysisTaskSDDRP.cxx:259
 AliAnalysisTaskSDDRP.cxx:260
 AliAnalysisTaskSDDRP.cxx:261
 AliAnalysisTaskSDDRP.cxx:262
 AliAnalysisTaskSDDRP.cxx:263
 AliAnalysisTaskSDDRP.cxx:264
 AliAnalysisTaskSDDRP.cxx:265
 AliAnalysisTaskSDDRP.cxx:266
 AliAnalysisTaskSDDRP.cxx:267
 AliAnalysisTaskSDDRP.cxx:268
 AliAnalysisTaskSDDRP.cxx:269
 AliAnalysisTaskSDDRP.cxx:270
 AliAnalysisTaskSDDRP.cxx:271
 AliAnalysisTaskSDDRP.cxx:272
 AliAnalysisTaskSDDRP.cxx:273
 AliAnalysisTaskSDDRP.cxx:274
 AliAnalysisTaskSDDRP.cxx:275
 AliAnalysisTaskSDDRP.cxx:276
 AliAnalysisTaskSDDRP.cxx:277
 AliAnalysisTaskSDDRP.cxx:278
 AliAnalysisTaskSDDRP.cxx:279
 AliAnalysisTaskSDDRP.cxx:280
 AliAnalysisTaskSDDRP.cxx:281
 AliAnalysisTaskSDDRP.cxx:282
 AliAnalysisTaskSDDRP.cxx:283
 AliAnalysisTaskSDDRP.cxx:284
 AliAnalysisTaskSDDRP.cxx:285
 AliAnalysisTaskSDDRP.cxx:286
 AliAnalysisTaskSDDRP.cxx:287
 AliAnalysisTaskSDDRP.cxx:288
 AliAnalysisTaskSDDRP.cxx:289
 AliAnalysisTaskSDDRP.cxx:290
 AliAnalysisTaskSDDRP.cxx:291
 AliAnalysisTaskSDDRP.cxx:292
 AliAnalysisTaskSDDRP.cxx:293
 AliAnalysisTaskSDDRP.cxx:294
 AliAnalysisTaskSDDRP.cxx:295
 AliAnalysisTaskSDDRP.cxx:296
 AliAnalysisTaskSDDRP.cxx:297
 AliAnalysisTaskSDDRP.cxx:298
 AliAnalysisTaskSDDRP.cxx:299
 AliAnalysisTaskSDDRP.cxx:300
 AliAnalysisTaskSDDRP.cxx:301
 AliAnalysisTaskSDDRP.cxx:302
 AliAnalysisTaskSDDRP.cxx:303
 AliAnalysisTaskSDDRP.cxx:304
 AliAnalysisTaskSDDRP.cxx:305
 AliAnalysisTaskSDDRP.cxx:306
 AliAnalysisTaskSDDRP.cxx:307
 AliAnalysisTaskSDDRP.cxx:308
 AliAnalysisTaskSDDRP.cxx:309
 AliAnalysisTaskSDDRP.cxx:310
 AliAnalysisTaskSDDRP.cxx:311
 AliAnalysisTaskSDDRP.cxx:312
 AliAnalysisTaskSDDRP.cxx:313
 AliAnalysisTaskSDDRP.cxx:314
 AliAnalysisTaskSDDRP.cxx:315
 AliAnalysisTaskSDDRP.cxx:316
 AliAnalysisTaskSDDRP.cxx:317
 AliAnalysisTaskSDDRP.cxx:318
 AliAnalysisTaskSDDRP.cxx:319
 AliAnalysisTaskSDDRP.cxx:320
 AliAnalysisTaskSDDRP.cxx:321
 AliAnalysisTaskSDDRP.cxx:322
 AliAnalysisTaskSDDRP.cxx:323
 AliAnalysisTaskSDDRP.cxx:324
 AliAnalysisTaskSDDRP.cxx:325
 AliAnalysisTaskSDDRP.cxx:326
 AliAnalysisTaskSDDRP.cxx:327
 AliAnalysisTaskSDDRP.cxx:328
 AliAnalysisTaskSDDRP.cxx:329
 AliAnalysisTaskSDDRP.cxx:330
 AliAnalysisTaskSDDRP.cxx:331
 AliAnalysisTaskSDDRP.cxx:332
 AliAnalysisTaskSDDRP.cxx:333
 AliAnalysisTaskSDDRP.cxx:334
 AliAnalysisTaskSDDRP.cxx:335
 AliAnalysisTaskSDDRP.cxx:336
 AliAnalysisTaskSDDRP.cxx:337
 AliAnalysisTaskSDDRP.cxx:338
 AliAnalysisTaskSDDRP.cxx:339
 AliAnalysisTaskSDDRP.cxx:340
 AliAnalysisTaskSDDRP.cxx:341
 AliAnalysisTaskSDDRP.cxx:342
 AliAnalysisTaskSDDRP.cxx:343
 AliAnalysisTaskSDDRP.cxx:344
 AliAnalysisTaskSDDRP.cxx:345
 AliAnalysisTaskSDDRP.cxx:346
 AliAnalysisTaskSDDRP.cxx:347
 AliAnalysisTaskSDDRP.cxx:348
 AliAnalysisTaskSDDRP.cxx:349
 AliAnalysisTaskSDDRP.cxx:350
 AliAnalysisTaskSDDRP.cxx:351
 AliAnalysisTaskSDDRP.cxx:352
 AliAnalysisTaskSDDRP.cxx:353
 AliAnalysisTaskSDDRP.cxx:354
 AliAnalysisTaskSDDRP.cxx:355
 AliAnalysisTaskSDDRP.cxx:356
 AliAnalysisTaskSDDRP.cxx:357
 AliAnalysisTaskSDDRP.cxx:358
 AliAnalysisTaskSDDRP.cxx:359
 AliAnalysisTaskSDDRP.cxx:360
 AliAnalysisTaskSDDRP.cxx:361
 AliAnalysisTaskSDDRP.cxx:362
 AliAnalysisTaskSDDRP.cxx:363
 AliAnalysisTaskSDDRP.cxx:364
 AliAnalysisTaskSDDRP.cxx:365
 AliAnalysisTaskSDDRP.cxx:366
 AliAnalysisTaskSDDRP.cxx:367
 AliAnalysisTaskSDDRP.cxx:368
 AliAnalysisTaskSDDRP.cxx:369
 AliAnalysisTaskSDDRP.cxx:370
 AliAnalysisTaskSDDRP.cxx:371
 AliAnalysisTaskSDDRP.cxx:372
 AliAnalysisTaskSDDRP.cxx:373
 AliAnalysisTaskSDDRP.cxx:374
 AliAnalysisTaskSDDRP.cxx:375
 AliAnalysisTaskSDDRP.cxx:376
 AliAnalysisTaskSDDRP.cxx:377
 AliAnalysisTaskSDDRP.cxx:378
 AliAnalysisTaskSDDRP.cxx:379
 AliAnalysisTaskSDDRP.cxx:380
 AliAnalysisTaskSDDRP.cxx:381
 AliAnalysisTaskSDDRP.cxx:382
 AliAnalysisTaskSDDRP.cxx:383
 AliAnalysisTaskSDDRP.cxx:384
 AliAnalysisTaskSDDRP.cxx:385
 AliAnalysisTaskSDDRP.cxx:386
 AliAnalysisTaskSDDRP.cxx:387
 AliAnalysisTaskSDDRP.cxx:388
 AliAnalysisTaskSDDRP.cxx:389
 AliAnalysisTaskSDDRP.cxx:390
 AliAnalysisTaskSDDRP.cxx:391
 AliAnalysisTaskSDDRP.cxx:392
 AliAnalysisTaskSDDRP.cxx:393
 AliAnalysisTaskSDDRP.cxx:394
 AliAnalysisTaskSDDRP.cxx:395
 AliAnalysisTaskSDDRP.cxx:396
 AliAnalysisTaskSDDRP.cxx:397
 AliAnalysisTaskSDDRP.cxx:398
 AliAnalysisTaskSDDRP.cxx:399
 AliAnalysisTaskSDDRP.cxx:400
 AliAnalysisTaskSDDRP.cxx:401
 AliAnalysisTaskSDDRP.cxx:402
 AliAnalysisTaskSDDRP.cxx:403
 AliAnalysisTaskSDDRP.cxx:404
 AliAnalysisTaskSDDRP.cxx:405
 AliAnalysisTaskSDDRP.cxx:406
 AliAnalysisTaskSDDRP.cxx:407
 AliAnalysisTaskSDDRP.cxx:408
 AliAnalysisTaskSDDRP.cxx:409
 AliAnalysisTaskSDDRP.cxx:410
 AliAnalysisTaskSDDRP.cxx:411
 AliAnalysisTaskSDDRP.cxx:412
 AliAnalysisTaskSDDRP.cxx:413
 AliAnalysisTaskSDDRP.cxx:414
 AliAnalysisTaskSDDRP.cxx:415
 AliAnalysisTaskSDDRP.cxx:416
 AliAnalysisTaskSDDRP.cxx:417
 AliAnalysisTaskSDDRP.cxx:418
 AliAnalysisTaskSDDRP.cxx:419
 AliAnalysisTaskSDDRP.cxx:420
 AliAnalysisTaskSDDRP.cxx:421
 AliAnalysisTaskSDDRP.cxx:422
 AliAnalysisTaskSDDRP.cxx:423
 AliAnalysisTaskSDDRP.cxx:424
 AliAnalysisTaskSDDRP.cxx:425
 AliAnalysisTaskSDDRP.cxx:426
 AliAnalysisTaskSDDRP.cxx:427
 AliAnalysisTaskSDDRP.cxx:428
 AliAnalysisTaskSDDRP.cxx:429
 AliAnalysisTaskSDDRP.cxx:430
 AliAnalysisTaskSDDRP.cxx:431
 AliAnalysisTaskSDDRP.cxx:432
 AliAnalysisTaskSDDRP.cxx:433
 AliAnalysisTaskSDDRP.cxx:434
 AliAnalysisTaskSDDRP.cxx:435
 AliAnalysisTaskSDDRP.cxx:436
 AliAnalysisTaskSDDRP.cxx:437
 AliAnalysisTaskSDDRP.cxx:438
 AliAnalysisTaskSDDRP.cxx:439
 AliAnalysisTaskSDDRP.cxx:440
 AliAnalysisTaskSDDRP.cxx:441
 AliAnalysisTaskSDDRP.cxx:442
 AliAnalysisTaskSDDRP.cxx:443
 AliAnalysisTaskSDDRP.cxx:444
 AliAnalysisTaskSDDRP.cxx:445
 AliAnalysisTaskSDDRP.cxx:446
 AliAnalysisTaskSDDRP.cxx:447
 AliAnalysisTaskSDDRP.cxx:448
 AliAnalysisTaskSDDRP.cxx:449
 AliAnalysisTaskSDDRP.cxx:450
 AliAnalysisTaskSDDRP.cxx:451
 AliAnalysisTaskSDDRP.cxx:452
 AliAnalysisTaskSDDRP.cxx:453
 AliAnalysisTaskSDDRP.cxx:454
 AliAnalysisTaskSDDRP.cxx:455
 AliAnalysisTaskSDDRP.cxx:456
 AliAnalysisTaskSDDRP.cxx:457
 AliAnalysisTaskSDDRP.cxx:458
 AliAnalysisTaskSDDRP.cxx:459
 AliAnalysisTaskSDDRP.cxx:460
 AliAnalysisTaskSDDRP.cxx:461
 AliAnalysisTaskSDDRP.cxx:462
 AliAnalysisTaskSDDRP.cxx:463
 AliAnalysisTaskSDDRP.cxx:464
 AliAnalysisTaskSDDRP.cxx:465
 AliAnalysisTaskSDDRP.cxx:466
 AliAnalysisTaskSDDRP.cxx:467
 AliAnalysisTaskSDDRP.cxx:468
 AliAnalysisTaskSDDRP.cxx:469
 AliAnalysisTaskSDDRP.cxx:470
 AliAnalysisTaskSDDRP.cxx:471
 AliAnalysisTaskSDDRP.cxx:472
 AliAnalysisTaskSDDRP.cxx:473
 AliAnalysisTaskSDDRP.cxx:474
 AliAnalysisTaskSDDRP.cxx:475
 AliAnalysisTaskSDDRP.cxx:476
 AliAnalysisTaskSDDRP.cxx:477
 AliAnalysisTaskSDDRP.cxx:478
 AliAnalysisTaskSDDRP.cxx:479
 AliAnalysisTaskSDDRP.cxx:480
 AliAnalysisTaskSDDRP.cxx:481
 AliAnalysisTaskSDDRP.cxx:482
 AliAnalysisTaskSDDRP.cxx:483
 AliAnalysisTaskSDDRP.cxx:484
 AliAnalysisTaskSDDRP.cxx:485
 AliAnalysisTaskSDDRP.cxx:486
 AliAnalysisTaskSDDRP.cxx:487
 AliAnalysisTaskSDDRP.cxx:488
 AliAnalysisTaskSDDRP.cxx:489
 AliAnalysisTaskSDDRP.cxx:490
 AliAnalysisTaskSDDRP.cxx:491
 AliAnalysisTaskSDDRP.cxx:492
 AliAnalysisTaskSDDRP.cxx:493
 AliAnalysisTaskSDDRP.cxx:494
 AliAnalysisTaskSDDRP.cxx:495
 AliAnalysisTaskSDDRP.cxx:496
 AliAnalysisTaskSDDRP.cxx:497
 AliAnalysisTaskSDDRP.cxx:498
 AliAnalysisTaskSDDRP.cxx:499
 AliAnalysisTaskSDDRP.cxx:500
 AliAnalysisTaskSDDRP.cxx:501
 AliAnalysisTaskSDDRP.cxx:502
 AliAnalysisTaskSDDRP.cxx:503
 AliAnalysisTaskSDDRP.cxx:504
 AliAnalysisTaskSDDRP.cxx:505
 AliAnalysisTaskSDDRP.cxx:506
 AliAnalysisTaskSDDRP.cxx:507
 AliAnalysisTaskSDDRP.cxx:508
 AliAnalysisTaskSDDRP.cxx:509
 AliAnalysisTaskSDDRP.cxx:510
 AliAnalysisTaskSDDRP.cxx:511
 AliAnalysisTaskSDDRP.cxx:512
 AliAnalysisTaskSDDRP.cxx:513
 AliAnalysisTaskSDDRP.cxx:514
 AliAnalysisTaskSDDRP.cxx:515
 AliAnalysisTaskSDDRP.cxx:516
 AliAnalysisTaskSDDRP.cxx:517
 AliAnalysisTaskSDDRP.cxx:518
 AliAnalysisTaskSDDRP.cxx:519
 AliAnalysisTaskSDDRP.cxx:520
 AliAnalysisTaskSDDRP.cxx:521
 AliAnalysisTaskSDDRP.cxx:522
 AliAnalysisTaskSDDRP.cxx:523
 AliAnalysisTaskSDDRP.cxx:524
 AliAnalysisTaskSDDRP.cxx:525
 AliAnalysisTaskSDDRP.cxx:526
 AliAnalysisTaskSDDRP.cxx:527
 AliAnalysisTaskSDDRP.cxx:528
 AliAnalysisTaskSDDRP.cxx:529
 AliAnalysisTaskSDDRP.cxx:530
 AliAnalysisTaskSDDRP.cxx:531
 AliAnalysisTaskSDDRP.cxx:532
 AliAnalysisTaskSDDRP.cxx:533
 AliAnalysisTaskSDDRP.cxx:534
 AliAnalysisTaskSDDRP.cxx:535
 AliAnalysisTaskSDDRP.cxx:536
 AliAnalysisTaskSDDRP.cxx:537
 AliAnalysisTaskSDDRP.cxx:538
 AliAnalysisTaskSDDRP.cxx:539
 AliAnalysisTaskSDDRP.cxx:540
 AliAnalysisTaskSDDRP.cxx:541
 AliAnalysisTaskSDDRP.cxx:542
 AliAnalysisTaskSDDRP.cxx:543
 AliAnalysisTaskSDDRP.cxx:544
 AliAnalysisTaskSDDRP.cxx:545
 AliAnalysisTaskSDDRP.cxx:546
 AliAnalysisTaskSDDRP.cxx:547
 AliAnalysisTaskSDDRP.cxx:548
 AliAnalysisTaskSDDRP.cxx:549
 AliAnalysisTaskSDDRP.cxx:550
 AliAnalysisTaskSDDRP.cxx:551
 AliAnalysisTaskSDDRP.cxx:552
 AliAnalysisTaskSDDRP.cxx:553
 AliAnalysisTaskSDDRP.cxx:554
 AliAnalysisTaskSDDRP.cxx:555
 AliAnalysisTaskSDDRP.cxx:556
 AliAnalysisTaskSDDRP.cxx:557
 AliAnalysisTaskSDDRP.cxx:558
 AliAnalysisTaskSDDRP.cxx:559
 AliAnalysisTaskSDDRP.cxx:560
 AliAnalysisTaskSDDRP.cxx:561
 AliAnalysisTaskSDDRP.cxx:562
 AliAnalysisTaskSDDRP.cxx:563
 AliAnalysisTaskSDDRP.cxx:564
 AliAnalysisTaskSDDRP.cxx:565
 AliAnalysisTaskSDDRP.cxx:566
 AliAnalysisTaskSDDRP.cxx:567
 AliAnalysisTaskSDDRP.cxx:568
 AliAnalysisTaskSDDRP.cxx:569
 AliAnalysisTaskSDDRP.cxx:570
 AliAnalysisTaskSDDRP.cxx:571
 AliAnalysisTaskSDDRP.cxx:572
 AliAnalysisTaskSDDRP.cxx:573
 AliAnalysisTaskSDDRP.cxx:574
 AliAnalysisTaskSDDRP.cxx:575
 AliAnalysisTaskSDDRP.cxx:576
 AliAnalysisTaskSDDRP.cxx:577
 AliAnalysisTaskSDDRP.cxx:578
 AliAnalysisTaskSDDRP.cxx:579
 AliAnalysisTaskSDDRP.cxx:580
 AliAnalysisTaskSDDRP.cxx:581
 AliAnalysisTaskSDDRP.cxx:582
 AliAnalysisTaskSDDRP.cxx:583
 AliAnalysisTaskSDDRP.cxx:584
 AliAnalysisTaskSDDRP.cxx:585
 AliAnalysisTaskSDDRP.cxx:586
 AliAnalysisTaskSDDRP.cxx:587
 AliAnalysisTaskSDDRP.cxx:588
 AliAnalysisTaskSDDRP.cxx:589
 AliAnalysisTaskSDDRP.cxx:590
 AliAnalysisTaskSDDRP.cxx:591
 AliAnalysisTaskSDDRP.cxx:592
 AliAnalysisTaskSDDRP.cxx:593
 AliAnalysisTaskSDDRP.cxx:594
 AliAnalysisTaskSDDRP.cxx:595
 AliAnalysisTaskSDDRP.cxx:596
 AliAnalysisTaskSDDRP.cxx:597
 AliAnalysisTaskSDDRP.cxx:598
 AliAnalysisTaskSDDRP.cxx:599
 AliAnalysisTaskSDDRP.cxx:600
 AliAnalysisTaskSDDRP.cxx:601
 AliAnalysisTaskSDDRP.cxx:602
 AliAnalysisTaskSDDRP.cxx:603
 AliAnalysisTaskSDDRP.cxx:604
 AliAnalysisTaskSDDRP.cxx:605
 AliAnalysisTaskSDDRP.cxx:606
 AliAnalysisTaskSDDRP.cxx:607
 AliAnalysisTaskSDDRP.cxx:608
 AliAnalysisTaskSDDRP.cxx:609
 AliAnalysisTaskSDDRP.cxx:610
 AliAnalysisTaskSDDRP.cxx:611
 AliAnalysisTaskSDDRP.cxx:612
 AliAnalysisTaskSDDRP.cxx:613
 AliAnalysisTaskSDDRP.cxx:614
 AliAnalysisTaskSDDRP.cxx:615
 AliAnalysisTaskSDDRP.cxx:616
 AliAnalysisTaskSDDRP.cxx:617
 AliAnalysisTaskSDDRP.cxx:618
 AliAnalysisTaskSDDRP.cxx:619
 AliAnalysisTaskSDDRP.cxx:620
 AliAnalysisTaskSDDRP.cxx:621
 AliAnalysisTaskSDDRP.cxx:622
 AliAnalysisTaskSDDRP.cxx:623
 AliAnalysisTaskSDDRP.cxx:624
 AliAnalysisTaskSDDRP.cxx:625
 AliAnalysisTaskSDDRP.cxx:626
 AliAnalysisTaskSDDRP.cxx:627
 AliAnalysisTaskSDDRP.cxx:628
 AliAnalysisTaskSDDRP.cxx:629
 AliAnalysisTaskSDDRP.cxx:630
 AliAnalysisTaskSDDRP.cxx:631
 AliAnalysisTaskSDDRP.cxx:632
 AliAnalysisTaskSDDRP.cxx:633
 AliAnalysisTaskSDDRP.cxx:634
 AliAnalysisTaskSDDRP.cxx:635
 AliAnalysisTaskSDDRP.cxx:636
 AliAnalysisTaskSDDRP.cxx:637
 AliAnalysisTaskSDDRP.cxx:638
 AliAnalysisTaskSDDRP.cxx:639
 AliAnalysisTaskSDDRP.cxx:640
 AliAnalysisTaskSDDRP.cxx:641
 AliAnalysisTaskSDDRP.cxx:642
 AliAnalysisTaskSDDRP.cxx:643
 AliAnalysisTaskSDDRP.cxx:644