]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/vertexingHF/AliAnalysisTaskSEDs.cxx
Added support for dylib in test mode
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAnalysisTaskSEDs.cxx
index 112b04956fec9d5aa389fcda74b1661170dbe0f1..336a8ecec57e5c86fe832a5b781f227f8ef81d74 100644 (file)
@@ -53,11 +53,14 @@ AliAnalysisTaskSEDs::AliAnalysisTaskSEDs():
   fOutput(0), 
   fHistNEvents(0),
   fPtVsMass(0),
+  fPtVsMassPhi(0),
+  fPtVsMassK0st(0),
   fYVsPt(0),
   fYVsPtSig(0),
   fNtupleDs(0),
   fFillNtuple(0),
   fReadMC(kFALSE),
+  fWriteOnlySignal(kFALSE),
   fDoCutVarHistos(kTRUE),
   fUseSelectionBit(kFALSE),
   fNPtBins(0),
@@ -68,6 +71,12 @@ AliAnalysisTaskSEDs::AliAnalysisTaskSEDs():
   fAnalysisCuts(0)
 {
   // Default constructor
+  
+  for(Int_t i=0;i<3;i++){
+    if(fHistCentrality[i])fHistCentrality[i]=0;
+    if(fHistCentralityMult[i])fHistCentralityMult[i]=0;
+  }
+  
 
   for(Int_t i=0;i<4;i++) {
     if(fChanHist[i]) fChanHist[i]=0;
@@ -109,11 +118,14 @@ AliAnalysisTaskSEDs::AliAnalysisTaskSEDs(const char *name,AliRDHFCutsDstoKKpi* a
   fOutput(0),
   fHistNEvents(0),
   fPtVsMass(0),
+  fPtVsMassPhi(0),
+  fPtVsMassK0st(0),
   fYVsPt(0),
   fYVsPtSig(0),
   fNtupleDs(0),
   fFillNtuple(fillNtuple),
   fReadMC(kFALSE),
+  fWriteOnlySignal(kFALSE),
   fDoCutVarHistos(kTRUE),
   fUseSelectionBit(kFALSE),
   fNPtBins(0),
@@ -126,6 +138,11 @@ AliAnalysisTaskSEDs::AliAnalysisTaskSEDs(const char *name,AliRDHFCutsDstoKKpi* a
   // Default constructor
   // Output slot #1 writes into a TList container
   
+  for(Int_t i=0;i<3;i++){
+    if(fHistCentrality[i])fHistCentrality[i]=0;
+    if(fHistCentralityMult[i])fHistCentralityMult[i]=0;
+  }
+  
   for(Int_t i=0;i<4;i++) {
     if(fChanHist[i]) fChanHist[i]=0;
   }
@@ -226,6 +243,8 @@ AliAnalysisTaskSEDs::~AliAnalysisTaskSEDs()
   }
 
   delete fPtVsMass;
+  delete fPtVsMassPhi;
+  delete fPtVsMassK0st;
   delete fYVsPt;
   delete fYVsPtSig;
   delete fNtupleDs;
@@ -264,6 +283,19 @@ void AliAnalysisTaskSEDs::UserCreateOutputObjects()
   fOutput = new TList();
   fOutput->SetOwner();
   fOutput->SetName("OutputHistos");
+  
+  fHistCentrality[0]=new TH1F("hCentr","centrality",10000,0.,100.);
+  fHistCentrality[1]=new TH1F("hCentr(selectedCent)","centrality(selectedCent)",10000,0.,100.);
+  fHistCentrality[2]=new TH1F("hCentr(OutofCent)","centrality(OutofCent)",10000,0.,100.);
+  fHistCentralityMult[0]=new TH2F("hCentrMult","centrality vs mult",100,0.5,30000.5,40,0.,100.);
+  fHistCentralityMult[1]=new TH2F("hCentrMult(selectedCent)","centrality vs mult(selectedCent)",100,0.5,30000.5,40,0.,100.);
+  fHistCentralityMult[2]=new TH2F("hCentrMult(OutofCent)","centrality vs mult(OutofCent)",100,0.5,30000.5,40,0.,100.);
+  for(Int_t i=0;i<3;i++){
+    fHistCentrality[i]->Sumw2();
+    fOutput->Add(fHistCentrality[i]);
+    fHistCentralityMult[i]->Sumw2();
+    fOutput->Add(fHistCentralityMult[i]);  
+  }
 
   Double_t massDs=TDatabasePDG::Instance()->GetParticle(431)->Mass();
   
@@ -392,10 +424,14 @@ void AliAnalysisTaskSEDs::UserCreateOutputObjects()
   fOutput->Add(fHistNEvents);
 
   fPtVsMass=new TH2F("hPtVsMass","PtVsMass (prod. cuts)",nInvMassBins,minMass,maxMass,40,0.,20.);
+  fPtVsMassPhi=new TH2F("hPtVsMassPhi","PtVsMass (phi selection)",nInvMassBins,minMass,maxMass,200,0.,20.);
+  fPtVsMassK0st=new TH2F("hPtVsMassK0st","PtVsMass (K0* selection)",nInvMassBins,minMass,maxMass,200,0.,20.);
   fYVsPt=new TH2F("hYVsPt","YvsPt (prod. cuts)",40,0.,20.,80,-2.,2.);
   fYVsPtSig=new TH2F("hYVsPtSig","YvsPt (MC, only sig., prod. cuts)",40,0.,20.,80,-2.,2.);
 
   fOutput->Add(fPtVsMass);
+  fOutput->Add(fPtVsMassPhi);
+  fOutput->Add(fPtVsMassK0st);
   fOutput->Add(fYVsPt);
   fOutput->Add(fYVsPtSig);
 
@@ -462,22 +498,30 @@ void AliAnalysisTaskSEDs::UserExec(Option_t */*option*/)
   
 
   Bool_t isEvSel=fAnalysisCuts->IsEventSelected(aod);
+  Float_t ntracks=aod->GetNTracks();
+  Float_t evCentr=fAnalysisCuts->GetCentrality(aod);
+  
+  fHistCentrality[0]->Fill(evCentr);
+  fHistCentralityMult[0]->Fill(ntracks,evCentr);
   if(fAnalysisCuts->IsEventRejectedDueToTrigger())fHistNEvents->Fill(2);
   if(fAnalysisCuts->IsEventRejectedDueToNotRecoVertex())fHistNEvents->Fill(3);
   if(fAnalysisCuts->IsEventRejectedDueToVertexContributors())fHistNEvents->Fill(4);
   if(fAnalysisCuts->IsEventRejectedDueToZVertexOutsideFiducialRegion())fHistNEvents->Fill(5);
-  if(fAnalysisCuts->IsEventRejectedDueToPileupSPD())fHistNEvents->Fill(6);
-  if(fAnalysisCuts->IsEventRejectedDueToCentrality())fHistNEvents->Fill(7);
+  if(fAnalysisCuts->IsEventRejectedDueToPileup())fHistNEvents->Fill(6);
+  if(fAnalysisCuts->IsEventRejectedDueToCentrality()){
+    fHistNEvents->Fill(7); 
+    fHistCentrality[2]->Fill(evCentr);
+    fHistCentralityMult[2]->Fill(ntracks,evCentr);
+  }
   
   Float_t centrality=fAnalysisCuts->GetCentrality(aod);
   Int_t runNumber=aod->GetRunNumber();
 
   if(!isEvSel)return;
   
-    
-
-  
   fHistNEvents->Fill(1);
+  fHistCentrality[1]->Fill(evCentr);
+  fHistCentralityMult[1]->Fill(ntracks,evCentr);
 
   TClonesArray *arrayMC=0;
   AliAODMCHeader *mcHeader=0;
@@ -533,7 +577,7 @@ void AliAnalysisTaskSEDs::UserExec(Option_t */*option*/)
     
     Double_t ptCand = d->Pt();
     Int_t iPtBin=TMath::BinarySearch(fNPtBins,fPtLimits,(Float_t)ptCand);
-    Int_t retCodeAnalysisCuts=fAnalysisCuts->IsSelected(d,AliRDHFCuts::kCandidate,aod);
+    Int_t retCodeAnalysisCuts=fAnalysisCuts->IsSelected(d,AliRDHFCuts::kAll,aod);
     Double_t rapid=d->YDs(); 
     fYVsPt->Fill(ptCand,rapid);
 
@@ -567,7 +611,8 @@ void AliAnalysisTaskSEDs::UserExec(Option_t */*option*/)
     Int_t indexMCpiKK=-1;
     Int_t labDs=-1;
     Int_t pdgCode0=-999;
-    
+    Int_t isMCSignal=-1;
+
     if(fReadMC){
       labDs = d->MatchToMC(431,arrayMC,3,pdgDstoKKpi);
       if(labDs>=0){
@@ -580,9 +625,11 @@ void AliAnalysisTaskSEDs::UserExec(Option_t */*option*/)
            indexMCKKpi=GetSignalHistoIndex(iPtBin);
            fYVsPtSig->Fill(ptCand,rapid);
            fChanHist[1]->Fill(retCodeAnalysisCuts);
+           isMCSignal=1;
          }else{
            indexMCKKpi=GetReflSignalHistoIndex(iPtBin);
            fChanHist[3]->Fill(retCodeAnalysisCuts);
+           isMCSignal=0;
          }
        }
        if(ispiKK){
@@ -590,9 +637,11 @@ void AliAnalysisTaskSEDs::UserExec(Option_t */*option*/)
            indexMCpiKK=GetSignalHistoIndex(iPtBin);
            fYVsPtSig->Fill(ptCand,rapid);
            fChanHist[1]->Fill(retCodeAnalysisCuts);
+           isMCSignal=1;
          }else{
            indexMCpiKK=GetReflSignalHistoIndex(iPtBin);
            fChanHist[3]->Fill(retCodeAnalysisCuts);
+           isMCSignal=0;
          }
        }
       }else{
@@ -606,8 +655,14 @@ void AliAnalysisTaskSEDs::UserExec(Option_t */*option*/)
       Double_t invMass=d->InvMassDsKKpi();
       fMassHist[index]->Fill(invMass);
       fPtVsMass->Fill(invMass,ptCand);
-      if(isPhiKKpi) fMassHistPhi[index]->Fill(invMass); 
-      if(isK0starKKpi) fMassHistK0st[index]->Fill(invMass);
+      if(isPhiKKpi){
+       fMassHistPhi[index]->Fill(invMass); 
+       fPtVsMassPhi->Fill(invMass,ptCand);
+      }
+      if(isK0starKKpi){
+       fMassHistK0st[index]->Fill(invMass);
+       fPtVsMassK0st->Fill(invMass,ptCand);
+      }
       if(fReadMC  && indexMCKKpi!=-1){
        fMassHist[indexMCKKpi]->Fill(invMass);
        if(isPhiKKpi) fMassHistPhi[indexMCKKpi]->Fill(invMass);
@@ -618,8 +673,14 @@ void AliAnalysisTaskSEDs::UserExec(Option_t */*option*/)
       Double_t invMass=d->InvMassDspiKK();
       fMassHist[index]->Fill(invMass);
       fPtVsMass->Fill(invMass,ptCand);
-      if(isPhipiKK) fMassHistPhi[index]->Fill(invMass);
-      if(isK0starpiKK) fMassHistK0st[index]->Fill(invMass);
+      if(isPhipiKK){ 
+       fMassHistPhi[index]->Fill(invMass);
+       fPtVsMassPhi->Fill(invMass,ptCand);
+      }
+      if(isK0starpiKK){
+       fMassHistK0st[index]->Fill(invMass);
+       fPtVsMassK0st->Fill(invMass,ptCand);
+      }
       if(fReadMC  && indexMCpiKK!=-1){
        fMassHist[indexMCpiKK]->Fill(invMass);
        if(isPhipiKK) fMassHistPhi[indexMCpiKK]->Fill(invMass);
@@ -713,6 +774,7 @@ void AliAnalysisTaskSEDs::UserExec(Option_t */*option*/)
         UInt_t BitMapPIDTrack2=fAnalysisCuts->GetPIDTrackTPCTOFBitMap(track2);
    
            tmp[0]=Float_t(labDs);
+           if(fReadMC && fWriteOnlySignal) tmp[0]=Float_t(isMCSignal);
            tmp[1]=Float_t(retCodeAnalysisCuts);
            tmp[2]=Float_t(pdgCode0);  
            tmp[3]=d->PtProng(0);
@@ -750,9 +812,13 @@ void AliAnalysisTaskSEDs::UserExec(Option_t */*option*/)
            tmp[35]=(Float_t)(centrality);
            tmp[36]=(Float_t)(runNumber);       
        
-           fNtupleDs->Fill(tmp);
+           if(fReadMC && fWriteOnlySignal){
+             if(isMCSignal>=0) fNtupleDs->Fill(tmp);
+           }else{
+             fNtupleDs->Fill(tmp);
+           }
            PostData(4,fNtupleDs);
-      }  
+      }
     }
     
     if(unsetvtx) d->UnsetOwnPrimaryVtx();