]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/SPECTRA/AliAnalysisChargedHadronSpectraITSTruncatedMeanTask.cxx
Request by Martin: added flag for big output
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliAnalysisChargedHadronSpectraITSTruncatedMeanTask.cxx
index 7a3d261d1c06286be6513ed8772576c59ee5126a..c9501e4b262eeedc827c7c9563c47969d1cb22c9 100644 (file)
@@ -31,6 +31,8 @@
 //#include "AliESDpidCuts.h"
 //#include "AliESDpid.h"
 #include "AliCentrality.h"
+#include "AliESDUtils.h"
+#include "AliMultiplicity.h"
 
    class     AliMCEventHandler;
      class   Riostream;
@@ -41,7 +43,7 @@ ClassImp(AliAnalysisChargedHadronSpectraITSTruncatedMeanTask)
 //________________________________________________________________________
 AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::AliAnalysisChargedHadronSpectraITSTruncatedMeanTask(const char *name) 
 :AliAnalysisTaskSE(name),fESD(0),fCuts(0),fCutsMul(0),fMC(0),
-fLowMultiplicity(-1),fUpMultiplicity(-1),fLowCentrality(-10.0),fUpCentrality(-10.0),
+fLowMultiplicity(-1),fUpMultiplicity(-1),fLowCentrality(-10.0),fUpCentrality(-10.0),fSPD(0),fUsePilerejection(0),
 fYCut(100.0),fsigmacut(3.0),fnsigmaxy(7.0),fnsigmaz(5.0),fchargeCut(0.0),
 fCorrectSDD(0),fCorrectSSD(0),fHIsettings(0),fdovertexrescuts(0),
  fK0weight(0),flambdaweight(0),fAntilambdaweight(0),
@@ -58,7 +60,7 @@ fDCAXYZOpenforcleanPions(0),fDCAXYZOpenforcleanAntiPions(0),fDCAXYZOpenforcleanP
 fHistNtrackwithstandardcuts(0),fHistNtrackwithITSPIDcuts(0),
 fHistSignalinTPCKaonforstandardcuts(0),fHistSignalinTPCKaonforITSPIDcuts(0),fHistSignalinTPCAntiKaonforstandardcuts(0),fHistSignalinTPCAntiKaonforITSPIDcuts(0),
 fHistSignalinTPCProtonforstandardcuts(0),fHistSignalinTPCProtonforITSPIDcuts(0),fHistSignalinTPCAntiProtonforstandardcuts(0),fHistSignalinTPCAntiProtonforITSPIDcuts(0),
-fHistStandartMul(0),fHistMytrackMul(0),
+fHistStandartMul(0),fHistMytrackMul(0),fHistStandartMulvSPD2(0),
 fHistminsignalifPionPPrimary(0),fHistminsignalifKaonPPrimary(0),fHistminsignalifProtonPPrimary(0),fHistminsignalifProtonPPrimaryfake(0),
 fHistminsignalifAntiPionPPrimary(0),fHistminsignalifAntiKaonPPrimary(0),fHistminsignalifAntiProtonPPrimary(0),fHistminsignalifAntiProtonPPrimaryfake(0),
 fHistminsignalifPionPSecondary(0),fHistminsignalifKaonPSecondary(0),
@@ -140,6 +142,7 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserCreateOutputObject
        //UserCreateOutputObject
        Printf("AliAnalysisChargedHadronSpectraITSTruncatedMeanTask UserCreateOutputObjects");
          flist=new TList();
+        flist->SetOwner();
        Float_t ptmax=2.0;
        Float_t etamax=1.0;
        
@@ -379,6 +382,8 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserCreateOutputObject
                flist->Add(fHistStandartMul);
                fHistMytrackMul=new TH1F("fHistMytrackMul",";Ntracks;counts",300,0,3000);
                flist->Add(fHistMytrackMul);
+               fHistStandartMulvSPD2=new TH2F("fHistStandartMulvSPD2",";Ntracks;nSPD2;counts",300,0,3000,300,0,3000);
+               flist->Add(fHistStandartMulvSPD2);
        }
        else
        {
@@ -386,6 +391,8 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserCreateOutputObject
                flist->Add(fHistStandartMul);
                fHistMytrackMul=new TH1F("fHistMytrackMul",";Ntracks;counts",300,0,300);
                flist->Add(fHistMytrackMul);
+               fHistStandartMulvSPD2=new TH2F("fHistStandartMulvSPD2",";Ntracks;nSPD2;counts",300,0,300,300,0,300);
+               flist->Add(fHistStandartMulvSPD2);
        }
        fTracksCutmonitoring=new TH2F("fTracksCutmonitoring",";cut;pt[GeV/c];N_{entries}",4,0.5,4.5,kPtBins,binsPtDummy);       
        fTracksCutmonitoring->GetXaxis()->SetBinLabel(1,"TPCin");
@@ -394,6 +401,9 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserCreateOutputObject
        fTracksCutmonitoring->GetXaxis()->SetBinLabel(4,"DCA");
        flist->Add(fTracksCutmonitoring);
        
+       
+       
+       
        if(!fMC)
        {
                
@@ -744,7 +754,6 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
        Bool_t isphysevent=0;
        Bool_t isgoodvertex=0;
        Bool_t isvxerteinZ=0;
-               
         fESD = dynamic_cast<AliESDEvent*> (InputEvent());
        if (!fESD) 
        {
@@ -753,16 +762,19 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
        }
        
        Float_t refmultiplicity=fCutsMul->CountAcceptedTracks(fESD);
-       if(fLowMultiplicity>-1)
-       {
-               if(refmultiplicity<fLowMultiplicity)
-                       return;
-       }
-       if(fUpMultiplicity>-1)
+       if(!fSPD)
        {
-               if(refmultiplicity>fUpMultiplicity)
-                       return;
-       }
+               if(fLowMultiplicity>-1)
+               {
+                       if(refmultiplicity<fLowMultiplicity)
+                               return;
+               }
+               if(fUpMultiplicity>-1)
+               {
+                       if(refmultiplicity>fUpMultiplicity)
+                               return;
+               }
+       }       
        AliStack* stack=0x0;
        Double_t mcXvertex=0.0;
        Double_t mcYvertex=0.0;
@@ -808,7 +820,7 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
                                fHistStats->Fill(1);
                }       
        }
-       
+       //Printf("MC 1");
        //Good vertex   
        const AliESDVertex *vertex = 0x0;
        if(isphysevent)
@@ -826,7 +838,7 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
                        else
                        {
                                isgoodvertex=1;
-                               fHistStats->Fill(2);    
+                               //fHistStats->Fill(2);  
                                fHistZVertexBeforeCut->Fill(vertex ->GetZ());
                                fHistXYVertexBeforeCut->Fill(vertex ->GetX(),vertex ->GetY());
                        }       
@@ -834,10 +846,15 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
                else
                {
                        isgoodvertex=1; 
-                       fHistStats->Fill(2);    
+                       //fHistStats->Fill(2);  
                        fHistZVertexBeforeCut->Fill(vertex ->GetZ());
                        fHistXYVertexBeforeCut->Fill(vertex ->GetX(),vertex ->GetY()); 
                }
+               if(isgoodvertex&&fUsePilerejection)
+               {
+                       if(fESD->IsPileupFromSPDInMultBins())
+                               isgoodvertex=0;
+               }
                if(isgoodvertex)
                {       
                        if(TMath::Abs(vertex ->GetZ())>10.0)
@@ -849,20 +866,58 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
                                isvxerteinZ=1;
                }       
        }
+       
+       
        if(fdovertexrescuts&&fMC)
        {
-               cout<<TMath::Abs(vertex->GetX()-mcXvertex)<<" "<<TMath::Abs(vertex->GetY()-mcYvertex)<<" "<<TMath::Abs(vertex->GetZ()-mcZvertex)<<endl;
-               if(TMath::Abs(vertex->GetX()-mcXvertex)>0.015||TMath::Abs(vertex->GetY()-mcYvertex)>0.015||TMath::Abs(vertex->GetZ()-mcZvertex)>0.15)
-                       isvxerteinZ=0;  
+               if(vertex)
+               {
+                       cout<<TMath::Abs(vertex->GetX()-mcXvertex)<<" "<<TMath::Abs(vertex->GetY()-mcYvertex)<<" "<<TMath::Abs(vertex->GetZ()-mcZvertex)<<endl;
+                       if(TMath::Abs(vertex->GetX()-mcXvertex)>0.015||TMath::Abs(vertex->GetY()-mcYvertex)>0.015||TMath::Abs(vertex->GetZ()-mcZvertex)>0.15)
+                               isvxerteinZ=0;
+               }               
        }  
+       Float_t spdCorr=-1.0;
+       if(isgoodvertex)
+       {
+               const AliMultiplicity *mult = fESD->GetMultiplicity();
+               Float_t nClusters[6]={0.0,0.0,0.0,0.0,0.0,0.0};
+               for(Int_t ilay=0; ilay<6; ilay++)
+               {
+                       nClusters[ilay] = (Float_t)mult->GetNumberOfITSClusters(ilay);
+               } 
+               spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],vertex->GetZ());
+               if(fSPD)
+               {
+                       if(fLowMultiplicity>-1)
+                       {
+                               if(((Int_t)spdCorr)<fLowMultiplicity)
+                               {
+                                       PostData(1,  flist);                            
+                                       return;
+                               }       
+                       }
+                       if(fUpMultiplicity>-1)
+                       {
+                               if(((Int_t)spdCorr)>fUpMultiplicity)
+                               {
+                                       PostData(1,  flist);
+                                       return;
+                               }       
+                       }               
+               }
+               fHistStats->Fill(2);
+       }
+       
+       //Printf("MC 2");
        Int_t fMCmult=0;
-       if(stack)//Looping over MC information of all events
+       if(stack&&fMC)//Looping over MC information of all events
        {
                Float_t minpt=0.0;
                Float_t maxpt=0.0;
                Float_t mineta=0.0;
                Float_t maxeta=0.0;
-               
+               //Printf("MC 12");
                fCutsMul->GetPtRange(minpt,maxpt);
                fCutsMul->GetEtaRange(mineta,maxeta);
                fHistStats->Fill(8);
@@ -885,7 +940,7 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
                        if (particleMC->Pt()>2.0)
                                continue;
                        //Printf("%d aa",imc);                  
-                       
+               //      Printf("MC 22");
                        if(pdgcodeMC==211)      
                                fHistminsignalifPionPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
                        if(pdgcodeMC==-211)     
@@ -958,8 +1013,12 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
                        }               
                                                        
                }
-       }                
-       
+       }
+       else if(fMC)
+           return;
+       else 
+               Printf("Data mode \n"); 
+                        
        if(!(isphysevent&&isgoodvertex&&isvxerteinZ))
        {
                //Printf("No Good event.........\n");
@@ -968,6 +1027,9 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
                return;
        }
        
+       
+
+       fHistStandartMulvSPD2->Fill(refmultiplicity,spdCorr);
        fHistStats->Fill(3);
                
        fHistZVertexAfterCut->Fill(vertex ->GetZ());
@@ -1029,7 +1091,7 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
                if(fMC)
                        label=trackESD->GetLabel();
                //if(label<0)   
-               //      Printf("label %d %f %f %f %f %d %f %f\n",label,p,pt,eta,chi2,nTPCclusters,dcaxy,dcaz);  
+       //      Printf("label %d %f %f %f %f %d %f %f\n",label,p,pt,eta,chi2,nTPCclusters,dcaxy,dcaz);  
                Int_t pdgcode=0;
                Int_t primary=0;
                Double_t chargeMC=1.0;
@@ -1257,7 +1319,7 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
                Int_t nosignaL=-1;
                if(nSSDSDD==3)
                {
-                       Double_t tmp2QESD[3];
+                       Double_t tmp2QESD[3]={-1.0,-1.0,-1.0};
                        Int_t iLnotZero=0;
                        for (int iL=0;iL<4;iL++)
                        {
@@ -1314,6 +1376,7 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
                        if(nSSDSDD==4)
                                fHistMysignalminusESD->Fill((signaltouse-trackESD->GetITSsignal())/signaltouse);        
                }
+               //Printf("Select on clean \n"); 
                if(TMath::Abs(yforpion)<=fYCut)
                {
                        Float_t weight=1.0;
@@ -1376,7 +1439,11 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
                                                }
                                                else if(primary&&pdgcode==-11)
                                                {
-                                                       fPrimaryElectronsMother->Fill(stack->Particle(particle2->GetFirstMother())->GetPdgCode());
+                                                       Printf("%d Mom",particle2->GetFirstMother());
+                                                       if(particle2->GetFirstMother()>-1)
+                                                               fPrimaryElectronsMother->Fill(TMath::Abs(stack->Particle(particle2->GetFirstMother())->GetPdgCode()));
+                                                       else
+                                                               fPrimaryElectronsMother->Fill(-1);
                                                        fAntiElectronsource->Fill(pt,0);
                                                }                       
                                                else if(primary&&pdgcode==-13)
@@ -1466,7 +1533,11 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
                                                }
                                                else if(primary&&pdgcode==11)
                                                {
-                                                       fPrimaryElectronsMother->Fill(stack->Particle(particle2->GetFirstMother())->GetPdgCode());
+                                                       Printf("%d Mom",particle2->GetFirstMother());
+                                                       if(particle2->GetFirstMother()>-1)
+                                                               fPrimaryElectronsMother->Fill(TMath::Abs(stack->Particle(particle2->GetFirstMother())->GetPdgCode()));
+                                                       else
+                                                               fPrimaryElectronsMother->Fill(-1);
                                                        fElectronsource->Fill(TMath::Abs(pt),0);
                                                }       
                                                else if(primary&&pdgcode==13)
@@ -1882,4 +1953,4 @@ void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::SetMultiplicityCut(Int
                fLowMultiplicity=low;
                fUpMultiplicity=up;
        }       
-}      
\ No newline at end of file
+}