]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/totEt/AliAnalysisTaskHadEt.cxx
Improved merging.
[u/mrichter/AliRoot.git] / PWGLF / totEt / AliAnalysisTaskHadEt.cxx
index 2f48809c5a752fe89eaef624f9bfbc6e43764e65..3420b0a1b61e94d630b8523e02d3636f6e0df42f 100644 (file)
 #include "AliAnalysisHadEtReconstructed.h"
 #include "AliAnalysisHadEtMonteCarlo.h"
 #include "AliPWG0Helper.h"
+#include "AliTriggerAnalysis.h"
+#include "AliAnalysisManager.h"
+#include "AliPIDResponse.h"
+#include "AliTPCPIDResponse.h" 
+#include "AliInputEventHandler.h"
 
 #include <iostream>
 #include "AliLog.h"
@@ -37,11 +42,25 @@ ClassImp(AliAnalysisTaskHadEt)
 //________________________________________________________________________
   AliAnalysisTaskHadEt::AliAnalysisTaskHadEt(const char *name, Bool_t isMc, TString recoConfigFile, TString mcConfigFile) :
         AliAnalysisTaskTransverseEnergy(name, isMc)
+       ,fPIDResponse(0)
        ,fRecAnalysis(0)
        ,fMCAnalysis(0)
        ,fIsSim(isMc)
+       ,kIsOfflineV0AND(0)
+       ,kIsOfflineMB(0)
 {
     // Constructor
+  //input hander
+  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
+  AliInputEventHandler *inputHandler=dynamic_cast<AliInputEventHandler*>(man->GetInputEventHandler());
+  if (!inputHandler) AliFatal("Input handler needed");
+
+  //pid response object
+  fPIDResponse=inputHandler->GetPIDResponse();
+  if (!fPIDResponse) AliError("PIDResponse object was not created");
+  else{cout<<"PIDResponse was created!"<<endl;}
+
+
   fMCConfigFile = mcConfigFile;
   fRecoConfigFile = recoConfigFile;
 
@@ -71,6 +90,7 @@ ClassImp(AliAnalysisTaskHadEt)
 AliAnalysisTaskHadEt::~AliAnalysisTaskHadEt(){//Destructor
   delete fRecAnalysis;
   delete fMCAnalysis;
+  delete fPIDResponse;
 }
 
 
@@ -82,6 +102,16 @@ void AliAnalysisTaskHadEt::UserCreateOutputObjects()
     // Called once
 
 
+  //input hander
+  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
+  AliInputEventHandler *inputHandler=dynamic_cast<AliInputEventHandler*>(man->GetInputEventHandler());
+  if (!inputHandler) AliFatal("Input handler needed");
+
+  //pid response object
+  fPIDResponse=inputHandler->GetPIDResponse();
+  if (!fPIDResponse) AliError("PIDResponse object was not created");
+  else{cout<<"PIDResponse was created!"<<endl;}
+
 
   fOutputList = new TList;
   fOutputList->SetOwner();
@@ -111,7 +141,7 @@ void AliAnalysisTaskHadEt::UserCreateOutputObjects()
 //     fEsdtrackCutsITS->SetName("fEsdTrackCutsITS");
 //   }
   if(fRecAnalysis->DataSet()==2010 || fRecAnalysis->DataSet()==20111||fRecAnalysis->DataSet()==2009){
-    AliAnalysisTaskSE::        SelectCollisionCandidates(AliVEvent::kINT7 ) ;
+    // AliAnalysisTaskSE::     SelectCollisionCandidates(AliVEvent::kINT7 ) ;
     if(fRecAnalysis->DataSet()==2010)cout<<"Setting track cuts for the 2010 p+p collisions at 7 TeV"<<endl;
     else{
       if(fRecAnalysis->DataSet()==2009){cout<<"Setting track cuts for the 2010 p+p collisions at 900 GeV"<<endl;}
@@ -123,7 +153,7 @@ void AliAnalysisTaskHadEt::UserCreateOutputObjects()
     fEsdtrackCutsTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
     fEsdtrackCutsTPC->SetName("fEsdTrackCutsTPCOnly");
     //ITS stand alone cuts - similar to 2009 cuts but with only ITS hits required
-    fEsdtrackCutsITS =  AliESDtrackCuts::GetStandardITSPureSATrackCuts2010(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
+    fEsdtrackCutsITS =  AliESDtrackCuts::GetStandardITSSATrackCuts2010(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
     fEsdtrackCutsITS->SetName("fEsdTrackCutsITS");
   }
   if(fRecAnalysis->DataSet()==20100){
@@ -154,6 +184,10 @@ void AliAnalysisTaskHadEt::UserCreateOutputObjects()
   else{
     Printf("Error: no track cuts!");
   }
+
+
+
+ PostData(1, fOutputList);
 }
 
 //________________________________________________________________________
@@ -166,29 +200,33 @@ if (!fESDEvent) {
  }
 //cout<<"AliAnalysisTaskHadEt 165"<<endl;
 
-Int_t res = CheckPhysicsSelection(fESDEvent->GetRunNumber()); // Check if the physics selection is valid for this run
+//Int_t res = CheckPhysicsSelection(fESDEvent->GetRunNumber()); // Check if the physics selection is valid for this run
 
-AliCentrality *cent = GetCentralityObject();
+//AliCentrality *cent = GetCentralityObject();
 
-if(res == 0 && cent){
-  
-  //cout<<"New Event"<<endl;  
+//if(res == 0 && cent){
+//if(cent){
+ AliTriggerAnalysis *fTriggerAnalysis = new AliTriggerAnalysis();
 
-  AliMCEvent* mcEvent = MCEvent();
-  if(!mcEvent){  
-    AliFatal("ERROR: MC Event does not exist");
-    return;
-  }
-  Int_t eventtype = (Int_t) AliPWG0Helper::GetEventProcessType(mcEvent->Header());
-  fRecAnalysis->AnalyseEvent(fESDEvent,eventtype);
+  kIsOfflineV0AND = fTriggerAnalysis->IsOfflineTriggerFired(fESDEvent, AliTriggerAnalysis::kV0AND);  
+  kIsOfflineMB = fTriggerAnalysis->IsOfflineTriggerFired(fESDEvent, AliTriggerAnalysis::kMB1);  
+  fRecAnalysis->SetIsOfflineV0AND(kIsOfflineV0AND);
+  fMCAnalysis->SetIsOfflineV0AND(kIsOfflineV0AND);
+  fMCAnalysis->SetIsOfflineMB(kIsOfflineMB);
 
-// if (!mcEvent) {
-//   Printf("ERROR: Could not retrieve MC event");
-//  }
-  if (mcEvent && fESDEvent && fIsSim){
-    ((AliAnalysisHadEtMonteCarlo*)fMCAnalysis)->AnalyseEvent((AliVEvent*)mcEvent,(AliVEvent*)fESDEvent);
+  Int_t eventtype =    AliPWG0Helper::kInvalidProcess;
+  if(fIsSim && fRecAnalysis->DataSet()!=20100) eventtype = (Int_t) AliPWG0Helper::GetEventProcessType(MCEvent()->Header());
+  fRecAnalysis->AnalyseEvent(fESDEvent,eventtype);
+  if(fIsSim){
+    AliMCEvent* mcEvent = MCEvent();
+    if(!mcEvent){  
+      AliFatal("ERROR: MC Event does not exist");
+      return;
+    }
+    if (fESDEvent){
+      ((AliAnalysisHadEtMonteCarlo*)fMCAnalysis)->AnalyseEvent((AliVEvent*)mcEvent,(AliVEvent*)fESDEvent);
 
-    if(AliPWG0Helper::GetEventProcessType(mcEvent->Header()) == AliPWG0Helper::kND || fRecAnalysis->DataSet()==20100){//either non-diffractive or Pb+Pb
+    if( fRecAnalysis->DataSet()==20100 || AliPWG0Helper::GetEventProcessType(mcEvent->Header()) == AliPWG0Helper::kND){//either non-diffractive or Pb+Pb
       if(fMCAnalysis->Full()){
        fMCAnalysis->FillSimTotEtMinusRecoTotEtFullAcceptanceTPC( fRecAnalysis->GetCorrectedTotEtFullAcceptanceTPC() );
        fMCAnalysis->FillSimTotEtMinusRecoTotEtFullAcceptanceITS( fRecAnalysis->GetCorrectedTotEtFullAcceptanceITS() );
@@ -207,6 +245,11 @@ if(res == 0 && cent){
        fMCAnalysis->FillSimHadEtVsRecoHadEtFullAcceptanceITS( fRecAnalysis->GetCorrectedHadEtFullAcceptanceITS() );
        fMCAnalysis->FillSimHadEtVsRecoHadEtFullAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedHadEtFullAcceptanceTPCNoPID() );
        fMCAnalysis->FillSimHadEtVsRecoHadEtFullAcceptanceITSNoPID( fRecAnalysis->GetCorrectedHadEtFullAcceptanceITSNoPID() );
+
+       fMCAnalysis->FillSimPiKPEtVsRecoPiKPEtFullAcceptanceTPC( fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceTPC() );
+       fMCAnalysis->FillSimPiKPEtVsRecoPiKPEtFullAcceptanceITS( fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceITS() );
+       fMCAnalysis->FillSimPiKPEtVsRecoPiKPEtFullAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceTPCNoPID() );
+       fMCAnalysis->FillSimPiKPEtVsRecoPiKPEtFullAcceptanceITSNoPID( fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceITSNoPID() );//Had
       }
       if(fMCAnalysis->EMCAL()){
        fMCAnalysis->FillSimTotEtMinusRecoTotEtEMCALAcceptanceTPC( fRecAnalysis->GetCorrectedTotEtEMCALAcceptanceTPC() );
@@ -236,7 +279,9 @@ if(res == 0 && cent){
       }
     }
   }
- }
+  }
+  delete fTriggerAnalysis;
+  //}
 //cout<<"End Event"<<endl<<endl;
 // Post output data.
  PostData(1, fOutputList);