]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/ITS/AliAnalysisTaskSDDRP.cxx
Moving PWG1 to PWGPP
[u/mrichter/AliRoot.git] / PWG1 / ITS / AliAnalysisTaskSDDRP.cxx
diff --git a/PWG1/ITS/AliAnalysisTaskSDDRP.cxx b/PWG1/ITS/AliAnalysisTaskSDDRP.cxx
deleted file mode 100644 (file)
index 4a9927a..0000000
+++ /dev/null
@@ -1,619 +0,0 @@
-#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 "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),
-  fUseITSsaTracks(kFALSE),
-  fMinITSpts(3),
-  fMinTPCpts(70),
-  fMinPfordEdx(0.5),
-  fOnlyCINT1BTrig(0),
-  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",3,-1.5,1.5);
-  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* eR=(AliCDBEntry*)man->Get("ITS/Calib/RespSDD");
-    if (eR) {
-      eR->PrintId();
-      eR->PrintMetaData();
-      fResp=(AliITSresponseSDD*)eR->GetObject();
-    }
-  
-    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(0);
-  if(fOnlyCINT1BTrig){
-    if(!esd->IsTriggerClassFired("CINT1B-ABCE-NOPF-ALL")) return;
-    fHistNEvents->Fill(1);
-  }
-  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;
-}
-
-
-
-
-