]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/ITS/AliAnalysisTaskITSTrackingCheck.cxx
Remove a run from LHC10e wo AODs; added run list for the new PbPb MC LHC11a10b_bis
[u/mrichter/AliRoot.git] / PWG1 / ITS / AliAnalysisTaskITSTrackingCheck.cxx
index ea20b7255b8be8a9d47bc884838c02c1b6898e13..d3cc9b2027284536f53057d1681bdfbbf52138dc 100644 (file)
@@ -66,13 +66,21 @@ fReadMC(kFALSE),
 fReadRPLabels(kFALSE),
 fFillNtuples(kFALSE),
 fUseITSSAforNtuples(kFALSE),
+fUsePhysSel(kFALSE),
+fRejPileupSPD(kFALSE),
 fESD(0), 
+fMinMult(0),
+fMaxMult(1000000),
 fOutput(0), 
+fHistNEvents(0),
+fHistNEventsFrac(0),
 fHistNtracks(0),
 fHistNclsITSMI(0),
 fHistNclsITSSA(0),
 fHistNclsITSSAInAcc(0),
 fHistClusterMapITSMI(0),
+fHistClusterMapITSMIokA(0),
+fHistClusterMapITSMIokB(0),
 fHistClusterMapITSMIok(0),
 fHistClusterMapITSMIbad(0),
 fHistClusterMapITSMIskipped(0),
@@ -99,9 +107,56 @@ fHistClusterMapITSSAokoutinzbadInAcc(0),
 fHistClusterMapModuleITSSAokInAcc(0),
 fHistClusterMapModuleITSSAbadInAcc(0),
 fHistClusterMapModuleITSSAnoclsInAcc(0),
+fHistClusterMapModuleITSMIokInAcc(0),
+fHistClusterMapModuleITSMIbadInAcc(0),
+fHistClusterMapModuleITSMInoclsInAcc(0),
+fHistNClustersMapModule(0),
+fHistZatSPDouter0ok(0),
+fHistZatSPDouter1ok(0),
+fHistZatSPDouter2ok(0),
+fHistZatSPDouter3ok(0),
+fHistZatSPDouter0notok(0),
+fHistZatSPDouter1notok(0),
+fHistZatSPDouter2notok(0),
+fHistZatSPDouter3notok(0),
+fHistxlocSDDok(0),
+fHistzlocSDDok(0),
+fHistxlocVSmodSDDok(0),
+fHistxlocSDDall(0),
+fHistzlocSDDall(0),
+fHistxlocSDDA(0),
+fHistxlocSDDB(0),
+fHistzlocSDDA(0),
+fHistzlocSDDB(0),
 fHistPhiTPCInAcc(0),
+fHistEtaTPCInAcc(0),
+fHistEtaTPCInAccA(0),
+fHistEtaTPCInAccB(0),
+fHistNclsTPCInAccA(0),
+fHistNclsTPCInAccB(0),
+fHistChi2PerClsTPCInAccA(0),
+fHistChi2PerClsTPCInAccB(0),
+fHistChi2PerClsITSInAccA(0),
+fHistChi2PerClsITSInAccB(0),
 fHistPtTPC(0),
 fHistPtTPCInAcc(0),
+fHistPtTPCInAccMCtwoSPD(0),
+fHistPtTPCInAccMConeSPD(0),
+fHistdEdxVSPtTPCInAcc(0),
+fHistdEdxVSPtITSTPCsel(0),
+fHistTPCclsVSPtTPCInAcc(0),
+fHistTPCclsVSPtITSMISPDInAcc(0),
+fHistPtVSphiTPCInAcc(0),
+fHistPtTPCInAccNoTRDout(0),
+fHistPtTPCInAccNoTOFout(0),
+fHistPtTPCInAccWithPtTPCAtInnerWall(0),
+fHistPtTPCInAccWithPtTPCAtVtx(0),
+fHistDeltaPtTPC(0),
+fHistPtTPCInAccP(0),
+fHistPtTPCInAccS(0),
+fHistPtTPCInAccPfromStrange(0),
+fHistPtTPCInAccSfromStrange(0),
+fHistPtTPCInAccSfromMat(0),
 fHistPtITSMI2(0),
 fHistPtITSMI3(0),
 fHistPtITSMI4(0),
@@ -116,16 +171,140 @@ fHistPtITSMI5InAcc(0),
 fHistPtITSMI6InAcc(0),
 fHistPtITSMISPDInAcc(0),
 fHistPtITSMIoneSPDInAcc(0),
+fHistPtITSMIoneSPDInAccShared(0),
+fHistPtITSMIoneSPDInAccSharedSPD(0),
+fHistPtITSMISPD1InAccShared(0),
+fHistPtITSMISPD2InAccShared(0),
+fHistPtITSMIoneSPDInAccSharedFake(0),
+fHistPtITSMIoneSPDInAccSharedSPDFake(0),
+fHistPhiITSMI2InAcc(0),
+fHistPhiITSMI3InAcc(0),
+fHistPhiITSMI4InAcc(0),
+fHistPhiITSMI5InAcc(0),
+fHistPhiITSMI6InAcc(0),
+fHistPhiITSMISPDInAcc(0),
+fHistPhiITSMIoneSPDInAcc(0),
+fHistEtaITSMI2InAcc(0),
+fHistEtaITSMI3InAcc(0),
+fHistEtaITSMI4InAcc(0),
+fHistEtaITSMI5InAcc(0),
+fHistEtaITSMI6InAcc(0),
+fHistEtaITSMISPDInAcc(0),
+fHistEtaITSMIoneSPDInAcc(0),
+fHistPtITSMI2InAccFake(0),
+fHistPtITSMI3InAccFake(0),
+fHistPtITSMI4InAccFake(0),
+fHistPtITSMI5InAccFake(0),
+fHistPtITSMI6InAccFake(0),
+fHistPtITSMISPDInAccFake(0),
+fHistPtITSMIoneSPDInAccFake(0),
+fHistPtITSMIoneSPDthreeSDDSSDInAcc(0),
+fHistPtITSTPCsel(0),
+fHistPtITSTPCselP(0),
+fHistPtITSTPCselS(0),
+fHistPtITSTPCselFake(0),
+fHistPtITSTPCselPfromStrange(0),
+fHistPtITSTPCselSfromStrange(0),
+fHistPtITSTPCselSfromMat(0),
+fHistPtITSMI2InAccP(0),
+fHistPtITSMI3InAccP(0),
+fHistPtITSMI4InAccP(0),
+fHistPtITSMI5InAccP(0),
+fHistPtITSMI6InAccP(0),
+fHistPtITSMISPDInAccP(0),
+fHistPtITSMIoneSPDInAccP(0),
+fHistPtITSMI2InAccS(0),
+fHistPtITSMI3InAccS(0),
+fHistPtITSMI4InAccS(0),
+fHistPtITSMI5InAccS(0),
+fHistPtITSMI6InAccS(0),
+fHistPtITSMISPDInAccS(0),
+fHistPtITSMIoneSPDInAccS(0),
 fHistPtITSMIokbadoutinz6(0),
 fHistPtITSMIokbadoutinz4InAcc(0),
 fHistPtITSMIokbadoutinz5InAcc(0),
 fHistPtITSMIokbadoutinz6InAcc(0),
 fHistPhiITSMIokbadoutinz6InAcc(0),
+fHistRProdVtxInAccP(0),
+fHistRProdVtxInAccS(0),
+fHistd0rphiTPCInAccA(0),
+fHistd0rphiTPCInAccB(0),
+fHistd0zTPCInAccA(0),
+fHistd0zTPCInAccB(0),
+fHistd0rphiTPCInAccP150200(0),
+fHistd0rphiTPCInAccP500700(0),
+fHistd0rphiTPCInAccP10001500(0),
+fHistd0rphiTPCInAccS150200(0),
+fHistd0rphiTPCInAccS500700(0),
+fHistd0rphiTPCInAccS10001500(0),
+fHistd0rphiITSMISPDInAccP150200(0),
+fHistd0rphiITSMISPDInAccP500700(0),
+fHistd0rphiITSMISPDInAccP10001500(0),
+fHistd0rphiITSMISPDInAccS150200(0),
+fHistd0rphiITSMISPDInAccS500700(0),
+fHistd0rphiITSMISPDInAccS10001500(0),
+fHistd0rphiITSMIoneSPDInAccP150200(0),
+fHistd0rphiITSMIoneSPDInAccP350450(0),
+fHistd0rphiITSMIoneSPDInAccP500700(0),
+fHistd0rphiITSMIoneSPDInAccP10001500(0),
+fHistd0rphiITSMIoneSPDInAccP25004000(0),
+fHistd0rphiITSMIoneSPDInAccP40008000(0),
+fHistd0rphiITSMIoneSPDInAccA(0),
+fHistd0rphiITSMIoneSPDInAccB(0),
+fHistd0zITSMIoneSPDInAccA(0),
+fHistd0zITSMIoneSPDInAccB(0),
+fHistd0zITSMIoneSPDInAccP150200(0),
+fHistd0zITSMIoneSPDInAccP500700(0),
+fHistd0zITSMIoneSPDInAccP10001500(0),
+fHistd0zVSetaTPCInAccP10001500(0),
+fHistd0rphiVSphiITSMIoneSPDInAccP10001500(0),
+fHistd0rphiVSetaITSMIoneSPDInAccP10001500(0),
+fHistd0rphiITSMIoneSPDInAccS150200(0),
+fHistd0rphiITSMIoneSPDInAccS350450(0),
+fHistd0rphiITSMIoneSPDInAccS500700(0),
+fHistd0rphiITSMIoneSPDInAccS500700from22(0),
+fHistd0rphiITSMIoneSPDInAccS500700from211(0),
+fHistd0rphiITSMIoneSPDInAccS500700from310(0),
+fHistd0rphiITSMIoneSPDInAccS500700from321(0),
+fHistd0rphiITSMIoneSPDInAccS500700from3122(0),
+fHistd0rphiITSMIoneSPDInAccS10001500(0),
+fHistd0rphiITSMIoneSPDInAccS25004000(0),
+fHistd0rphiITSMIoneSPDInAccS40008000(0),
+fHistd0rphiITSMIoneSPDInAccS150200fromStrange(0),
+fHistd0rphiITSMIoneSPDInAccS150200fromMat(0),
+fHistd0rphiITSMIoneSPDInAccS350450fromStrange(0),
+fHistd0rphiITSMIoneSPDInAccS350450fromMat(0),
+fHistd0rphiITSMIoneSPDInAccS500700fromStrange(0),
+fHistd0rphiITSMIoneSPDInAccS500700fromMat(0),
+fHistd0rphiITSMIoneSPDInAccS10001500fromStrange(0),
+fHistd0rphiITSMIoneSPDInAccS10001500fromMat(0),
+fHistd0rphiITSMIoneSPDInAccS25004000fromStrange(0),
+fHistd0rphiITSMIoneSPDInAccS25004000fromMat(0),
+fHistd0rphiITSMIoneSPDInAccS40008000fromStrange(0),
+fHistd0rphiITSMIoneSPDInAccS40008000fromMat(0),
+fHistd0zITSMIoneSPDInAccS150200(0),
+fHistd0zITSMIoneSPDInAccS500700(0),
+fHistd0zITSMIoneSPDInAccS10001500(0),
+fHistPDGMoth(0),
+fHistPDGMoth150200(0),
+fHistPDGMoth500700(0),
+fHistPDGMoth10001500(0),
+fHistPDGTrk(0),
+fHistITSRedChi2NonFakePt02(0),
+fHistITSRedChi2FakePt02(0),
+fHistITSRedChi2NonFakePt05(0),
+fHistITSRedChi2FakePt05(0),
+fHistITSRedChi2NonFakePt1(0),
+fHistITSRedChi2FakePt1(0),
 fNtupleESDTracks(0),
 fNtupleITSAlignExtra(0),
-fNtupleITSAlignSPDTracklets(0)
+fNtupleITSAlignSPDTracklets(0),
+fESDtrackCutsTPC(0),
+fESDtrackCutsITSTPC(0)
 {
   // Constructor
+  for(Int_t i=0; i<11; i++) fCountsPerPtBin[i]=0;
+
 }
 
 //________________________________________________________________________
@@ -136,7 +315,10 @@ fReadRPLabels(kFALSE),
 fFillNtuples(kFALSE),
 fUseITSSAforNtuples(kFALSE),
 fUsePhysSel(kFALSE),
+fRejPileupSPD(kFALSE),
 fESD(0), 
+fMinMult(0),
+fMaxMult(1000000),
 fOutput(0), 
 fHistNEvents(0),
 fHistNEventsFrac(0),
@@ -145,6 +327,8 @@ fHistNclsITSMI(0),
 fHistNclsITSSA(0),
 fHistNclsITSSAInAcc(0),
 fHistClusterMapITSMI(0),
+fHistClusterMapITSMIokA(0),
+fHistClusterMapITSMIokB(0),
 fHistClusterMapITSMIok(0),
 fHistClusterMapITSMIbad(0),
 fHistClusterMapITSMIskipped(0),
@@ -174,16 +358,42 @@ fHistClusterMapModuleITSSAnoclsInAcc(0),
 fHistClusterMapModuleITSMIokInAcc(0),
 fHistClusterMapModuleITSMIbadInAcc(0),
 fHistClusterMapModuleITSMInoclsInAcc(0),
+fHistNClustersMapModule(0),
+fHistZatSPDouter0ok(0),
+fHistZatSPDouter1ok(0),
+fHistZatSPDouter2ok(0),
+fHistZatSPDouter3ok(0),
+fHistZatSPDouter0notok(0),
+fHistZatSPDouter1notok(0),
+fHistZatSPDouter2notok(0),
+fHistZatSPDouter3notok(0),
 fHistxlocSDDok(0),
 fHistzlocSDDok(0),
 fHistxlocVSmodSDDok(0),
 fHistxlocSDDall(0),
 fHistzlocSDDall(0),
+fHistxlocSDDA(0),
+fHistxlocSDDB(0),
+fHistzlocSDDA(0),
+fHistzlocSDDB(0),
 fHistPhiTPCInAcc(0),
+fHistEtaTPCInAcc(0),
+fHistEtaTPCInAccA(0),
+fHistEtaTPCInAccB(0),
+fHistNclsTPCInAccA(0),
+fHistNclsTPCInAccB(0),
+fHistChi2PerClsTPCInAccA(0),
+fHistChi2PerClsTPCInAccB(0),
+fHistChi2PerClsITSInAccA(0),
+fHistChi2PerClsITSInAccB(0),
 fHistPtTPC(0),
 fHistPtTPCInAcc(0),
+fHistPtTPCInAccMCtwoSPD(0),
+fHistPtTPCInAccMConeSPD(0),
 fHistdEdxVSPtTPCInAcc(0),
 fHistdEdxVSPtITSTPCsel(0),
+fHistTPCclsVSPtTPCInAcc(0),
+fHistTPCclsVSPtITSMISPDInAcc(0),
 fHistPtVSphiTPCInAcc(0),
 fHistPtTPCInAccNoTRDout(0),
 fHistPtTPCInAccNoTOFout(0),
@@ -209,9 +419,38 @@ fHistPtITSMI5InAcc(0),
 fHistPtITSMI6InAcc(0),
 fHistPtITSMISPDInAcc(0),
 fHistPtITSMIoneSPDInAcc(0),
+fHistPtITSMIoneSPDInAccShared(0),
+fHistPtITSMIoneSPDInAccSharedSPD(0),
+fHistPtITSMISPD1InAccShared(0),
+fHistPtITSMISPD2InAccShared(0),
+fHistPtITSMIoneSPDInAccSharedFake(0),
+fHistPtITSMIoneSPDInAccSharedSPDFake(0),
+fHistPhiITSMI2InAcc(0),
+fHistPhiITSMI3InAcc(0),
+fHistPhiITSMI4InAcc(0),
+fHistPhiITSMI5InAcc(0),
+fHistPhiITSMI6InAcc(0),
+fHistPhiITSMISPDInAcc(0),
+fHistPhiITSMIoneSPDInAcc(0),
+fHistEtaITSMI2InAcc(0),
+fHistEtaITSMI3InAcc(0),
+fHistEtaITSMI4InAcc(0),
+fHistEtaITSMI5InAcc(0),
+fHistEtaITSMI6InAcc(0),
+fHistEtaITSMISPDInAcc(0),
+fHistEtaITSMIoneSPDInAcc(0),
+fHistPtITSMI2InAccFake(0),
+fHistPtITSMI3InAccFake(0),
+fHistPtITSMI4InAccFake(0),
+fHistPtITSMI5InAccFake(0),
+fHistPtITSMI6InAccFake(0),
+fHistPtITSMISPDInAccFake(0),
+fHistPtITSMIoneSPDInAccFake(0),
+fHistPtITSMIoneSPDthreeSDDSSDInAcc(0),
 fHistPtITSTPCsel(0),
 fHistPtITSTPCselP(0),
 fHistPtITSTPCselS(0),
+fHistPtITSTPCselFake(0),
 fHistPtITSTPCselPfromStrange(0),
 fHistPtITSTPCselSfromStrange(0),
 fHistPtITSTPCselSfromMat(0),
@@ -236,6 +475,10 @@ fHistPtITSMIokbadoutinz6InAcc(0),
 fHistPhiITSMIokbadoutinz6InAcc(0),
 fHistRProdVtxInAccP(0),
 fHistRProdVtxInAccS(0),
+fHistd0rphiTPCInAccA(0),
+fHistd0rphiTPCInAccB(0),
+fHistd0zTPCInAccA(0),
+fHistd0zTPCInAccB(0),
 fHistd0rphiTPCInAccP150200(0),
 fHistd0rphiTPCInAccP500700(0),
 fHistd0rphiTPCInAccP10001500(0),
@@ -249,20 +492,44 @@ fHistd0rphiITSMISPDInAccS150200(0),
 fHistd0rphiITSMISPDInAccS500700(0),
 fHistd0rphiITSMISPDInAccS10001500(0),
 fHistd0rphiITSMIoneSPDInAccP150200(0),
+fHistd0rphiITSMIoneSPDInAccP350450(0),
 fHistd0rphiITSMIoneSPDInAccP500700(0),
 fHistd0rphiITSMIoneSPDInAccP10001500(0),
+fHistd0rphiITSMIoneSPDInAccP25004000(0),
+fHistd0rphiITSMIoneSPDInAccP40008000(0),
+fHistd0rphiITSMIoneSPDInAccA(0),
+fHistd0rphiITSMIoneSPDInAccB(0),
+fHistd0zITSMIoneSPDInAccA(0),
+fHistd0zITSMIoneSPDInAccB(0),
 fHistd0zITSMIoneSPDInAccP150200(0),
 fHistd0zITSMIoneSPDInAccP500700(0),
 fHistd0zITSMIoneSPDInAccP10001500(0),
+fHistd0zVSetaTPCInAccP10001500(0),
 fHistd0rphiVSphiITSMIoneSPDInAccP10001500(0),
 fHistd0rphiVSetaITSMIoneSPDInAccP10001500(0),
 fHistd0rphiITSMIoneSPDInAccS150200(0),
+fHistd0rphiITSMIoneSPDInAccS350450(0),
 fHistd0rphiITSMIoneSPDInAccS500700(0),
 fHistd0rphiITSMIoneSPDInAccS500700from22(0),
 fHistd0rphiITSMIoneSPDInAccS500700from211(0),
 fHistd0rphiITSMIoneSPDInAccS500700from310(0),
 fHistd0rphiITSMIoneSPDInAccS500700from321(0),
+fHistd0rphiITSMIoneSPDInAccS500700from3122(0),
 fHistd0rphiITSMIoneSPDInAccS10001500(0),
+fHistd0rphiITSMIoneSPDInAccS25004000(0),
+fHistd0rphiITSMIoneSPDInAccS40008000(0),
+fHistd0rphiITSMIoneSPDInAccS150200fromStrange(0),
+fHistd0rphiITSMIoneSPDInAccS150200fromMat(0),
+fHistd0rphiITSMIoneSPDInAccS350450fromStrange(0),
+fHistd0rphiITSMIoneSPDInAccS350450fromMat(0),
+fHistd0rphiITSMIoneSPDInAccS500700fromStrange(0),
+fHistd0rphiITSMIoneSPDInAccS500700fromMat(0),
+fHistd0rphiITSMIoneSPDInAccS10001500fromStrange(0),
+fHistd0rphiITSMIoneSPDInAccS10001500fromMat(0),
+fHistd0rphiITSMIoneSPDInAccS25004000fromStrange(0),
+fHistd0rphiITSMIoneSPDInAccS25004000fromMat(0),
+fHistd0rphiITSMIoneSPDInAccS40008000fromStrange(0),
+fHistd0rphiITSMIoneSPDInAccS40008000fromMat(0),
 fHistd0zITSMIoneSPDInAccS150200(0),
 fHistd0zITSMIoneSPDInAccS500700(0),
 fHistd0zITSMIoneSPDInAccS10001500(0),
@@ -271,6 +538,12 @@ fHistPDGMoth150200(0),
 fHistPDGMoth500700(0),
 fHistPDGMoth10001500(0),
 fHistPDGTrk(0),
+fHistITSRedChi2NonFakePt02(0),
+fHistITSRedChi2FakePt02(0),
+fHistITSRedChi2NonFakePt05(0),
+fHistITSRedChi2FakePt05(0),
+fHistITSRedChi2NonFakePt1(0),
+fHistITSRedChi2FakePt1(0),
 fNtupleESDTracks(0),
 fNtupleITSAlignExtra(0),
 fNtupleITSAlignSPDTracklets(0),
@@ -298,8 +571,6 @@ AliAnalysisTaskITSTrackingCheck::~AliAnalysisTaskITSTrackingCheck()
     fOutput = 0;
   }
 }
-
-//________________________________________________________________________
 //________________________________________________________________________
 void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
 {
@@ -309,6 +580,7 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   gStyle->SetHistLineWidth(2);
 
   Int_t nPtBins=34;
+  //Float_t xPtBins[35]={0,0.025,0.05,0.075,0.08,0.125,0.15,0.175,0.2,0.225,0.25,0.275,0.280,0.325,0.35,0.375,0.4,0.45,0.55,0.7,0.75,0.9,1.2,1.7,2.5,3.5,4.5,5,6,8,13,15,23,28,35};
   Float_t xPtBins[35]={0,0.025,0.05,0.075,0.1,0.125,0.15,0.175,0.2,0.225,0.25,0.275,0.3,0.325,0.35,0.375,0.4,0.5,0.6,0.7,0.8,1.0,1.5,2.,2.5,3,4,5,6,8,10,15,20,25,30};
 
   for(Int_t i=0; i<11; i++) fCountsPerPtBin[i]=0;
@@ -375,6 +647,17 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistClusterMapITSMIok->SetMinimum(0);
   fOutput->Add(fHistClusterMapITSMIok);
   
+  fHistClusterMapITSMIokA = new TH1F("fHistClusterMapITSMIokA", "N tracks with ok on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
+  fHistClusterMapITSMIokA->Sumw2();
+  fHistClusterMapITSMIokA->SetMinimum(0);
+  fOutput->Add(fHistClusterMapITSMIokA);
+  
+  fHistClusterMapITSMIokB = new TH1F("fHistClusterMapITSMIokB", "N tracks with ok on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
+  fHistClusterMapITSMIokB->Sumw2();
+  fHistClusterMapITSMIokB->SetMinimum(0);
+  fOutput->Add(fHistClusterMapITSMIokB);
+  
+
   fHistClusterMapITSSAokInAcc = new TH1F("fHistClusterMapITSSAokInAcc", "N tracks with ok on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
   fHistClusterMapITSSAokInAcc->Sumw2();
   fHistClusterMapITSSAokInAcc->SetMinimum(0);
@@ -388,6 +671,10 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistClusterMapModuleITSMIokInAcc->SetMinimum(0);
   fOutput->Add(fHistClusterMapModuleITSMIokInAcc);
 
+  fHistNClustersMapModule = new TH1F("fHistNClustersMapModule", "N clusters; Module; N tracks",2198, -0.5, 2197.5);
+  fHistNClustersMapModule->SetMinimum(0);
+  fOutput->Add(fHistNClustersMapModule);
+
   fHistClusterMapITSSAok = new TH1F("fHistClusterMapITSSAok", "N tracks with ok on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
   fHistClusterMapITSSAok->Sumw2();
   fHistClusterMapITSSAok->SetMinimum(0);
@@ -499,6 +786,40 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistClusterMapITSSAnocls->SetMinimum(0);
   fOutput->Add(fHistClusterMapITSSAnocls);
   
+  
+  fHistZatSPDouter0ok = new TH1F("fHistZatSPDouter0ok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
+  fHistZatSPDouter0ok->Sumw2();
+  fHistZatSPDouter0ok->SetMinimum(0);
+  fOutput->Add(fHistZatSPDouter0ok);
+  fHistZatSPDouter1ok = new TH1F("fHistZatSPDouter1ok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
+  fHistZatSPDouter1ok->Sumw2();
+  fHistZatSPDouter1ok->SetMinimum(0);
+  fOutput->Add(fHistZatSPDouter1ok);
+  fHistZatSPDouter2ok = new TH1F("fHistZatSPDouter2ok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
+  fHistZatSPDouter2ok->Sumw2();
+  fHistZatSPDouter2ok->SetMinimum(0);
+  fOutput->Add(fHistZatSPDouter2ok);
+  fHistZatSPDouter3ok = new TH1F("fHistZatSPDouter3ok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
+  fHistZatSPDouter3ok->Sumw2();
+  fHistZatSPDouter3ok->SetMinimum(0);
+  fOutput->Add(fHistZatSPDouter3ok);
+  fHistZatSPDouter0notok = new TH1F("fHistZatSPDouter0notok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
+  fHistZatSPDouter0notok->Sumw2();
+  fHistZatSPDouter0notok->SetMinimum(0);
+  fOutput->Add(fHistZatSPDouter0notok);
+  fHistZatSPDouter1notok = new TH1F("fHistZatSPDouter1notok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
+  fHistZatSPDouter1notok->Sumw2();
+  fHistZatSPDouter1notok->SetMinimum(0);
+  fOutput->Add(fHistZatSPDouter1notok);
+  fHistZatSPDouter2notok = new TH1F("fHistZatSPDouter2notok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
+  fHistZatSPDouter2notok->Sumw2();
+  fHistZatSPDouter2notok->SetMinimum(0);
+  fOutput->Add(fHistZatSPDouter2notok);
+  fHistZatSPDouter3notok = new TH1F("fHistZatSPDouter3notok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
+  fHistZatSPDouter3notok->Sumw2();
+  fHistZatSPDouter3notok->SetMinimum(0);
+  fOutput->Add(fHistZatSPDouter3notok);
+  
   fHistxlocSDDok = new TH1F("fHistxlocSDDok", "SDD points; xloc [cm]; N tracks",75, -3.75, 3.75);
   fHistxlocSDDok->Sumw2();
   fHistxlocSDDok->SetMinimum(0);
@@ -521,6 +842,26 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistzlocSDDall->Sumw2();
   fHistzlocSDDall->SetMinimum(0);
   fOutput->Add(fHistzlocSDDall);
+
+  fHistxlocSDDA = new TH1F("fHistxlocSDDA", "SDD points; xloc [cm]; N tracks",75, -3.75, 3.75);
+  fHistxlocSDDA->Sumw2();
+  fHistxlocSDDA->SetMinimum(0);
+  fOutput->Add(fHistxlocSDDA);
+
+  fHistzlocSDDA = new TH1F("fHistzlocSDDA", "SDD points; zloc [cm]; N tracks",77, -3.85, 3.85);
+  fHistzlocSDDA->Sumw2();
+  fHistzlocSDDA->SetMinimum(0);
+  fOutput->Add(fHistzlocSDDA);
+  
+  fHistxlocSDDB = new TH1F("fHistxlocSDDB", "SDD points; xloc [cm]; N tracks",75, -3.75, 3.75);
+  fHistxlocSDDB->Sumw2();
+  fHistxlocSDDB->SetMinimum(0);
+  fOutput->Add(fHistxlocSDDB);
+
+  fHistzlocSDDB = new TH1F("fHistzlocSDDB", "SDD points; zloc [cm]; N tracks",77, -3.85, 3.85);
+  fHistzlocSDDB->Sumw2();
+  fHistzlocSDDB->SetMinimum(0);
+  fOutput->Add(fHistzlocSDDB);
   
 
   fHistPhiTPCInAcc = new TH1F("fHistPhiTPCInAcc","Azimuthal distribution of TPC tracks; #phi; N tracks",100, 0, 2.*3.1415);
@@ -528,6 +869,51 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistPhiTPCInAcc->SetMinimum(0);
   fOutput->Add(fHistPhiTPCInAcc);
 
+  fHistEtaTPCInAcc = new TH1F("fHistEtaTPCInAcc","Eta distribution of TPC tracks; #eta; N tracks",100, -1.5, +1.5);
+  fHistEtaTPCInAcc->Sumw2();
+  fHistEtaTPCInAcc->SetMinimum(0);
+  fOutput->Add(fHistEtaTPCInAcc);
+
+  fHistEtaTPCInAccA = new TH1F("fHistEtaTPCInAccA","Eta distribution of TPC tracks; #eta; N tracks",100, -1.5, +1.5);
+  fHistEtaTPCInAccA->Sumw2();
+  fHistEtaTPCInAccA->SetMinimum(0);
+  fOutput->Add(fHistEtaTPCInAccA);
+
+  fHistEtaTPCInAccB = new TH1F("fHistEtaTPCInAccB","Eta distribution of TPC tracks; #eta; N tracks",100, -1.5, +1.5);
+  fHistEtaTPCInAccB->Sumw2();
+  fHistEtaTPCInAccB->SetMinimum(0);
+  fOutput->Add(fHistEtaTPCInAccB);
+
+  fHistNclsTPCInAccA = new TH1F("fHistNclsTPCInAccA","Ncls distribution of TPC tracks; #eta; N tracks",80, -0.5,159.5);
+  fHistNclsTPCInAccA->Sumw2();
+  fHistNclsTPCInAccA->SetMinimum(0);
+  fOutput->Add(fHistNclsTPCInAccA);
+
+  fHistNclsTPCInAccB = new TH1F("fHistNclsTPCInAccB","Ncls distribution of TPC tracks; #eta; N tracks",80, -0.5,159.5);
+  fHistNclsTPCInAccB->Sumw2();
+  fHistNclsTPCInAccB->SetMinimum(0);
+  fOutput->Add(fHistNclsTPCInAccB);
+
+  fHistChi2PerClsTPCInAccA = new TH1F("fHistChi2PerClsTPCInAccA","Chi2PerCls distribution of TPC tracks; #eta; N tracks",100,0,20);
+  fHistChi2PerClsTPCInAccA->Sumw2();
+  fHistChi2PerClsTPCInAccA->SetMinimum(0);
+  fOutput->Add(fHistChi2PerClsTPCInAccA);
+
+  fHistChi2PerClsTPCInAccB = new TH1F("fHistChi2PerClsTPCInAccB","Chi2PerCls distribution of TPC tracks; #eta; N tracks",100,0,20);
+  fHistChi2PerClsTPCInAccB->Sumw2();
+  fHistChi2PerClsTPCInAccB->SetMinimum(0);
+  fOutput->Add(fHistChi2PerClsTPCInAccB);
+
+  fHistChi2PerClsITSInAccA = new TH1F("fHistChi2PerClsITSInAccA","Chi2PerCls distribution of ITS tracks; #eta; N tracks",100,0,20);
+  fHistChi2PerClsITSInAccA->Sumw2();
+  fHistChi2PerClsITSInAccA->SetMinimum(0);
+  fOutput->Add(fHistChi2PerClsITSInAccA);
+
+  fHistChi2PerClsITSInAccB = new TH1F("fHistChi2PerClsITSInAccB","Chi2PerCls distribution of ITS tracks; #eta; N tracks",100,0,20);
+  fHistChi2PerClsITSInAccB->Sumw2();
+  fHistChi2PerClsITSInAccB->SetMinimum(0);
+  fOutput->Add(fHistChi2PerClsITSInAccB);
+
   fHistPhiITSMIokbadoutinz6InAcc = new TH1F("fHistPhiITSMIokbadoutinz6InAcc","Azimuthal distribution of ITSMI tracks with 6 layers OK; #phi; N tracks",100,0,2.*3.1415);
   fHistPhiITSMIokbadoutinz6InAcc->Sumw2();
   fHistPhiITSMIokbadoutinz6InAcc->SetMinimum(0);
@@ -578,12 +964,27 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistPtTPCInAcc->SetMinimum(0);
   fOutput->Add(fHistPtTPCInAcc);
   
+  fHistPtTPCInAccMCtwoSPD = new TH1F("fHistPtTPCInAccMCtwoSPD","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtTPCInAccMCtwoSPD->Sumw2();
+  fHistPtTPCInAccMCtwoSPD->SetMinimum(0);
+  fOutput->Add(fHistPtTPCInAccMCtwoSPD);
+  
+  fHistPtTPCInAccMConeSPD = new TH1F("fHistPtTPCInAccMConeSPD","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtTPCInAccMConeSPD->Sumw2();
+  fHistPtTPCInAccMConeSPD->SetMinimum(0);
+  fOutput->Add(fHistPtTPCInAccMConeSPD);
+  
   fHistdEdxVSPtTPCInAcc = new TH2F("fHistdEdxVSPtTPCInAcc","dE/dx distribution of TPC tracks; p_{t} [GeV/c]; TPC dE/dx",100,0,1,50,0,500);
   fOutput->Add(fHistdEdxVSPtTPCInAcc);
   
   fHistdEdxVSPtITSTPCsel = new TH2F("fHistdEdxVSPtITSTPCsel","dE/dx distribution of TPC tracks; p_{t} [GeV/c]; ITS dE/dx",100,0,1,50,0,500);
   fOutput->Add(fHistdEdxVSPtITSTPCsel);
   
+  fHistTPCclsVSPtTPCInAcc = new TH2F("fHistTPCclsVSPtTPCInAcc","TPC ncls; p_{t} [GeV/c]; nclsTPC",50,0,10,80,0,160);
+  fOutput->Add(fHistTPCclsVSPtTPCInAcc);
+  fHistTPCclsVSPtITSMISPDInAcc = new TH2F("fHistTPCclsVSPtITSMISPDInAcc","TPC ncls; p_{t} [GeV/c]; nclsTPC",50,0,10,80,0,160);
+  fOutput->Add(fHistTPCclsVSPtITSMISPDInAcc);
+
   fHistPtVSphiTPCInAcc = new TH2F("fHistPtVSphiTPCInAcc","pt distribution of TPC tracks; phi; p_{t} [GeV/c]",18,0,6.28,20,0,0.5);
   fHistPtVSphiTPCInAcc->SetMinimum(0);
   fOutput->Add(fHistPtVSphiTPCInAcc);
@@ -608,7 +1009,7 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistPtTPCInAccWithPtTPCAtInnerWall->SetMinimum(0);
   fOutput->Add(fHistPtTPCInAccWithPtTPCAtInnerWall);
   
-  fHistDeltaPtTPC = new TH2F("fHistDeltaPtTPC","pt distribution of TPC tracks; p_{t} [GeV/c]; p_{t} TPC at vtx - p_{t} at inner wall [GeV/c]",10,0,1,50,-1,1);
+  fHistDeltaPtTPC = new TH2F("fHistDeltaPtTPC","pt distribution of TPC tracks; p_{t} [GeV/c]; p_{t} TPC at vtx - p_{t} at inner wall [GeV/c]",100,0,1,50,-0.2,0.2);
   fHistDeltaPtTPC->SetMinimum(0);
   fOutput->Add(fHistDeltaPtTPC);
   
@@ -647,6 +1048,147 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistPtITSMIoneSPDInAcc->SetMinimum(0);
   fOutput->Add(fHistPtITSMIoneSPDInAcc);
 
+  fHistPtITSMIoneSPDInAccShared = new TH1F("fHistPtITSMIoneSPDInAccShared","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMIoneSPDInAccShared->Sumw2();
+  fHistPtITSMIoneSPDInAccShared->SetMinimum(0);
+  fOutput->Add(fHistPtITSMIoneSPDInAccShared);
+
+  fHistPtITSMIoneSPDInAccSharedSPD = new TH1F("fHistPtITSMIoneSPDInAccSharedSPD","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMIoneSPDInAccSharedSPD->Sumw2();
+  fHistPtITSMIoneSPDInAccSharedSPD->SetMinimum(0);
+  fOutput->Add(fHistPtITSMIoneSPDInAccSharedSPD);
+
+  fHistPtITSMISPD1InAccShared = new TH1F("fHistPtITSMISPD1InAccShared","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMISPD1InAccShared->Sumw2();
+  fHistPtITSMISPD1InAccShared->SetMinimum(0);
+  fOutput->Add(fHistPtITSMISPD1InAccShared);
+
+  fHistPtITSMISPD2InAccShared = new TH1F("fHistPtITSMISPD2InAccShared","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMISPD2InAccShared->Sumw2();
+  fHistPtITSMISPD2InAccShared->SetMinimum(0);
+  fOutput->Add(fHistPtITSMISPD2InAccShared);
+
+  fHistPtITSMIoneSPDInAccSharedFake = new TH1F("fHistPtITSMIoneSPDInAccSharedFake","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMIoneSPDInAccSharedFake->Sumw2();
+  fHistPtITSMIoneSPDInAccSharedFake->SetMinimum(0);
+  fOutput->Add(fHistPtITSMIoneSPDInAccSharedFake);
+
+  fHistPtITSMIoneSPDInAccSharedSPDFake = new TH1F("fHistPtITSMIoneSPDInAccSharedSPDFake","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMIoneSPDInAccSharedSPDFake->Sumw2();
+  fHistPtITSMIoneSPDInAccSharedSPDFake->SetMinimum(0);
+  fOutput->Add(fHistPtITSMIoneSPDInAccSharedSPDFake);
+
+  fHistPhiITSMI6InAcc = new TH1F("fHistPhiITSMI6InAcc","phi distribution of ITSMI6 tracks; #phi; N tracks",100,0,2*3.1415);
+  fHistPhiITSMI6InAcc->Sumw2();
+  fHistPhiITSMI6InAcc->SetMinimum(0);
+  fOutput->Add(fHistPhiITSMI6InAcc);
+  
+  fHistPhiITSMI5InAcc = new TH1F("fHistPhiITSMI5InAcc","phi distribution of ITSMI5 tracks; #phi; N tracks",100,0,2*3.1415);
+  fHistPhiITSMI5InAcc->Sumw2();
+  fHistPhiITSMI5InAcc->SetMinimum(0);
+  fOutput->Add(fHistPhiITSMI5InAcc);
+  
+  fHistPhiITSMI4InAcc = new TH1F("fHistPhiITSMI4InAcc","phi distribution of ITSMI4 tracks; #phi; N tracks",100,0,2*3.1415);
+  fHistPhiITSMI4InAcc->Sumw2();
+  fHistPhiITSMI4InAcc->SetMinimum(0);
+  fOutput->Add(fHistPhiITSMI4InAcc);
+  
+  fHistPhiITSMI3InAcc = new TH1F("fHistPhiITSMI3InAcc","phi distribution of ITSMI3 tracks; #phi; N tracks",100,0,2*3.1415);
+  fHistPhiITSMI3InAcc->Sumw2();
+  fHistPhiITSMI3InAcc->SetMinimum(0);
+  fOutput->Add(fHistPhiITSMI3InAcc);
+  
+  fHistPhiITSMI2InAcc = new TH1F("fHistPhiITSMI2InAcc","phi distribution of ITSMI2 tracks; #phi; N tracks",100,0,2*3.1415);
+  fHistPhiITSMI2InAcc->Sumw2();
+  fHistPhiITSMI2InAcc->SetMinimum(0);
+  fOutput->Add(fHistPhiITSMI2InAcc);
+  
+  fHistPhiITSMISPDInAcc = new TH1F("fHistPhiITSMISPDInAcc","phi distribution of ITSMISPD tracks; #phi; N tracks",100,0,2*3.1415);
+  fHistPhiITSMISPDInAcc->Sumw2();
+  fHistPhiITSMISPDInAcc->SetMinimum(0);
+  fOutput->Add(fHistPhiITSMISPDInAcc);
+  
+  fHistPhiITSMIoneSPDInAcc = new TH1F("fHistPhiITSMIoneSPDInAcc","phi distribution of ITSMISPD tracks; #phi; N tracks",100,0,2*3.1415);
+  fHistPhiITSMIoneSPDInAcc->Sumw2();
+  fHistPhiITSMIoneSPDInAcc->SetMinimum(0);
+  fOutput->Add(fHistPhiITSMIoneSPDInAcc);
+
+  fHistEtaITSMI6InAcc = new TH1F("fHistEtaITSMI6InAcc","eta distribution of ITSMI6 tracks; #eta; N tracks",100,-1.5,+1.5);
+  fHistEtaITSMI6InAcc->Sumw2();
+  fHistEtaITSMI6InAcc->SetMinimum(0);
+  fOutput->Add(fHistEtaITSMI6InAcc);
+  
+  fHistEtaITSMI5InAcc = new TH1F("fHistEtaITSMI5InAcc","eta distribution of ITSMI5 tracks; #eta; N tracks",100,-1.5,+1.5);
+  fHistEtaITSMI5InAcc->Sumw2();
+  fHistEtaITSMI5InAcc->SetMinimum(0);
+  fOutput->Add(fHistEtaITSMI5InAcc);
+  
+  fHistEtaITSMI4InAcc = new TH1F("fHistEtaITSMI4InAcc","eta distribution of ITSMI4 tracks; #eta; N tracks",100,-1.5,+1.5);
+  fHistEtaITSMI4InAcc->Sumw2();
+  fHistEtaITSMI4InAcc->SetMinimum(0);
+  fOutput->Add(fHistEtaITSMI4InAcc);
+  
+  fHistEtaITSMI3InAcc = new TH1F("fHistEtaITSMI3InAcc","eta distribution of ITSMI3 tracks; #eta; N tracks",100,-1.5,+1.5);
+  fHistEtaITSMI3InAcc->Sumw2();
+  fHistEtaITSMI3InAcc->SetMinimum(0);
+  fOutput->Add(fHistEtaITSMI3InAcc);
+  
+  fHistEtaITSMI2InAcc = new TH1F("fHistEtaITSMI2InAcc","eta distribution of ITSMI2 tracks; #eta; N tracks",100,-1.5,+1.5);
+  fHistEtaITSMI2InAcc->Sumw2();
+  fHistEtaITSMI2InAcc->SetMinimum(0);
+  fOutput->Add(fHistEtaITSMI2InAcc);
+  
+  fHistEtaITSMISPDInAcc = new TH1F("fHistEtaITSMISPDInAcc","eta distribution of ITSMISPD tracks; #eta; N tracks",100,-1.5,+1.5);
+  fHistEtaITSMISPDInAcc->Sumw2();
+  fHistEtaITSMISPDInAcc->SetMinimum(0);
+  fOutput->Add(fHistEtaITSMISPDInAcc);
+  
+  fHistEtaITSMIoneSPDInAcc = new TH1F("fHistEtaITSMIoneSPDInAcc","eta distribution of ITSMISPD tracks; #eta; N tracks",100,-1.5,+1.5);
+  fHistEtaITSMIoneSPDInAcc->Sumw2();
+  fHistEtaITSMIoneSPDInAcc->SetMinimum(0);
+  fOutput->Add(fHistEtaITSMIoneSPDInAcc);
+
+
+  fHistPtITSMI6InAccFake = new TH1F("fHistPtITSMI6InAccFake","pt distribution of ITSMI6 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMI6InAccFake->Sumw2();
+  fHistPtITSMI6InAccFake->SetMinimum(0);
+  fOutput->Add(fHistPtITSMI6InAccFake);
+  
+  fHistPtITSMI5InAccFake = new TH1F("fHistPtITSMI5InAccFake","pt distribution of ITSMI5 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMI5InAccFake->Sumw2();
+  fHistPtITSMI5InAccFake->SetMinimum(0);
+  fOutput->Add(fHistPtITSMI5InAccFake);
+  
+  fHistPtITSMI4InAccFake = new TH1F("fHistPtITSMI4InAccFake","pt distribution of ITSMI4 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMI4InAccFake->Sumw2();
+  fHistPtITSMI4InAccFake->SetMinimum(0);
+  fOutput->Add(fHistPtITSMI4InAccFake);
+  
+  fHistPtITSMI3InAccFake = new TH1F("fHistPtITSMI3InAccFake","pt distribution of ITSMI3 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMI3InAccFake->Sumw2();
+  fHistPtITSMI3InAccFake->SetMinimum(0);
+  fOutput->Add(fHistPtITSMI3InAccFake);
+  
+  fHistPtITSMI2InAccFake = new TH1F("fHistPtITSMI2InAccFake","pt distribution of ITSMI2 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMI2InAccFake->Sumw2();
+  fHistPtITSMI2InAccFake->SetMinimum(0);
+  fOutput->Add(fHistPtITSMI2InAccFake);
+  
+  fHistPtITSMISPDInAccFake = new TH1F("fHistPtITSMISPDInAccFake","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMISPDInAccFake->Sumw2();
+  fHistPtITSMISPDInAccFake->SetMinimum(0);
+  fOutput->Add(fHistPtITSMISPDInAccFake);
+  
+  fHistPtITSMIoneSPDInAccFake = new TH1F("fHistPtITSMIoneSPDInAccFake","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMIoneSPDInAccFake->Sumw2();
+  fHistPtITSMIoneSPDInAccFake->SetMinimum(0);
+  fOutput->Add(fHistPtITSMIoneSPDInAccFake);
+
+  fHistPtITSMIoneSPDthreeSDDSSDInAcc = new TH1F("fHistPtITSMIoneSPDthreeSDDSSDInAcc","pt distribution of ITSMI tracks (>0 in SPD, >2 in SDD+SSD); p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSMIoneSPDthreeSDDSSDInAcc->Sumw2();
+  fHistPtITSMIoneSPDthreeSDDSSDInAcc->SetMinimum(0);
+  fOutput->Add(fHistPtITSMIoneSPDthreeSDDSSDInAcc);
+
   fHistPtITSTPCsel = new TH1F("fHistPtITSTPCsel","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
   fHistPtITSTPCsel->Sumw2();
   fHistPtITSTPCsel->SetMinimum(0);
@@ -662,6 +1204,11 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistPtITSTPCselS->SetMinimum(0);
   fOutput->Add(fHistPtITSTPCselS);
 
+  fHistPtITSTPCselFake = new TH1F("fHistPtITSTPCselFake","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
+  fHistPtITSTPCselFake->Sumw2();
+  fHistPtITSTPCselFake->SetMinimum(0);
+  fOutput->Add(fHistPtITSTPCselFake);
+
   fHistPtITSTPCselSfromStrange = new TH1F("fHistPtITSTPCselSfromStrange","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
   fHistPtITSTPCselSfromStrange->Sumw2();
   fHistPtITSTPCselSfromStrange->SetMinimum(0);
@@ -802,6 +1349,26 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistRProdVtxInAccS->SetMinimum(0);
   fOutput->Add(fHistRProdVtxInAccS);
   
+  fHistd0rphiTPCInAccA = new TH1F("fHistd0rphiTPCInAccA","Transverse imp. par. to VertexTracks; d_{0} rphi [cm]; N tracks",300,-5,5);
+  fHistd0rphiTPCInAccA->Sumw2();
+  fHistd0rphiTPCInAccA->SetMinimum(0);
+  fOutput->Add(fHistd0rphiTPCInAccA);
+
+  fHistd0rphiTPCInAccB = new TH1F("fHistd0rphiTPCInAccB","Transverse imp. par. to VertexTracks; d_{0} rphi [cm]; N tracks",300,-5,5);
+  fHistd0rphiTPCInAccB->Sumw2();
+  fHistd0rphiTPCInAccB->SetMinimum(0);
+  fOutput->Add(fHistd0rphiTPCInAccB);
+
+  fHistd0zTPCInAccA = new TH1F("fHistd0zTPCInAccA","Transverse imp. par. to VertexTracks; d_{0} z [cm]; N tracks",300,-5,5);
+  fHistd0zTPCInAccA->Sumw2();
+  fHistd0zTPCInAccA->SetMinimum(0);
+  fOutput->Add(fHistd0zTPCInAccA);
+
+  fHistd0zTPCInAccB = new TH1F("fHistd0zTPCInAccB","Transverse imp. par. to VertexTracks; d_{0} z [cm]; N tracks",300,-5,5);
+  fHistd0zTPCInAccB->Sumw2();
+  fHistd0zTPCInAccB->SetMinimum(0);
+  fOutput->Add(fHistd0zTPCInAccB);
+
   fHistd0rphiTPCInAccP150200 = new TH1F("fHistd0rphiTPCInAccP150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
   fHistd0rphiTPCInAccP150200->Sumw2();
   fHistd0rphiTPCInAccP150200->SetMinimum(0);
@@ -867,6 +1434,11 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistd0rphiITSMIoneSPDInAccP150200->SetMinimum(0);
   fOutput->Add(fHistd0rphiITSMIoneSPDInAccP150200);
 
+  fHistd0rphiITSMIoneSPDInAccP350450 = new TH1F("fHistd0rphiITSMIoneSPDInAccP350450","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccP350450->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccP350450->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccP350450);
+
   fHistd0rphiITSMIoneSPDInAccP500700 = new TH1F("fHistd0rphiITSMIoneSPDInAccP500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
   fHistd0rphiITSMIoneSPDInAccP500700->Sumw2();
   fHistd0rphiITSMIoneSPDInAccP500700->SetMinimum(0);
@@ -877,6 +1449,36 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistd0rphiITSMIoneSPDInAccP10001500->SetMinimum(0);
   fOutput->Add(fHistd0rphiITSMIoneSPDInAccP10001500);
 
+  fHistd0rphiITSMIoneSPDInAccP25004000 = new TH1F("fHistd0rphiITSMIoneSPDInAccP25004000","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccP25004000->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccP25004000->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccP25004000);
+
+  fHistd0rphiITSMIoneSPDInAccP40008000 = new TH1F("fHistd0rphiITSMIoneSPDInAccP40008000","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccP40008000->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccP40008000->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccP40008000);
+
+  fHistd0rphiITSMIoneSPDInAccA = new TH1F("fHistd0rphiITSMIoneSPDInAccA","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccA->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccA->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccA);
+
+  fHistd0rphiITSMIoneSPDInAccB = new TH1F("fHistd0rphiITSMIoneSPDInAccB","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccB->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccB->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccB);
+
+  fHistd0zITSMIoneSPDInAccA = new TH1F("fHistd0zITSMIoneSPDInAccA","Transverse imp. par. to VertexTracks for primaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
+  fHistd0zITSMIoneSPDInAccA->Sumw2();
+  fHistd0zITSMIoneSPDInAccA->SetMinimum(0);
+  fOutput->Add(fHistd0zITSMIoneSPDInAccA);
+
+  fHistd0zITSMIoneSPDInAccB = new TH1F("fHistd0zITSMIoneSPDInAccB","Transverse imp. par. to VertexTracks for primaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
+  fHistd0zITSMIoneSPDInAccB->Sumw2();
+  fHistd0zITSMIoneSPDInAccB->SetMinimum(0);
+  fOutput->Add(fHistd0zITSMIoneSPDInAccB);
+
   fHistd0zITSMIoneSPDInAccP150200 = new TH1F("fHistd0zITSMIoneSPDInAccP150200","Longitudinal imp. par. to VertexTracks for primaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
   fHistd0zITSMIoneSPDInAccP150200->Sumw2();
   fHistd0zITSMIoneSPDInAccP150200->SetMinimum(0);
@@ -892,6 +1494,9 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistd0zITSMIoneSPDInAccP10001500->SetMinimum(0);
   fOutput->Add(fHistd0zITSMIoneSPDInAccP10001500);
 
+  fHistd0zVSetaTPCInAccP10001500 = new TH2F("fHistd0zVSetaTPCInAccP10001500","Long. imp. par. to VertexSPD for TPC tracks; d_{0} z [cm]; eta",100,-4,4,10,-1,1);
+  fOutput->Add(fHistd0zVSetaTPCInAccP10001500);
+
   fHistd0rphiVSphiITSMIoneSPDInAccP10001500 = new TH2F("fHistd0rphiVSphiITSMIoneSPDInAccP10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; phi",30,-0.3,0.3,40,0,2*3.1415);
   fOutput->Add(fHistd0rphiVSphiITSMIoneSPDInAccP10001500);
 
@@ -903,6 +1508,11 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistd0rphiITSMIoneSPDInAccS150200->SetMinimum(0);
   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS150200);
 
+  fHistd0rphiITSMIoneSPDInAccS350450 = new TH1F("fHistd0rphiITSMIoneSPDInAccS350450","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS350450->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS350450->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS350450);
+
   fHistd0rphiITSMIoneSPDInAccS500700 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
   fHistd0rphiITSMIoneSPDInAccS500700->Sumw2();
   fHistd0rphiITSMIoneSPDInAccS500700->SetMinimum(0);
@@ -928,10 +1538,86 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistd0rphiITSMIoneSPDInAccS500700from321->SetMinimum(0);
   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700from321);
 
+  fHistd0rphiITSMIoneSPDInAccS500700from3122 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700from3122","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS500700from3122->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS500700from3122->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700from3122);
+
   fHistd0rphiITSMIoneSPDInAccS10001500 = new TH1F("fHistd0rphiITSMIoneSPDInAccS10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
   fHistd0rphiITSMIoneSPDInAccS10001500->Sumw2();
   fHistd0rphiITSMIoneSPDInAccS10001500->SetMinimum(0);
   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS10001500);
+
+  fHistd0rphiITSMIoneSPDInAccS25004000 = new TH1F("fHistd0rphiITSMIoneSPDInAccS25004000","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS25004000->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS25004000->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS25004000);
+
+  fHistd0rphiITSMIoneSPDInAccS40008000 = new TH1F("fHistd0rphiITSMIoneSPDInAccS40008000","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS40008000->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS40008000->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS40008000);
+
+  fHistd0rphiITSMIoneSPDInAccS150200fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS150200fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS150200fromStrange->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS150200fromStrange->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS150200fromStrange);
+
+  fHistd0rphiITSMIoneSPDInAccS150200fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS150200fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS150200fromMat->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS150200fromMat->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS150200fromMat);
+
+  fHistd0rphiITSMIoneSPDInAccS350450fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS350450fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS350450fromStrange->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS350450fromStrange->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS350450fromStrange);
+
+  fHistd0rphiITSMIoneSPDInAccS350450fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS350450fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS350450fromMat->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS350450fromMat->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS350450fromMat);
+
+  fHistd0rphiITSMIoneSPDInAccS500700fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS500700fromStrange->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS500700fromStrange->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700fromStrange);
+
+  fHistd0rphiITSMIoneSPDInAccS500700fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS500700fromMat->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS500700fromMat->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700fromMat);
+
+  fHistd0rphiITSMIoneSPDInAccS10001500fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS10001500fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS10001500fromStrange->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS10001500fromStrange->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS10001500fromStrange);
+
+  fHistd0rphiITSMIoneSPDInAccS10001500fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS10001500fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS10001500fromMat->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS10001500fromMat->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS10001500fromMat);
+
+  fHistd0rphiITSMIoneSPDInAccS25004000fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS25004000fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS25004000fromStrange->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS25004000fromStrange->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS25004000fromStrange);
+
+  fHistd0rphiITSMIoneSPDInAccS25004000fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS25004000fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS25004000fromMat->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS25004000fromMat->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS25004000fromMat);
+
+  fHistd0rphiITSMIoneSPDInAccS40008000fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS40008000fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS40008000fromStrange->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS40008000fromStrange->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS40008000fromStrange);
+
+  fHistd0rphiITSMIoneSPDInAccS40008000fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS40008000fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
+  fHistd0rphiITSMIoneSPDInAccS40008000fromMat->Sumw2();
+  fHistd0rphiITSMIoneSPDInAccS40008000fromMat->SetMinimum(0);
+  fOutput->Add(fHistd0rphiITSMIoneSPDInAccS40008000fromMat);
+
   
   fHistd0zITSMIoneSPDInAccS150200 = new TH1F("fHistd0zITSMIoneSPDInAccS150200","Longitudinal imp. par. to VertexTracks for secondaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
   fHistd0zITSMIoneSPDInAccS150200->Sumw2();
@@ -948,10 +1634,23 @@ void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
   fHistd0zITSMIoneSPDInAccS10001500->SetMinimum(0);
   fOutput->Add(fHistd0zITSMIoneSPDInAccS10001500);
 
+  fHistITSRedChi2NonFakePt02 = new TH1F("fHistITSRedChi2NonFakePt02","ITS chi2/cluster; ITS #chi^{2}/nclusters; tracks",500,0,100);
+  fOutput->Add(fHistITSRedChi2NonFakePt02);
+  fHistITSRedChi2FakePt02 = new TH1F("fHistITSRedChi2FakePt02","ITS chi2/cluster; ITS #chi^{2}/nclusters; tracks",500,0,100);
+  fOutput->Add(fHistITSRedChi2FakePt02);
+  fHistITSRedChi2NonFakePt05 = new TH1F("fHistITSRedChi2NonFakePt05","ITS chi2/cluster; ITS #chi^{2}/nclusters; tracks",500,0,100);
+  fOutput->Add(fHistITSRedChi2NonFakePt05);
+  fHistITSRedChi2FakePt05 = new TH1F("fHistITSRedChi2FakePt05","ITS chi2/cluster; ITS #chi^{2}/nclusters; tracks",500,0,100);
+  fOutput->Add(fHistITSRedChi2FakePt05);
+  fHistITSRedChi2NonFakePt1 = new TH1F("fHistITSRedChi2NonFakePt1","ITS chi2/cluster; ITS #chi^{2}/nclusters; tracks",500,0,100);
+  fOutput->Add(fHistITSRedChi2NonFakePt1);
+  fHistITSRedChi2FakePt1 = new TH1F("fHistITSRedChi2FakePt1","ITS chi2/cluster; ITS #chi^{2}/nclusters; tracks",500,0,100);
+  fOutput->Add(fHistITSRedChi2FakePt1);
+
 
   // ntuples
   //
-  fNtupleESDTracks = new TNtuple("fNtupleESDTracks","tracks","pt:eta:phi:d0:z0:sigmad0:sigmaz0:ptMC:pdgMC:d0MC:d0MCv:z0MCv:sigmad0MCv:sigmaz0MCv:ITSflag:isPrimary:isTPCSel");  
+  fNtupleESDTracks = new TNtuple("fNtupleESDTracks","tracks","pt:eta:phi:d0:z0:sigmad0:sigmaz0:ptMC:pdgMC:pdgMCMoth:d0MC:d0MCv:z0MCv:sigmad0MCv:sigmaz0MCv:ITSflag:isPrimary:isTPCSel");  
   fOutput->Add(fNtupleESDTracks);
 
   fNtupleITSAlignExtra = new TNtuple("fNtupleITSAlignExtra","ITS alignment checks: extra clusters","layer:x:y:z:dxy:dz:xloc:zloc:npoints:pt");  
@@ -968,6 +1667,7 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
 {
   // Main loop
   // Called for each event
+
   fESD = dynamic_cast<AliESDEvent*>(InputEvent());
 
   if (!fESD) {
@@ -975,9 +1675,14 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
     return;
   }
 
+  //if(fESD->GetEventNumberInFile()<7) return;
+
+  // only events in the requested multiplicity range
+  if(!IsSelectedCentrality()) return;
 
   fHistNEvents->Fill(-1);
 
+
   Bool_t isSelected = kTRUE;
   if(fUsePhysSel) {
     isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
@@ -1021,7 +1726,7 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
     }
     AliGenEventHeader* genHeader = header->GenEventHeader();
     genHeader->PrimaryVertex(mcVertex);
-
+    //printf("MC vertex: %f %f %f\n",mcVertex[0],mcVertex[1],mcVertex[2]);
 
     Int_t ngenpart = (Int_t)stack->GetNtrack();
     //printf("# generated particles = %d\n",ngenpart);
@@ -1032,6 +1737,7 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
       Int_t apdg = TMath::Abs(part->GetPdgCode());
       if(apdg!=11 && apdg!=13 && apdg!=211 && apdg!=321 && apdg!=2212) continue;      
       // reject secondaries
+      //if(TMath::Sqrt((part->Vx()-mcVertex[0])*(part->Vx()-mcVertex[0])+(part->Vy()-mcVertex[1])*(part->Vy()-mcVertex[1]))<.01) printf("%f\n",TMath::Sqrt((part->Vx()-mcVertex[0])*(part->Vx()-mcVertex[0])+(part->Vy()-mcVertex[1])*(part->Vy()-mcVertex[1])));
       if(TMath::Sqrt((part->Vx()-mcVertex[0])*(part->Vx()-mcVertex[0])+(part->Vy()-mcVertex[1])*(part->Vy()-mcVertex[1]))>0.0010) continue;
       // reject incoming protons
       Double_t energy  = part->Energy();
@@ -1046,21 +1752,24 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
   Double_t mcVtxPos[3]={mcVertex[0],mcVertex[1],mcVertex[2]},mcVtxSigma[3]={0,0,0};
   vertexMC = new AliESDVertex(mcVtxPos,mcVtxSigma);
 
-  // ***********  ESD friends ***********
-  if(!fESDfriend) printf("no ESD friend\n");
 
 
   //------- event selection --------
   Int_t   mincontrSPDvtx=1;
-  Double_t maxzSPDvtx=20.;
-  Double_t maxrSPDvtx=1.;
+  Double_t maxzSPDvtx=5.;
+  Double_t maxrSPDvtx=0.5;
+  Bool_t useTRKvtx=kTRUE;
+  Bool_t useSPDvtxifNotTRK=kTRUE;
+  Int_t   mincontrTRKvtx=1;
+  //Double_t maxzTRKvtx=20.;
+  //Double_t maxrTRKvtx=1.;
   //------- TPC track selection --------
-  Int_t    minclsTPC=90;
+  Int_t    minclsTPC=70;
   Double_t maxchi2perTPCcl=4.;
   Double_t minEtaInAcc=-0.8; // -0.8
   Double_t maxEtaInAcc=0.8; // 0.8
-  Double_t maxdcaxy=1e6;//2.4;
-  Double_t maxdcaz=1e6;//3.2;
+  Double_t maxdcaxy=2.4;//2.4;
+  Double_t maxdcaz=3.2;//3.2;
   AliESDtrackCuts* esdtrackCutsTPC = new AliESDtrackCuts("esdtrackCutsTPC");
   esdtrackCutsTPC->SetMaxDCAToVertexXY(maxdcaxy);
   esdtrackCutsTPC->SetMaxDCAToVertexZ(maxdcaz);
@@ -1124,11 +1833,14 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
     delete esdtrackCutsITSTPC; esdtrackCutsITSTPC=0;
     return;
   }
+  //spdv->Print();
+
+  if(fRejPileupSPD) if(fESD->IsPileupFromSPD()) return;
 
   //
   // Tracks vertex
   const AliESDVertex *vertexESD = fESD->GetPrimaryVertexTracks();
-
+  //vertexESD->Print();
 
   if(spdvtitle.Contains("3D")) {
     fHistNEvents->Fill(1);
@@ -1142,12 +1854,14 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
   }
 
   Int_t ntracks = fESD->GetNumberOfTracks();
-  printf("Tracks # = %d\n",fESD->GetNumberOfTracks());
+  //printf("Tracks # = %d\n",fESD->GetNumberOfTracks());
 
   fHistNtracks->Fill(ntracks);
   // Post the data already here
   PostData(1, fOutput);
 
+  FillNClustersModuleMap();
+
   Int_t idet,status; Float_t xloc,zloc;
   Double_t rSPDouter=7.6,rSDDouter=23.9,rSSDouter=43.1;  
   Double_t zSPDouter=14.1,zSDDouter=29.7,zSSDouter=48.9;  
@@ -1155,6 +1869,7 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
   // loop on tracks
   for(Int_t itr=0; itr<ntracks; itr++) {
     AliESDtrack *track = fESD->GetTrack(itr);
+    //if(track->Charge()>0) continue;
     // remove kink daughters
     if(track->GetKinkIndex(0)>0) continue;
 
@@ -1165,8 +1880,18 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
     Bool_t isPrimary=kTRUE,isFromMat=kFALSE,isFromStrange=kFALSE;
     Double_t rProdVtx=0,zProdVtx=0;
     Int_t pdgTrk=0,pdgMoth=0;
+    Int_t nClsMCSPD=0;
   
     Int_t trkLabel = TMath::Abs(track->GetLabel());
+    Bool_t isFake=(track->GetLabel()>=0 ? kFALSE : kTRUE);
+    Bool_t hasShared=kFALSE,hasSharedSPD=kFALSE;
+    for(Int_t i=0;i<6;i++) {
+      if(track->HasSharedPointOnITSLayer(i)) {
+       hasShared=kTRUE;
+       if(i<2) hasSharedSPD=kTRUE;
+      }
+    }
+
     // check if it is primary
     if(fReadMC && stack) {
       isPrimary = stack->IsPhysicalPrimary(trkLabel);
@@ -1179,8 +1904,9 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
        TParticle* mm=stack->Particle(part->GetFirstMother());
        if(mm) pdgMoth = TMath::Abs(mm->GetPdgCode());
       }
-      if(pdgMoth==310 || pdgMoth==321 || pdgMoth==3122) isFromStrange=kTRUE;
+      if(pdgMoth==310 || pdgMoth==321 || pdgMoth==3122 || pdgMoth==3312) isFromStrange=kTRUE;
       if(pdgMoth==211 || pdgMoth==22 || pdgMoth==2112 || pdgMoth==2212) isFromMat=kTRUE;
+      nClsMCSPD = NumberOfITSClustersMC(trkLabel,240);
     }
 
     Bool_t itsrefit=kFALSE,tpcrefit=kFALSE,itsfindable=kFALSE,itsfindableAcc=kFALSE;
@@ -1188,6 +1914,8 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
     if ((track->GetStatus() & AliESDtrack::kTPCrefit)) tpcrefit=kTRUE;
     //if ((track->GetStatus() & AliESDtrack::kTPCin)) tpcrefit=kTRUE;
 
+
+
     // remove tracks with kTPCin and not kTPCrefit 
     if ((track->GetStatus() & AliESDtrack::kTPCin) && !tpcrefit) continue;
 
@@ -1197,42 +1925,94 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
    
 
     Int_t nclsITS = track->GetNcls(0);
+    Int_t nclsSDDSSD = 0;
     Int_t nclsokbadoutinzITS = 0;
     Bool_t outInZ=kFALSE;
     Bool_t skipTrack=kFALSE;
+    Bool_t fillA=kFALSE;
+    Bool_t fillB=kFALSE;
 
     for(Int_t layer=0; layer<6; layer++) {
+      if(layer>=2 && track->HasPointOnITSLayer(layer)) nclsSDDSSD++;
+      if(layer==0 && !track->HasPointOnITSLayer(1)) continue;
+      if(layer==1 && !track->HasPointOnITSLayer(0)) continue;
       track->GetITSModuleIndexInfo(layer,idet,status,xloc,zloc);
       if(status<0) continue;
       if(layer>=2) idet+=240; // add n SPD modules
       if(layer>=4) idet+=260; // add n SDD modules
       if(status==4) outInZ=kTRUE;
+      
+      if(layer==1 && tpcrefit && itsrefit) {
+       Double_t xyz[3];
+       track->GetXYZAt(rSPDouter,fESD->GetMagneticField(),xyz);
+       if(status==1) {
+         if(idet%4==0) fHistZatSPDouter0ok->Fill(xyz[2]);
+         if(idet%4==1) fHistZatSPDouter1ok->Fill(xyz[2]);
+         if(idet%4==2) fHistZatSPDouter2ok->Fill(xyz[2]);
+         if(idet%4==3) fHistZatSPDouter3ok->Fill(xyz[2]);
+       }
+       if(status==2 || status==5) {
+         if(idet%4==0) fHistZatSPDouter0notok->Fill(xyz[2]);
+         if(idet%4==1) fHistZatSPDouter1notok->Fill(xyz[2]);
+         if(idet%4==2) fHistZatSPDouter2notok->Fill(xyz[2]);
+         if(idet%4==3) fHistZatSPDouter3notok->Fill(xyz[2]);
+       }
+      }
+      // kill SDD clusters in MC
+      if(fReadMC && (layer==2 || layer==3)) {
+       Double_t qITS[4]; track->GetITSdEdxSamples(qITS);
+       Double_t conv=3.34/5.43; 
+       if(layer==2 && status==1 && qITS[0]*conv < 30.) status=5;
+       if(layer==3 && status==1 && qITS[1]*conv < 30.) status=5;
+      }
       if(tpcrefit) {
-       if(status==1) fHistClusterMapITSMIok->Fill(layer);
-       if(status==2) fHistClusterMapITSMIbad->Fill(layer);
-       if(status==3) fHistClusterMapITSMIskipped->Fill(layer);
-       if(status==4) fHistClusterMapITSMIoutinz->Fill(layer);
-       if(status==5) fHistClusterMapITSMInocls->Fill(layer);
-       if(status==6) fHistClusterMapITSMInorefit->Fill(layer);
-       if(status==1 && !outInZ) fHistClusterMapModuleITSMIokInAcc->Fill(idet);
-       if(status==2 && !outInZ) fHistClusterMapModuleITSMIbadInAcc->Fill(idet);
-       if(status==5 && !outInZ) fHistClusterMapModuleITSMInoclsInAcc->Fill(idet);
+       if(trackTPC) if(!fESDtrackCutsTPC->AcceptTrack(trackTPC)) continue;
+       if(track->Pt()>0.7 && track->Pt()<2.0) {
+         if(status==1) {
+           fHistClusterMapITSMIok->Fill(layer);
+           if(fillA) fHistClusterMapITSMIokA->Fill(layer);
+           if(fillB) fHistClusterMapITSMIokB->Fill(layer);
+         }
+         if(status==2) fHistClusterMapITSMIbad->Fill(layer);
+         if(status==3) fHistClusterMapITSMIskipped->Fill(layer);
+         if(status==4) fHistClusterMapITSMIoutinz->Fill(layer);
+         if(status==5) fHistClusterMapITSMInocls->Fill(layer);
+         if(status==6) fHistClusterMapITSMInorefit->Fill(layer);
+         if(status==1 && !outInZ) fHistClusterMapModuleITSMIokInAcc->Fill(idet);
+         if((status==2 || status==7) && !outInZ) fHistClusterMapModuleITSMIbadInAcc->Fill(idet);
+         if(status==5 && !outInZ) fHistClusterMapModuleITSMInoclsInAcc->Fill(idet);
+
+         if((idet>=0 && idet<=11) || (idet>=36 && idet<=47)) fillA=kTRUE;
+         if((idet>=28 && idet<=35) || (idet>=62 && idet<=71)) fillB=kTRUE;
+
+       }
        if(status==1 || status==2 || status==4) {
          fHistClusterMapITSMIokoutinzbad->Fill(layer);
          nclsokbadoutinzITS++;
        }
-       if((layer==2 || layer==3) && status!=2 && status!=4 && TMath::Abs(zloc)<2) {
-         Float_t xlocCls;
-         Int_t nClsInMod = NumberOfITSClusters(idet,xlocCls);
+       /*if(idet>=80 && idet<120) {
+         Double_t xyz[3];
+         track->GetXYZAt(6.8,fESD->GetMagneticField(),xyz);
+         printf("det %d status %d phi %f z %f zloc %f xloc %f\n",idet,status,TMath::ATan2(xyz[1],xyz[0]),xyz[2],zloc,xloc);
+         }*/
+       if((layer==2 || layer==3) && status!=2 && status!=4) {
+         //Float_t xlocCls;
+         //Int_t nClsInMod = NumberOfITSClusters(idet,xlocCls);
          fHistxlocSDDall->Fill(xloc);
          fHistzlocSDDall->Fill(zloc);
-         if(/*status==1*/ nClsInMod>0) {
+         if(status==1  /*nClsInMod>0*/) {
            fHistxlocSDDok->Fill(xloc);
            fHistxlocVSmodSDDok->Fill(idet,xloc);
            fHistzlocSDDok->Fill(zloc);
-         }else if(TMath::Abs(xloc)<1) printf("EVENT %d PHI %f LAYER %d\n",fESD->GetEventNumberInFile(),track->Phi(),layer);    
+           if(fillA) fHistxlocSDDA->Fill(xloc);
+           if(fillA) fHistzlocSDDA->Fill(zloc);
+           if(fillB) fHistxlocSDDB->Fill(xloc);
+           if(fillB) fHistzlocSDDB->Fill(zloc);
+
+         }     
        }
       } else {
+       if(track->Phi()>1.5 && track->Phi()<1.7) { // ADDED
        if(status==1) fHistClusterMapITSSAok->Fill(layer);
        if(status==2) fHistClusterMapITSSAbad->Fill(layer);
        if(status==3) fHistClusterMapITSSAskipped->Fill(layer);
@@ -1241,12 +2021,13 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
        if(status==6) fHistClusterMapITSSAnorefit->Fill(layer);
        if(status==1 || status==2 || status==4) fHistClusterMapITSSAokoutinzbad->Fill(layer);
        if(status==1 && !outInZ) {fHistClusterMapITSSAokInAcc->Fill(layer);fHistClusterMapModuleITSSAokInAcc->Fill(idet);}
-       if(status==2 && !outInZ) {fHistClusterMapITSSAbadInAcc->Fill(layer);fHistClusterMapModuleITSSAbadInAcc->Fill(idet);}
+       if((status==2 || status==7) && !outInZ) {fHistClusterMapITSSAbadInAcc->Fill(layer);fHistClusterMapModuleITSSAbadInAcc->Fill(idet);}
        if(status==3 && !outInZ) fHistClusterMapITSSAskippedInAcc->Fill(layer);
        if(status==4 && !outInZ) fHistClusterMapITSSAoutinzInAcc->Fill(layer);
        if(status==5 && !outInZ) {fHistClusterMapITSSAnoclsInAcc->Fill(layer);fHistClusterMapModuleITSSAnoclsInAcc->Fill(idet);}
        if(status==6 && !outInZ) fHistClusterMapITSSAnorefitInAcc->Fill(layer);
        if((status==1 || status==2 || status==4) && !outInZ) fHistClusterMapITSSAokoutinzbadInAcc->Fill(layer);
+       } // ADDED
       }
       if(TESTBIT(track->GetITSClusterMap(),layer)) {
        if(tpcrefit) {
@@ -1256,9 +2037,82 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
          if(!outInZ) fHistClusterMapITSSAInAcc->Fill(layer);
        }
       }
-      //if(idet>=238 && idet<=239) skipTrack=kTRUE;
+      /*    
+      // SKIP SDD MODULES LOW EFF
+      if(
+        idet==246 ||
+        idet==247 ||
+        idet==256 ||
+        idet==261 ||
+        idet==267 ||
+        idet==333 ||
+        idet==343 ||
+        idet==346 ||
+        idet==349 ||
+        idet==376 ||
+        idet==390 ||
+        idet==392 ||
+        idet==409 ||
+        idet==411 ||
+        idet==464 ||
+        idet==468 ||
+        idet==474 ||
+        idet==469
+        ) 
+       skipTrack=kTRUE;
+      */
+         /*
+      if(
+        idet==245
+        || idet==248
+        || idet==253
+        || idet==264
+        || idet==276
+        || idet==286
+        || idet==287
+        || idet==292
+        || idet==295
+        || idet==302
+        || idet==305
+        || idet==307
+        || idet==315
+        || idet==320
+        || idet==330
+        || idet==331
+        || idet==341
+        || idet==357
+        || idet==368
+        || idet==376
+        || idet==377
+        || idet==378
+        || idet==379
+        || idet==380
+        || idet==381
+        || idet==382
+        || idet==383
+        || idet==422
+        || idet==444
+        || idet==445
+        || idet==450
+        || idet==451
+        || idet==452
+        || idet==453
+        || idet==455
+        || idet==459
+        || idet==469
+        || idet==485
+        || idet==493
+        || idet==494
+        || idet==495
+        || idet==496
+        || idet==497
+        || idet==498
+        || idet==499
+        ) skipTrack=kTRUE;
+      // SKIP SDD MODULES LOW EFF
+      */
     }  
-    if(skipTrack) continue;
+    if(skipTrack) {delete trackTPC; trackTPC=0; continue;}
 
     // TPC track findable in ITS
     if(tpcrefit && trackTPC) { 
@@ -1269,12 +2123,13 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
        track->GetZAt(rSDDouter,fESD->GetMagneticField(),zAtSDDouter);
        track->GetZAt(rSPDouter,fESD->GetMagneticField(),zAtSPDouter);
        fHistPtTPC->Fill(track->Pt());  
-       if(TMath::Abs(zAtSSDouter)<100.*zSSDouter &&
-          TMath::Abs(zAtSDDouter)<100.*zSDDouter &&
-          TMath::Abs(zAtSPDouter)<100.*zSPDouter) {
-         itsfindableAcc=kTRUE;
+       if(TMath::Abs(zAtSSDouter)<1.*zSSDouter &&
+          TMath::Abs(zAtSDDouter)<1.*zSDDouter &&
+          TMath::Abs(zAtSPDouter)<1.*zSPDouter) {
+         itsfindableAcc=kTRUE; 
          fHistdEdxVSPtTPCInAcc->Fill(track->Pt(),track->GetTPCsignal());
          fHistPtTPCInAcc->Fill(track->Pt());
+         fHistTPCclsVSPtTPCInAcc->Fill(trackTPC->Pt(),trackTPC->GetNcls(1));
          fHistPtVSphiTPCInAcc->Fill(track->Phi(),track->Pt());
          if(!(track->GetStatus()&AliESDtrack::kTRDout)) fHistPtTPCInAccNoTRDout->Fill(track->Pt()); 
          if(!(track->GetStatus()&AliESDtrack::kTOFout)) fHistPtTPCInAccNoTOFout->Fill(track->Pt()); 
@@ -1283,8 +2138,11 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
          track->GetInnerPxPyPz(pTPCinnerwall);
          Double_t ptTPCinnerwall=TMath::Sqrt(pTPCinnerwall[0]*pTPCinnerwall[0]+pTPCinnerwall[1]*pTPCinnerwall[1]);
          fHistPtTPCInAccWithPtTPCAtInnerWall->Fill(ptTPCinnerwall);
-         fHistDeltaPtTPC->Fill(ptTPCinnerwall,ptTPCinnerwall-trackTPC->Pt());
-         fHistPhiTPCInAcc->Fill(track->Phi());  
+         if(track->GetStatus()&AliESDtrack::kITSrefit && !(track->GetStatus()&AliESDtrack::kTOFout)) fHistDeltaPtTPC->Fill(trackTPC->P(),track->P()-trackTPC->P());
+         if(track->Pt()>1) {
+           fHistPhiTPCInAcc->Fill(track->Phi());  
+           fHistEtaTPCInAcc->Fill(track->Eta());
+         }  
          if(isPrimary) {
            fHistPtTPCInAccP->Fill(track->Pt());
            if(pdgTrk==321) fHistPtTPCInAccPfromStrange->Fill(track->Pt());
@@ -1293,11 +2151,40 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
            if(isFromMat) fHistPtTPCInAccSfromMat->Fill(track->Pt());
            if(isFromStrange) fHistPtTPCInAccSfromStrange->Fill(track->Pt());
          }  
+         if(nClsMCSPD==2) fHistPtTPCInAccMCtwoSPD->Fill(track->Pt());
+         if(nClsMCSPD>=1) fHistPtTPCInAccMConeSPD->Fill(track->Pt());
+
+         if(fillA) {
+           fHistEtaTPCInAccA->Fill(trackTPC->Eta());
+           fHistNclsTPCInAccA->Fill(track->GetTPCNclsIter1());
+           fHistChi2PerClsTPCInAccA->Fill(track->GetTPCchi2Iter1()/track->GetTPCNclsIter1());
+         }
+         if(fillB) {
+           fHistEtaTPCInAccB->Fill(trackTPC->Eta());
+           fHistNclsTPCInAccB->Fill(track->GetTPCNclsIter1());
+           fHistChi2PerClsTPCInAccB->Fill(track->GetTPCchi2Iter1()/track->GetTPCNclsIter1());
+         }
          //if(isPrimary) {fHistRProdVtxInAccP->Fill(rProdVtx);} else {fHistRProdVtxInAccS->Fill(rProdVtx);}
        }
       }
     }
 
+
+    if(useTRKvtx) {
+      // we need the vertex to compute the impact parameters
+      if(!vertexESD) {delete trackTPC; trackTPC=0; continue;}
+      if(!(vertexESD->GetStatus()) || vertexESD->GetNContributors()<mincontrTRKvtx) {
+       if(useSPDvtxifNotTRK) {
+         vertexESD = fESD->GetPrimaryVertexSPD();
+       } else {
+         delete trackTPC; trackTPC=0; continue;
+       }
+      }
+    }
+
+    //if(hasSharedSPD) continue;
+    //if(track->GetITSFakeFlag()) continue;
+
     // track prolonged in ITS with different conditions
     if(itsrefit) {
       if(itsfindable) {
@@ -1306,8 +2193,10 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
        if(nclsITS==4) fHistPtITSMI4->Fill(track->Pt());
        if(nclsITS==3) fHistPtITSMI3->Fill(track->Pt());
        if(nclsITS==2) fHistPtITSMI2->Fill(track->Pt());
-       if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1))
+       if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)) {
          fHistPtITSMISPD->Fill(track->Pt());
+         fHistTPCclsVSPtITSMISPDInAcc->Fill(track->Pt(),track->GetNcls(1));
+       }
        if(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1))
          fHistPtITSMIoneSPD->Fill(track->Pt());
        if(nclsokbadoutinzITS==6) fHistPtITSMIokbadoutinz6->Fill(track->Pt());
@@ -1315,36 +2204,101 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
       if(itsfindableAcc) {
        if(nclsITS==6) {
          fHistPtITSMI6InAcc->Fill(track->Pt());
+         if(track->Pt()>1) {
+           fHistPhiITSMI6InAcc->Fill(track->Phi());
+           fHistEtaITSMI6InAcc->Fill(track->Eta());
+         }
+         if(isFake) fHistPtITSMI6InAccFake->Fill(track->Pt());
          if(isPrimary) {fHistPtITSMI6InAccP->Fill(track->Pt());} else {fHistPtITSMI6InAccS->Fill(track->Pt());}  
        }
        if(nclsITS==5) {
          fHistPtITSMI5InAcc->Fill(track->Pt());
+         if(track->Pt()>1) {
+           fHistPhiITSMI5InAcc->Fill(track->Phi());
+           fHistEtaITSMI5InAcc->Fill(track->Eta());
+         }
+         if(isFake) fHistPtITSMI5InAccFake->Fill(track->Pt());
          if(isPrimary) {fHistPtITSMI5InAccP->Fill(track->Pt());} else {fHistPtITSMI5InAccS->Fill(track->Pt());}  
        }
        if(nclsITS==4) {
          fHistPtITSMI4InAcc->Fill(track->Pt());
+         if(track->Pt()>1) {
+           fHistPhiITSMI4InAcc->Fill(track->Phi());
+           fHistEtaITSMI4InAcc->Fill(track->Eta());
+         }
+         if(isFake) fHistPtITSMI4InAccFake->Fill(track->Pt());
          if(isPrimary) {fHistPtITSMI4InAccP->Fill(track->Pt());} else {fHistPtITSMI4InAccS->Fill(track->Pt());}  
        }
        if(nclsITS==3) {
          fHistPtITSMI3InAcc->Fill(track->Pt());
+         if(track->Pt()>1) {
+           fHistPhiITSMI3InAcc->Fill(track->Phi());
+           fHistEtaITSMI3InAcc->Fill(track->Eta());
+         }
+         if(isFake) fHistPtITSMI3InAccFake->Fill(track->Pt());
          if(isPrimary) {fHistPtITSMI3InAccP->Fill(track->Pt());} else {fHistPtITSMI3InAccS->Fill(track->Pt());}  
        }
        if(nclsITS==2) {
          fHistPtITSMI2InAcc->Fill(track->Pt());
+         if(track->Pt()>1) {
+           fHistPhiITSMI2InAcc->Fill(track->Phi());
+           fHistEtaITSMI2InAcc->Fill(track->Eta());
+         }
+         if(isFake) fHistPtITSMI2InAccFake->Fill(track->Pt());
          if(isPrimary) {fHistPtITSMI2InAccP->Fill(track->Pt());} else {fHistPtITSMI2InAccS->Fill(track->Pt());}  
        }
        if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)) {
          fHistPtITSMISPDInAcc->Fill(track->Pt());
+         if(track->Pt()>1) {
+           fHistPhiITSMISPDInAcc->Fill(track->Phi());
+           fHistEtaITSMISPDInAcc->Fill(track->Eta());
+         }
+         if(isFake) fHistPtITSMISPDInAccFake->Fill(track->Pt());
          if(isPrimary) {fHistPtITSMISPDInAccP->Fill(track->Pt());} else {fHistPtITSMISPDInAccS->Fill(track->Pt());}  
        }
        if(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) {
          fHistPtITSMIoneSPDInAcc->Fill(track->Pt());
+         if(track->Pt()>1) {
+           fHistPhiITSMIoneSPDInAcc->Fill(track->Phi());
+           fHistEtaITSMIoneSPDInAcc->Fill(track->Eta());
+         }
+         if(track->HasSharedPointOnITSLayer(0) || 
+            track->HasSharedPointOnITSLayer(1) || 
+            track->HasSharedPointOnITSLayer(2) || 
+            track->HasSharedPointOnITSLayer(3) || 
+            track->HasSharedPointOnITSLayer(4) || 
+            track->HasSharedPointOnITSLayer(5)) {
+           fHistPtITSMIoneSPDInAccShared->Fill(track->Pt());
+           if(isFake) fHistPtITSMIoneSPDInAccSharedFake->Fill(track->Pt());
+         }
+         if(track->HasSharedPointOnITSLayer(0) || track->HasSharedPointOnITSLayer(1)) {
+           fHistPtITSMIoneSPDInAccSharedSPD->Fill(track->Pt());
+           if(isFake) fHistPtITSMIoneSPDInAccSharedSPDFake->Fill(track->Pt());
+         }
+         if(track->HasSharedPointOnITSLayer(0)) fHistPtITSMISPD1InAccShared->Fill(track->Pt());
+         if(track->HasSharedPointOnITSLayer(1)) fHistPtITSMISPD2InAccShared->Fill(track->Pt());
+
+         Float_t chi2redITS = track->GetITSchi2()/track->GetNcls(0);
+         if(fillA) fHistChi2PerClsITSInAccA->Fill(chi2redITS);
+         if(fillB) fHistChi2PerClsITSInAccB->Fill(chi2redITS);
+
+         if(track->Pt()>0.18 && track->Pt()<0.25)  fHistITSRedChi2NonFakePt02->Fill(chi2redITS);
+         if(track->Pt()>0.4 && track->Pt()<0.6)  fHistITSRedChi2NonFakePt05->Fill(chi2redITS);
+         if(track->Pt()>0.9 && track->Pt()<1.5)  fHistITSRedChi2NonFakePt1->Fill(chi2redITS);
+         if(isFake) {
+           fHistPtITSMIoneSPDInAccFake->Fill(track->Pt());
+           if(track->Pt()>0.18 && track->Pt()<0.25)  fHistITSRedChi2FakePt02->Fill(chi2redITS);
+           if(track->Pt()>0.4 && track->Pt()<0.6)  fHistITSRedChi2FakePt05->Fill(chi2redITS);
+           if(track->Pt()>0.9 && track->Pt()<1.5)  fHistITSRedChi2FakePt1->Fill(chi2redITS);
+         }
+         if(nclsSDDSSD>=3) fHistPtITSMIoneSPDthreeSDDSSDInAcc->Fill(track->Pt());
+
          if(isPrimary) {fHistPtITSMIoneSPDInAccP->Fill(track->Pt());} else {fHistPtITSMIoneSPDInAccS->Fill(track->Pt());}  
        }
        if(nclsokbadoutinzITS==6) fHistPtITSMIokbadoutinz6InAcc->Fill(track->Pt());
        if(nclsokbadoutinzITS==5) fHistPtITSMIokbadoutinz5InAcc->Fill(track->Pt());
        if(nclsokbadoutinzITS==4) fHistPtITSMIokbadoutinz4InAcc->Fill(track->Pt());
-       if(nclsokbadoutinzITS==6) fHistPhiITSMIokbadoutinz6InAcc->Fill(track->Phi());  
+       if(nclsokbadoutinzITS==6 && track->Pt()>1) fHistPhiITSMIokbadoutinz6InAcc->Fill(track->Phi());  
       }
     }
 
@@ -1356,25 +2310,28 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
     }
 
     
-    if(tpcrefit && fUseITSSAforNtuples) continue; // only ITS-SA for ntuples
-    if(!tpcrefit && !fUseITSSAforNtuples) continue; // only ITS-TPC for ntuples
+    if((tpcrefit && fUseITSSAforNtuples) || // only ITS-SA for ntuples
+       (!tpcrefit && !fUseITSSAforNtuples)) // only ITS-TPC for ntuples
+      { delete trackTPC; trackTPC=0; continue; }
 
-    // we need the vertex to compute the impact parameters
-    //if(!vertexESD) continue;
-    //if(!(vertexESD->GetStatus())) continue;
-    
     // impact parameter to VertexTracks
     Float_t d0z0[2],covd0z0[3];
     Double_t d0z0TPC[2],covd0z0TPC[3];
-    if(!track->RelateToVertex(spdv,fESD->GetMagneticField(),kVeryBig)) continue;
+    if(useTRKvtx) {
+      if(!track->RelateToVertex(vertexESD,fESD->GetMagneticField(),kVeryBig)) { delete trackTPC; trackTPC=0; continue; }
+    } else { 
+      //if(!track->RelateToVertex(vertexMC,fESD->GetMagneticField(),kVeryBig)) continue;
+      if(!track->RelateToVertex(spdv,fESD->GetMagneticField(),kVeryBig)) { delete trackTPC; trackTPC=0; continue; }
+    } 
     track->GetImpactParameters(d0z0,covd0z0);
     if(trackTPC) trackTPC->PropagateToDCA(spdv,fESD->GetMagneticField(),kVeryBig,d0z0TPC,covd0z0TPC);
-    if(covd0z0[0]<0. || covd0z0[2]<0.) continue;
-    if(covd0z0TPC[0]<0. || covd0z0TPC[2]<0.) continue;
+    if(covd0z0[0]<0. || covd0z0[2]<0. || covd0z0TPC[0]<0. || covd0z0TPC[2]<0.) { delete trackTPC; trackTPC=0; continue; }
+
 
     // track that passes final ITS+TPC cuts
     if(itsfindableAcc && fESDtrackCutsITSTPC->AcceptTrack(track)) {
       fHistPtITSTPCsel->Fill(track->Pt());
+      if(isFake) fHistPtITSTPCselFake->Fill(track->Pt());
       fHistdEdxVSPtITSTPCsel->Fill(track->Pt(),track->GetITSsignal());
       if(isPrimary) {
        fHistPtITSTPCselP->Fill(track->Pt());
@@ -1388,13 +2345,30 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
     
 
     // fill d0 histos
-    if((!fUseITSSAforNtuples&&itsfindableAcc) || fUseITSSAforNtuples) {
+    if(((!fUseITSSAforNtuples&&itsfindableAcc) || fUseITSSAforNtuples) /*&& track->Charge()>0*/) {
+      if(fillA && itsfindableAcc) {
+       fHistd0rphiTPCInAccA->Fill(d0z0TPC[0]);
+       fHistd0zTPCInAccA->Fill(d0z0TPC[1]);
+       if(!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit) {
+         fHistd0rphiITSMIoneSPDInAccA->Fill(d0z0[0]);
+         fHistd0zITSMIoneSPDInAccA->Fill(d0z0[1]);
+       }
+      }
+      if(fillB && itsfindableAcc) {
+       fHistd0rphiTPCInAccB->Fill(d0z0TPC[0]);
+       fHistd0zTPCInAccB->Fill(d0z0TPC[1]);
+       if(!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit) {
+         fHistd0rphiITSMIoneSPDInAccB->Fill(d0z0[0]);
+         fHistd0zITSMIoneSPDInAccB->Fill(d0z0[1]);
+       }
+      }
       if(track->Pt()>0.150 && track->Pt()<0.200) {
        if(isPrimary) {
          fHistd0rphiTPCInAccP150200->Fill(d0z0TPC[0]);
          if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
            fHistd0rphiITSMISPDInAccP150200->Fill(d0z0[0]);
          if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
+           //if(((track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) || (!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1))) && itsrefit) {
            if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP150200->Fill(d0z0[0]);
            if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccP150200->Fill(d0z0[1]);
          }
@@ -1403,12 +2377,31 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
          if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
            fHistd0rphiITSMISPDInAccS150200->Fill(d0z0[0]);
          if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
-           if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccS150200->Fill(d0z0[0]);
+           if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
+             fHistd0rphiITSMIoneSPDInAccS150200->Fill(d0z0[0]);
+             if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS150200fromStrange->Fill(d0z0[0]);
+             if(isFromMat) fHistd0rphiITSMIoneSPDInAccS150200fromMat->Fill(d0z0[0]);
+           }
            if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccS150200->Fill(d0z0[1]);
            if(TMath::Abs(d0z0[0])<0.1) fHistPDGMoth150200->Fill(pdgMoth);
          }
        }
       }
+      if(track->Pt()>0.350 && track->Pt()<0.450) {
+       if(isPrimary) {
+         if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
+           if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP350450->Fill(d0z0[0]);
+         }
+       } else {
+         if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
+           if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
+             fHistd0rphiITSMIoneSPDInAccS350450->Fill(d0z0[0]);
+             if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS350450fromStrange->Fill(d0z0[0]);
+             if(isFromMat) fHistd0rphiITSMIoneSPDInAccS350450fromMat->Fill(d0z0[0]);
+           }
+         }
+       }
+      }
       if(track->Pt()>0.500 && track->Pt()<0.700) {
        if(isPrimary) {
          fHistd0rphiTPCInAccP500700->Fill(d0z0TPC[0]);
@@ -1426,19 +2419,26 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
            fHistPDGTrk->Fill(pdgTrk);
            fHistPDGMoth->Fill(pdgMoth);
            if(TMath::Abs(d0z0[0])<0.1) fHistPDGMoth500700->Fill(pdgMoth);
-           if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccS500700->Fill(d0z0[0]);
+           if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
+             fHistd0rphiITSMIoneSPDInAccS500700->Fill(d0z0[0]);
+             if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS500700fromStrange->Fill(d0z0[0]);
+             if(isFromMat) fHistd0rphiITSMIoneSPDInAccS500700fromMat->Fill(d0z0[0]);
+           }
            if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccS500700->Fill(d0z0[1]);
            if(pdgMoth==310) fHistd0rphiITSMIoneSPDInAccS500700from310->Fill(d0z0[0]);
            if(pdgMoth==321) fHistd0rphiITSMIoneSPDInAccS500700from321->Fill(d0z0[0]);
+           if(pdgMoth==3122) fHistd0rphiITSMIoneSPDInAccS500700from3122->Fill(d0z0[0]);
            if(pdgMoth==211) fHistd0rphiITSMIoneSPDInAccS500700from211->Fill(d0z0[0]);
            if(pdgMoth==22) fHistd0rphiITSMIoneSPDInAccS500700from22->Fill(d0z0[0]);
-           if(pdgMoth!=310 && pdgMoth!=321 && pdgMoth<3000) fHistRProdVtxInAccS->Fill(rProdVtx);
+           if(pdgMoth==211 && TMath::Abs(d0z0[0])>0.5) fHistRProdVtxInAccS->Fill(rProdVtx);
          }
        }
       }
       if(track->Pt()>1.000 && track->Pt()<1.500) {
        if(isPrimary) {
          fHistd0rphiTPCInAccP10001500->Fill(d0z0TPC[0]);
+         fHistd0zVSetaTPCInAccP10001500->Fill(d0z0TPC[1],trackTPC->Eta());
+
          if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
            fHistd0rphiITSMISPDInAccP10001500->Fill(d0z0[0]);
          if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
@@ -1452,14 +2452,50 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
          if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
            fHistd0rphiITSMISPDInAccS10001500->Fill(d0z0[0]);
          if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
-           if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccS10001500->Fill(d0z0[0]);
+           if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
+             fHistd0rphiITSMIoneSPDInAccS10001500->Fill(d0z0[0]);
+             if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS10001500fromStrange->Fill(d0z0[0]);
+             if(isFromMat) fHistd0rphiITSMIoneSPDInAccS10001500fromMat->Fill(d0z0[0]);
+           }
            if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccS10001500->Fill(d0z0[1]);
            if(TMath::Abs(d0z0[0])<0.1) fHistPDGMoth10001500->Fill(pdgMoth);
          }
        }
       }
+      if(track->Pt()>2.500 && track->Pt()<4.000) {
+       if(isPrimary) {
+         if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
+           if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP25004000->Fill(d0z0[0]);
+         }
+       } else {
+         if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
+           if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
+             fHistd0rphiITSMIoneSPDInAccS25004000->Fill(d0z0[0]);
+             if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS25004000fromStrange->Fill(d0z0[0]);
+             if(isFromMat) fHistd0rphiITSMIoneSPDInAccS25004000fromMat->Fill(d0z0[0]);
+           }
+         }
+       }
+      }
+      if(track->Pt()>4.000 && track->Pt()<8.000) {
+       if(isPrimary) {
+         if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
+           if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP40008000->Fill(d0z0[0]);
+         }
+       } else {
+         if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
+           if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
+             fHistd0rphiITSMIoneSPDInAccS40008000->Fill(d0z0[0]);
+             if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS40008000fromStrange->Fill(d0z0[0]);
+             if(isFromMat) fHistd0rphiITSMIoneSPDInAccS40008000fromMat->Fill(d0z0[0]);
+           }
+         }
+       }
+      }
+
     }
 
+    if(trackTPC) { delete trackTPC; trackTPC=0; }
 
     // encode ITS cluster map, including MC info
     Int_t iITSflag=MakeITSflag(track);
@@ -1483,7 +2519,7 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
 
     // fill ntuple with track properties
     if(fFillNtuples && SelectPt(track->Pt())) {
-      Float_t fillArray[21]={track->Pt(),track->Eta(),track->Phi(),d0z0[0],d0z0[1],TMath::Sqrt(covd0z0[0]),TMath::Sqrt(covd0z0[2]),ptMC,pdgMC,d0MC,d0z0MCv[0],d0z0MCv[1],sigmad0MCv,TMath::Sqrt(covd0z0MCv[2]),(Float_t)iITSflag,isPrimaryFl,isTPCSelFl};
+      Float_t fillArray[22]={track->Pt(),track->Eta(),track->Phi(),d0z0[0],d0z0[1],TMath::Sqrt(covd0z0[0]),TMath::Sqrt(covd0z0[2]),ptMC,pdgMC,pdgMoth,d0MC,d0z0MCv[0],d0z0MCv[1],sigmad0MCv,TMath::Sqrt(covd0z0MCv[2]),(Float_t)iITSflag,isPrimaryFl,isTPCSelFl};
       fNtupleESDTracks->Fill(fillArray);
     }
 
@@ -1491,7 +2527,6 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
     // AliTrackPoints: alignment checks
     // 
     if(!fFillNtuples) continue;
-    if(!fESDfriend) continue;
 
     const AliTrackPointArray *array = track->GetTrackPointArray();
     if(!array) continue;
@@ -1580,6 +2615,8 @@ void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
   delete esdtrackCutsTPC;    esdtrackCutsTPC=0;
   delete esdtrackCutsITSTPC; esdtrackCutsITSTPC=0;
 
+  PostData(1, fOutput);
+
   return;
 }      
 
@@ -1604,7 +2641,7 @@ void AliAnalysisTaskITSTrackingCheck::Terminate(Option_t *)
   return;
 }
 //---------------------------------------------------------------------------
-Int_t AliAnalysisTaskITSTrackingCheck::NumberOfITSClustersMC(Int_t label) const
+Int_t AliAnalysisTaskITSTrackingCheck::NumberOfITSClustersMC(Int_t label,Int_t nModules) const
 {
   //
   // Return number of ITS clusters produced by MC particle with given label
@@ -1614,7 +2651,7 @@ Int_t AliAnalysisTaskITSTrackingCheck::NumberOfITSClustersMC(Int_t label) const
   if(!esdHRP) return -1;
   TTree *cTree = (TTree*)esdHRP->GetTreeR("ITS");
   if(!cTree) return -1;
-  TClonesArray *clusters=0;   // new TClonesArray("AliITSRecPoint",10000);
+  TClonesArray *clusters=0;
   cTree->SetBranchAddress("ITSRecPoints",&clusters);
   if(!clusters) return -1;
 
@@ -1623,21 +2660,24 @@ Int_t AliAnalysisTaskITSTrackingCheck::NumberOfITSClustersMC(Int_t label) const
   Int_t ncls[6]={0,0,0,0,0,0};
   Int_t nclstot=0;
 
-  for(i=0; i<2198; i++) {
+  for(i=0; i<nModules; i++) {
     cTree->GetEvent(i);
     n=clusters->GetEntriesFast();
     for (icl=0; icl<n; icl++) {
       c=(AliITSRecPoint*)clusters->UncheckedAt(icl);
       lay=c->GetLayer();
+      //printf("mod %d lay %d xloc %f zloc %f\n",i,lay,c->GetDetLocalX(),c->GetDetLocalZ());
       for(ilab=0;ilab<3;ilab++) {
         if(c->GetLabel(ilab)==label) ncls[lay]++;
       }
     }
   }
-  for(i=0;i<6;i++) { if(ncls[i]) nclstot++; }
+  for(i=0;i<6;i++) { 
+    //printf("%d\n",ncls[i]); 
+    if(ncls[i]) nclstot++; 
+  }
 
   return nclstot;
-    //return label*0;
 }
 //---------------------------------------------------------------------------
 Int_t AliAnalysisTaskITSTrackingCheck::NumberOfITSClusters(Int_t idet,Float_t &xloc) const
@@ -1669,6 +2709,28 @@ Int_t AliAnalysisTaskITSTrackingCheck::NumberOfITSClusters(Int_t idet,Float_t &x
   return n;
 }
 //---------------------------------------------------------------------------
+void AliAnalysisTaskITSTrackingCheck::FillNClustersModuleMap()
+{
+  //
+  // Number of clusters per module
+  //
+  
+  AliESDInputHandlerRP *esdHRP = dynamic_cast<AliESDInputHandlerRP*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
+  if(!esdHRP) return;
+  TTree *cTree = (TTree*)esdHRP->GetTreeR("ITS");
+  if(!cTree) return;
+  TClonesArray *clusters=0;   // new TClonesArray("AliITSRecPoint",10000);
+  cTree->SetBranchAddress("ITSRecPoints",&clusters);
+
+  for(Int_t idet=0;idet<2198;idet++) {
+    cTree->GetEvent(idet);
+    if(!clusters) continue;
+    fHistNClustersMapModule->SetBinContent(idet,clusters->GetEntriesFast());
+  }
+
+  return;
+}
+//---------------------------------------------------------------------------
 Double_t AliAnalysisTaskITSTrackingCheck::ParticleImpParMC(TParticle *part,
                                                           AliESDVertex *vert,
                                                           Double_t bzT) const
@@ -1729,7 +2791,7 @@ Int_t AliAnalysisTaskITSTrackingCheck::MakeITSflag(AliESDtrack *track) const {
   if(track->HasPointOnITSLayer(4)) iITSflag+=100;
   if(track->HasPointOnITSLayer(5)) iITSflag+=200;
   
-  if(iITSflag==333 && track->GetNcls(0)<6) 
+  if(iITSflag==333 && track->GetNcls(0)<6)
     printf(" ERROR %d   %d\n",track->GetNcls(0),track->GetLabel());
   
   // number of associated ITS clusters
@@ -1750,6 +2812,26 @@ Int_t AliAnalysisTaskITSTrackingCheck::MakeITSflag(AliESDtrack *track) const {
 
   return iITSflag;
 }
+//---------------------------------------------------------------------------
+Bool_t AliAnalysisTaskITSTrackingCheck::IsSelectedCentrality() const
+{
+  //
+  // check if events is in the required multiplicity range
+  //
+
+  const AliMultiplicity *alimult = fESD->GetMultiplicity();
+  Int_t ntrklets=1;
+  Int_t nclsSPDouter=0;
+  if(alimult) {
+    ntrklets = alimult->GetNumberOfTracklets();
+    nclsSPDouter = alimult->GetNumberOfITSClusters(1);
+  }
+
+  if(nclsSPDouter<fMinMult || nclsSPDouter>fMaxMult) return kFALSE;
+
+
+  return kTRUE;
+}