#include "TChain.h"
#include "TTree.h"
+#include "TString.h"
#include "TList.h"
#include "TH2F.h"
+#include "TH1I.h"
#include "TF1.h"
#include "TCanvas.h"
#include "TLorentzVector.h"
#include "AliMCEventHandler.h"
#include "AliMCEvent.h"
#include "AliStack.h"
+#include "AliCFContainer.h"
-#include "AliProtonAnalysis.h"
+#include "PWG2spectra/SPECTRA/AliProtonAnalysis.h"
#include "AliAnalysisTaskProtons.h"
// Analysis task creating a the 2d y-p_t spectrum of p and antip
ClassImp(AliAnalysisTaskProtons)
-//________________________________________________________________________
-AliAnalysisTaskProtons::AliAnalysisTaskProtons()
-: AliAnalysisTask(), fESD(0), fAOD(0), fMC(0),fAnalysisType("ESD"),
- fList(0), fAnalysis(0),
- fElectronFunction(0), fMuonFunction(0),
- fPionFunction(0), fKaonFunction(0), fProtonFunction(0),
- fFunctionUsed(kFALSE) {
+//________________________________________________________________________
+AliAnalysisTaskProtons::AliAnalysisTaskProtons()
+ : AliAnalysisTask(), fESD(0), fAOD(0), fMC(0), fAnalysisType("ESD"),
+ fList(0), fAnalysis(0),
+ fElectronFunction(0), fMuonFunction(0),
+ fPionFunction(0), fKaonFunction(0), fProtonFunction(0),
+ fFunctionUsed(kFALSE) {
//Dummy constructor
+
}
//________________________________________________________________________
AliAnalysisTaskProtons::AliAnalysisTaskProtons(const char *name)
-: AliAnalysisTask(name, ""), fESD(0), fAOD(0), fMC(0), fAnalysisType("ESD"),
+: AliAnalysisTask(name, ""), fESD(0), fAOD(0), fMC(0), fAnalysisType("ESD"),
fList(0), fAnalysis(0),
fElectronFunction(0), fMuonFunction(0),
fPionFunction(0), fKaonFunction(0), fProtonFunction(0),
if (!tree) {
Printf("ERROR: Could not read chain from input slot 0");
} else {
- // Disable all branches and enable only the needed ones
- // The next two lines are different when data produced as AliESDEvent is read
if(fAnalysisType == "ESD") {
- // In train mode branches can be disabled at the level of ESD handler (M.G.)
- // tree->SetBranchStatus("*", kFALSE);
- tree->SetBranchStatus("*Tracks.*", kTRUE);
-
- AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
+ tree->SetBranchStatus("*", kFALSE);
+ tree->SetBranchStatus("Tracks.*", kTRUE);
+ AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
+
if (!esdH) {
Printf("ERROR: Could not get ESDInputHandler");
} else
fESD = esdH->GetEvent();
}
else if(fAnalysisType == "AOD") {
- AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
-
- if (!aodH) {
- Printf("ERROR: Could not get AODInputHandler");
- } else
- fAOD = aodH->GetEvent();
+ AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
+
+ if (!aodH) {
+ Printf("ERROR: Could not get AODInputHandler");
+ } else
+ fAOD = aodH->GetEvent();
}
else if(fAnalysisType == "MC") {
- AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
- if (!mcH) {
- Printf("ERROR: Could not retrieve MC event handler");
- }
- else
- fMC = mcH->MCEvent();
+ AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
+ if (!mcH) {
+ Printf("ERROR: Could not retrieve MC event handler");
+ }
+ else
+ fMC = mcH->MCEvent();
}
- else
+ else
Printf("Wrong analysis type: Only ESD, AOD and MC types are allowed!");
}
}
void AliAnalysisTaskProtons::CreateOutputObjects() {
// Create histograms
// Called once
+ //Prior probabilities
Double_t partFrac[5] = {0.01, 0.01, 0.85, 0.10, 0.05};
-
+
+ //proton analysis object
fAnalysis = new AliProtonAnalysis();
- fAnalysis->InitHistograms(10,-1.0,1.0,30,0.1,3.1);
+ fAnalysis->InitAnalysisHistograms(10,-1.0,1.0,26,0.5,3.1);
+
if(fAnalysisType == "ESD") {
//Use of TPConly tracks
fAnalysis->UseTPCOnly();
- //TPC related cuts
+ //TPC related cuts
fAnalysis->SetMinTPCClusters(50);
fAnalysis->SetMaxChi2PerTPCCluster(3.5);
fAnalysis->SetMaxCov11(2.0);
fAnalysis->SetMaxCov55(2.0);
fAnalysis->SetMaxSigmaToVertex(2.5);
fAnalysis->SetTPCRefit();
-
- //ITS related cuts - to be used in the case of the analysis of global tracks
+
+ //ITS related cuts - to be used for the analysis of global tracking
//fAnalysis->SetMinITSClusters(5);
//fAnalysis->SetITSRefit();
}
+
if(fFunctionUsed)
fAnalysis->SetPriorProbabilityFunctions(fElectronFunction,
fMuonFunction,
fAnalysis->SetPriorProbabilities(partFrac);
fList = new TList();
- fList->Add(fAnalysis->GetProtonYPtHistogram());
- fList->Add(fAnalysis->GetAntiProtonYPtHistogram());
+ fList->Add(fAnalysis->GetProtonYPtHistogram());
+ fList->Add(fAnalysis->GetAntiProtonYPtHistogram());
+ fList->Add(fAnalysis->GetEventHistogram());
+ fList->Add(fAnalysis->GetProtonContainer());
+ fList->Add(fAnalysis->GetAntiProtonContainer());
}
//________________________________________________________________________
Printf("ERROR: fESD not available");
return;
}
-
+
Printf("Proton ESD analysis task: There are %d tracks in this event", fESD->GetNumberOfTracks());
fAnalysis->Analyze(fESD);
- }//ESD analysis
-
+ }//ESD analysis
+
else if(fAnalysisType == "AOD") {
if (!fAOD) {
Printf("ERROR: fAOD not available");
Printf("Proton AOD analysis task: There are %d tracks in this event", fAOD->GetNumberOfTracks());
fAnalysis->Analyze(fAOD);
- }//AOD analysis
-
+ }//AOD analysis
+
else if(fAnalysisType == "MC") {
if (!fMC) {
Printf("ERROR: Could not retrieve MC event");
return;
}
-
+
AliStack* stack = fMC->Stack();
if (!stack) {
Printf("ERROR: Could not retrieve the stack");
}
Printf("Proton MC analysis task: There are %d primaries in this event", stack->GetNprimary());
fAnalysis->Analyze(stack);
- }//MC analysis
+ }//MC analysis
// Post output data.
PostData(0, fList);
TH2F *fHistYPtProtons = (TH2F *)fList->At(0);
TH2F *fHistYPtAntiProtons = (TH2F *)fList->At(1);
- TCanvas *c2 = new TCanvas("c2","p-\bar{p}",200,0,800,400);
- c2->SetFillColor(10); c2->SetHighLightColor(10); c2->Divide(2,1);
+ TCanvas *c1 = new TCanvas("c1","p-\bar{p}",200,0,800,400);
+ c1->SetFillColor(10); c1->SetHighLightColor(10); c1->Divide(2,1);
- c2->cd(1)->SetLeftMargin(0.15); c2->cd(1)->SetBottomMargin(0.15);
+ c1->cd(1)->SetLeftMargin(0.15); c1->cd(1)->SetBottomMargin(0.15);
if (fHistYPtProtons) fHistYPtProtons->DrawCopy("colz");
- c2->cd(2)->SetLeftMargin(0.15); c2->cd(2)->SetBottomMargin(0.15);
+ c1->cd(2)->SetLeftMargin(0.15); c1->cd(2)->SetBottomMargin(0.15);
if (fHistYPtAntiProtons) fHistYPtAntiProtons->DrawCopy("colz");
}