#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"
//________________________________________________________________________
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();
+ if (!man) {
+ AliFatal("Analysis manager needed");
+ return;
+ }
+
+ AliInputEventHandler *inputHandler=dynamic_cast<AliInputEventHandler*>(man->GetInputEventHandler());
+ if (!inputHandler) {
+ AliFatal("Input handler needed");
+ return;
+ }
+ inputHandler->SetNeedField();
+
+ //pid response object
+ fPIDResponse=inputHandler->GetPIDResponse();
+ if (!fPIDResponse) AliError("PIDResponse object was not created");
+ else{cout<<"PIDResponse was created!"<<endl;}
+
+
fMCConfigFile = mcConfigFile;
fRecoConfigFile = recoConfigFile;
AliAnalysisTaskHadEt::~AliAnalysisTaskHadEt(){//Destructor
delete fRecAnalysis;
delete fMCAnalysis;
+ delete fPIDResponse;
}
// Called once
+ //input hander
+ AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
+ if (!man) {
+ AliFatal("Analysis manager needed");
+ return;
+ }
+
+ AliInputEventHandler *inputHandler=dynamic_cast<AliInputEventHandler*>(man->GetInputEventHandler());
+ if (!inputHandler) {
+ AliFatal("Input handler needed");
+ return;
+ }
+
+ //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();
// fEsdtrackCutsITS = AliESDtrackCuts::GetStandardITSPureSATrackCuts2009(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
// fEsdtrackCutsITS->SetName("fEsdTrackCutsITS");
// }
- if(fRecAnalysis->DataSet()==2010 || fRecAnalysis->DataSet()==20111||fRecAnalysis->DataSet()==2009){
- AliAnalysisTaskSE:: SelectCollisionCandidates(AliVEvent::kINT7 ) ;
+ if(fRecAnalysis->DataSet()==2010 || fRecAnalysis->DataSet()==20111||fRecAnalysis->DataSet()==2009 || fRecAnalysis->DataSet()==2012 || fRecAnalysis->DataSet()==2013){
+ // 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;}
- else{cout<<"Setting track cuts for the 2011 p+p collisions at 2.76 TeV"<<endl;}
+ if(fRecAnalysis->DataSet()==2012)cout<<"Setting track cuts for the 2012 p+p collisions at 8 TeV"<<endl;
+ else{
+ if(fRecAnalysis->DataSet()==2013)cout<<"Setting track cuts for the 2013 p+Pb collisions at 5 TeV"<<endl;
+ else{
+ if(fRecAnalysis->DataSet()==2009){cout<<"Setting track cuts for the 2010 p+p collisions at 900 GeV"<<endl;}
+ else{cout<<"Setting track cuts for the 2011 p+p collisions at 2.76 TeV"<<endl;}
+ }
+ }
}
//cout<<"Warning: Have not set 2010 track cuts yet!!"<<endl;
fEsdtrackCutsITSTPC = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
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){
Printf("Error: no track cuts!");
}
+
+
PostData(1, fOutputList);
}
}
//cout<<"AliAnalysisTaskHadEt 165"<<endl;
-Int_t res = CheckPhysicsSelection(fESDEvent->GetRunNumber()); // Check if the physics selection is valid for this run
-
-AliCentrality *cent = GetCentralityObject();
-
-if(res == 0 && cent){
-
- //cout<<"New Event"<<endl;
-
- AliMCEvent* mcEvent = MCEvent();
- if(!mcEvent && fIsSim){
- AliFatal("ERROR: MC Event does not exist");
- return;
- }
- Int_t eventtype = (Int_t) AliPWG0Helper::GetEventProcessType(mcEvent->Header());
- fRecAnalysis->AnalyseEvent(fESDEvent,eventtype);
-
-// if (!mcEvent) {
-// Printf("ERROR: Could not retrieve MC event");
-// }
- if (mcEvent && fESDEvent && fIsSim){
- ((AliAnalysisHadEtMonteCarlo*)fMCAnalysis)->AnalyseEvent((AliVEvent*)mcEvent,(AliVEvent*)fESDEvent);
+//Int_t res = CheckPhysicsSelection(fESDEvent->GetRunNumber()); // Check if the physics selection is valid for this run
+
+//AliCentrality *cent = GetCentralityObject();
+
+//if(res == 0 && cent){
+//if(cent){
+ AliTriggerAnalysis *fTriggerAnalysis = new AliTriggerAnalysis();
+
+ kIsOfflineV0AND = fTriggerAnalysis->IsOfflineTriggerFired(fESDEvent, AliTriggerAnalysis::kV0AND);
+ kIsOfflineMB = fTriggerAnalysis->IsOfflineTriggerFired(fESDEvent, AliTriggerAnalysis::kMB1);
+ fRecAnalysis->SetIsOfflineV0AND(kIsOfflineV0AND);
+ fMCAnalysis->SetIsOfflineV0AND(kIsOfflineV0AND);
+ fMCAnalysis->SetIsOfflineMB(kIsOfflineMB);
+
+ Int_t eventtype = AliPWG0Helper::kInvalidProcess;
+ if(fIsSim && fRecAnalysis->DataSet()!=20100) eventtype = (Int_t) AliPWG0Helper::GetEventProcessType(MCEvent()->Header());
+ //only do the analysis if it meets the offline trigger cut
+ if(kIsOfflineV0AND) fRecAnalysis->AnalyseEvent(fESDEvent,eventtype);
+ //else{cout<<"Not analyzing this event! Does not meet trigger condition!"<<endl;}
+ 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() );
fMCAnalysis->FillSimPiKPEtVsRecoPiKPEtFullAcceptanceITS( fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceITS() );
fMCAnalysis->FillSimPiKPEtVsRecoPiKPEtFullAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceTPCNoPID() );
fMCAnalysis->FillSimPiKPEtVsRecoPiKPEtFullAcceptanceITSNoPID( fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceITSNoPID() );//Had
+
+ fMCAnalysis->FillSimRawEtVsRecoRawEtFullAcceptanceTPC( fRecAnalysis->GetRawEtFullAcceptanceTPC() );
+ fMCAnalysis->FillSimRawEtVsRecoRawEtFullAcceptanceITS( fRecAnalysis->GetRawEtFullAcceptanceITS() );
+ fMCAnalysis->FillSimRawEtVsRecoRawEtFullAcceptanceTPCNoPID( fRecAnalysis->GetRawEtFullAcceptanceTPCNoPID() );
+ fMCAnalysis->FillSimRawEtVsRecoRawEtFullAcceptanceITSNoPID( fRecAnalysis->GetRawEtFullAcceptanceITSNoPID() );//Had
+
}
if(fMCAnalysis->EMCAL()){
fMCAnalysis->FillSimTotEtMinusRecoTotEtEMCALAcceptanceTPC( fRecAnalysis->GetCorrectedTotEtEMCALAcceptanceTPC() );
}
}
}
- }
+ }
+ delete fTriggerAnalysis;
+ //}
//cout<<"End Event"<<endl<<endl;
// Post output data.
PostData(1, fOutputList);