adding the disabling of non-needed branches in AliESDtrackCuts and AlidNdEtaAnalysisESDSelector
{
// check if the event was triggered
//
+ // this function needs the branch fTriggerMask
+ //
// MB should be
// ITS_SPD_GFO_L0 : 32
// VZERO_OR_LEFT : 1
Bool_t AliPWG0Helper::IsVertexReconstructed(AliESD* aEsd)
{
// checks if the vertex is reasonable
+ //
+ // this function needs the branches fSPDVertex*
+
const AliESDVertex* vtxESD = aEsd->GetVertex();
### define include dir for local case and par case
ifneq ($(ALICE_ROOT),)
- ALICEINC += -I$(ALICE_ROOT)/include
+ ALICEINC += -I$(ALICE_ROOT)/include -I$(ALICE_ROOT)/PYTHIA6 -I$(ALICE_ROOT)/EVGEN
else
ifneq ($(ESD_INCLUDE),)
ALICEINC += -I../$(ESD_INCLUDE)
// histograms are in the output list and deleted when the output
// list is deleted by the TSelector dtor
-
- if (fdNdEtaAnalysis)
- {
- delete fdNdEtaAnalysis;
- fdNdEtaAnalysis = 0;
- }
-
- if (fdNdEtaAnalysisMB)
- {
- delete fdNdEtaAnalysisMB;
- fdNdEtaAnalysisMB = 0;
- }
-
- if (fdNdEtaAnalysisMBVtx)
- {
- delete fdNdEtaAnalysisMBVtx;
- fdNdEtaAnalysisMBVtx = 0;
- }
-
- /*if (fEsdTrackCuts)
- {
- delete fEsdTrackCuts;
- fEsdTrackCuts = 0;
- }
-
- if (fdNdEtaCorrection)
- {
- delete fdNdEtaCorrection;
- fdNdEtaCorrection = 0;
- }*/
}
void AlidNdEtaAnalysisESDSelector::Begin(TTree* tree)
// read the user objects
AliSelector::Init(tree);
+
+ // Enable only the needed branches
+ if (tree)
+ {
+ tree->SetBranchStatus("*", 0);
+ tree->SetBranchStatus("fTriggerMask", 1);
+ tree->SetBranchStatus("fSPDVertex*", 1);
+
+ AliESDtrackCuts::EnableNeededBranches(tree);
+ }
}
Bool_t AlidNdEtaAnalysisESDSelector::Process(Long64_t entry)
}
if (AliPWG0Helper::IsEventTriggered(fESD) == kFALSE)
+ {
+ AliDebug(AliLog::kDebug+1, Form("Skipping event %d because it was not triggered", (Int_t) entry));
return kTRUE;
+ }
if (AliPWG0Helper::IsVertexReconstructed(fESD) == kFALSE)
+ {
+ AliDebug(AliLog::kDebug+1, Form("Skipping event %d because its vertex was not reconstructed", (Int_t) entry));
return kTRUE;
+ }
// ########################################################
// get the EDS vertex
{
// constructor
- fData = new TH3F(Form("%s_analysis", name),"Input data",80,-20,20,120,-6,6,100, 0, 10);
+ fData = new TH3F(Form("%s_analysis", name),"Input data",80,-20,20,40,-2,2,100, 0, 10);
fData->SetXTitle("vtx z [cm]");
fData->SetYTitle("#eta");
fData->SetZTitle("p_{T}");
Prepare2DPlot(corrVtx);
corrVtx->SetTitle("b) Vertex reconstruction correction");
+ corrTrigger->GetYaxis()->SetTitle("Multiplicity");
+ corrVtx->GetYaxis()->SetTitle("Multiplicity");
+
TCanvas* canvas = new TCanvas("TriggerBiasVtxRecon", "TriggerBiasVtxRecon", 1000, 500);
canvas->Divide(2, 1);
{
TFile* file = TFile::Open(fileName);
- TH2* corr = dynamic_cast<TH2*> (file->Get("dndeta_correction/corr_trigger"));
+ TH2* corr = dynamic_cast<TH2*> (file->Get("dndeta_correction/corr_dndeta_correction_trigger"));
Prepare2DPlot(corr);
corr->SetTitle("Trigger bias correction");
canvas->SaveAs(Form("Track2Particle1D_%s_%f.gif", fileName, upperPtLimit));
canvas->SaveAs(Form("Track2Particle1D_%s_%f.eps", fileName, upperPtLimit));
+ //TPaveText* pave = new TPaveText(-0.4, 1.35, 0.4, 1.45);
+
canvasName.Form("Track2Particle1D_%s_etapt", folder);
TCanvas* canvas = new TCanvas(canvasName, canvasName, 1000, 500);
canvas->Divide(2, 1);
corrY->GetYaxis()->SetRangeUser(1, 1.5);
corrY->GetYaxis()->SetTitleOffset(1.5);
corrY->DrawCopy();
+ TPaveText* pave = new TPaveText(0.3, 0.7, 0.7, 0.8, "NDC");
+ pave->AddText("|z| < 10 cm");
+ pave->AddText("0.3 GeV/c < p_{T} < 10 GeV/c");
+ pave->Draw();
canvas->cd(2);
InitPad();
- corrZ->GetYaxis()->SetRangeUser(1, 1.5);
+ gPad->SetLogx();
+ corrZ->GetYaxis()->SetRangeUser(1, 2.5);
+ corrZ->GetXaxis()->SetRangeUser(0.101, upperPtLimit);
corrZ->GetYaxis()->SetTitleOffset(1.5);
corrZ->DrawCopy();
+ pave = new TPaveText(0.5, 0.7, 0.8, 0.8, "NDC");
+ pave->AddText("|z| < 10 cm");
+ pave->AddText("|#eta| < 0.8");
+ pave->Draw();
canvas->SaveAs(Form("Track2Particle1D_etapt_%s_%f.eps", fileName, upperPtLimit));
}
return;
}
- TH1F* ratio = new TH1F("sigmavertexsimulation_ratio", "sigmavertexsimulation_ratio;N#sigma;% included 3 #sigma / % included N#sigma", sigmavertex->GetNbinsX(), sigmavertex->GetXaxis()->GetXmin(), sigmavertex->GetXaxis()->GetXmax());
+ TH1F* ratio = new TH1F("sigmavertexsimulation_ratio", "sigmavertexsimulation_ratio;N#sigma;% included in 3 #sigma / % included in N#sigma", sigmavertex->GetNbinsX(), sigmavertex->GetXaxis()->GetXmin(), sigmavertex->GetXaxis()->GetXmax());
for (Int_t i=1; i<=sigmavertex->GetNbinsX(); ++i)
ratio->SetBinContent(i, sigmavertex->GetBinContent(sigmavertex->GetXaxis()->FindBin(3)) / sigmavertex->GetBinContent(i));
TCanvas* canvas = new TCanvas("Sigma2VertexCompare", "Sigma2VertexCompare", 500, 500);
InitPad();
+ ratio2->SetMarkerStyle(21);
+ ratio1->SetMarkerStyle(22);
+
+ ratio2->GetYaxis()->SetRangeUser(0.8, 1.2);
ratio2->SetLineColor(kRed);
- ratio2->Draw();
- ratio1->Draw("SAME");
+ ratio2->SetMarkerColor(kRed);
+ ratio2->Draw("PL");
+ ratio1->Draw("SAMEPL");
legend->Draw();
#include "../CreateESDChain.C"
#include "../PWG0Helper.C"
-void testAnalysis2(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aMC = kFALSE, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE, const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction")
+void testAnalysis2(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aMC = kFALSE, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE, const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction", const char* option = "")
{
if (aProof)
connectProof("proof01@lxb6046");
if (aDebug != kFALSE)
selectorName += "g";
- Int_t result = executeQuery(chain, &inputList, selectorName);
+ Int_t result = executeQuery(chain, &inputList, selectorName, option);
if (result >= 0)
{
#include <AliESDtrack.h>
#include <AliESD.h>
#include <AliLog.h>
+#include <TTree.h>
//____________________________________________________________________
ClassImp(AliESDtrackCuts)
return d;
}
+void AliESDtrackCuts::EnableNeededBranches(TTree* tree)
+{
+ // enables the branches needed by AcceptTrack, for a list see comment of AcceptTrack
+
+ tree->SetBranchStatus("fTracks.fFlags", 1);
+ tree->SetBranchStatus("fTracks.fITSncls", 1);
+ tree->SetBranchStatus("fTracks.fTPCncls", 1);
+ tree->SetBranchStatus("fTracks.fITSchi2", 1);
+ tree->SetBranchStatus("fTracks.fTPCchi2", 1);
+ tree->SetBranchStatus("fTracks.fC*", 1);
+ tree->SetBranchStatus("fTracks.fD", 1);
+ tree->SetBranchStatus("fTracks.fZ", 1);
+ tree->SetBranchStatus("fTracks.fCdd", 1);
+ tree->SetBranchStatus("fTracks.fCdz", 1);
+ tree->SetBranchStatus("fTracks.fCzz", 1);
+ tree->SetBranchStatus("fTracks.fP*", 1);
+ tree->SetBranchStatus("fTracks.fR*", 1);
+ tree->SetBranchStatus("fTracks.fKinkIndexes*", 1);
+}
+
//____________________________________________________________________
Bool_t
AliESDtrackCuts::AcceptTrack(AliESDtrack* esdTrack) {
// retrieved from the track. then it is found out what cuts the
// track did not survive and finally the cuts are imposed.
-
+ // this function needs the following branches:
+ // fTracks.fFlags
+ // fTracks.fITSncls
+ // fTracks.fTPCncls
+ // fTracks.fITSchi2
+ // fTracks.fTPCchi2
+ // fTracks.fC //GetExternalCovariance
+ // fTracks.fD //GetImpactParameters
+ // fTracks.fZ //GetImpactParameters
+ // fTracks.fCdd //GetImpactParameters
+ // fTracks.fCdz //GetImpactParameters
+ // fTracks.fCzz //GetImpactParameters
+ // fTracks.fP //GetPxPyPz
+ // fTracks.fR //GetMass
+ // fTracks.fP //GetMass
+ // fTracks.fKinkIndexes
UInt_t status = esdTrack->GetStatus();
if (nClustersITS!=0)
chi2PerClusterITS = esdTrack->GetITSchi2()/Float_t(nClustersITS);
if (nClustersTPC!=0)
- chi2PerClusterTPC = esdTrack->GetTPCchi2()/Float_t(nClustersTPC);
+ chi2PerClusterTPC = esdTrack->GetTPCchi2()/Float_t(nClustersTPC);
Double_t extCov[15];
esdTrack->GetExternalCovariance(extCov);
// if n sigma could not be calculated
if (nSigmaToVertex<0 && fCutSigmaToVertexRequired)
cuts[12]=kTRUE;
- if (!fCutAcceptKinkDaughters && esdTrack->GetKinkIndex(0)>0)
+ if (!fCutAcceptKinkDaughters && esdTrack->GetKinkIndex(0)>0)
cuts[13]=kTRUE;
// track kinematics cut
if((momentum < fPMin) || (momentum > fPMax))
class AliESD;
class AliESDtrack;
class AliLog;
+class TTree;
class AliESDtrackCuts : public TObject
{
virtual void Print(const Option_t* = "") const;
+ static void EnableNeededBranches(TTree* tree);
+
// void SaveQualityCuts(Char_t* file)
// void LoadQualityCuts(Char_t* file)
DHDR= PWG0selectorsLinkDef.h
-EINCLUDE=
+EINCLUDE=PYTHIA6 EVGEN