* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-// $Id: AliAnalysisTaskLongRangeCorrelations.cxx 359 2013-10-29 15:39:09Z cmayer $
+// $Id: AliAnalysisTaskLongRangeCorrelations.cxx 371 2013-11-30 19:23:47Z cmayer $
#include <numeric>
#include <functional>
, fSelectPrimaryMCDataParticles(0)
, fNMin(-1)
, fNMax(-1)
+ , fDeltaEta(-1)
, fnBinsCent( 220), fnBinsPt(400), fnBinsPhi(4), fnBinsEta(120)
, fxMinCent( -5.0), fxMinPt( 0.0), fxMinPhi( 0.0), fxMinEta(-1.5)
, fxMaxCent(105.0), fxMaxPt( 4.0), fxMaxPhi( TMath::TwoPi()), fxMaxEta( 1.5) {
listName += TString::Format("_nMin%d", fNMin);
if (-1 != fNMax)
listName += TString::Format("_nMax%d", fNMax);
+ if (fDeltaEta >= 0)
+ listName += TString::Format("_deltaEta%02.0f", 10*fDeltaEta);
return listName;
}
TObjArray* tracks2,
Double_t vertexZ,
Double_t weight) {
- const Long64_t nc1(tracks1->GetEntriesFast());
- if (fNMin != -1 && nc1 < fNMin) return;
- if (fNMax != -1 && nc1 > fNMax) return;
+ THnSparse* hN1ForThisEvent(ComputeNForThisEvent(tracks1, "hN1", vertexZ));
+
+ hN1ForThisEvent->GetAxis(1)->SetRangeUser( fDeltaEta-0.10001, fDeltaEta+0.09999);
+ TH1 *hTemp = hN1ForThisEvent->Projection(0);
+ const Long64_t ncPlus = Long64_t(hTemp->GetEntries());
+ delete hTemp;
+
+ hN1ForThisEvent->GetAxis(1)->SetRangeUser(-fDeltaEta-0.10001, -fDeltaEta+0.09999);
+ hTemp = hN1ForThisEvent->Projection(0);
+ const Long64_t ncMinus = Long64_t(hTemp->GetEntries());
+ delete hTemp;
- const Long64_t nc2(tracks1->GetEntriesFast());
- if (fNMin != -1 && nc2 < fNMin) return;
- if (fNMax != -1 && nc2 > fNMax) return;
+ // restore full axis range
+ hN1ForThisEvent->GetAxis(1)->SetRange(0, -1);
+
+ if (fNMin != -1 && ncPlus < fNMin) return;
+ if (fNMax != -1 && ncPlus > fNMax) return;
+
+ if (fNMin != -1 && ncMinus < fNMin) return;
+ if (fNMax != -1 && ncMinus > fNMax) return;
AliTHn* hN1(dynamic_cast<AliTHn*>(fOutputList->FindObject(prefix+"histMoment1PhiEta_1")));
if (NULL == hN1) return;
// <n_1>
- THnSparse* hN1ForThisEvent(ComputeNForThisEvent(tracks1, "hN1", vertexZ));
AddTHnSparseToAliTHn(hN1,hN1ForThisEvent, weight);
// hN1->GetGrid(0)->GetGrid()->Add(hN1ForThisEvent, weight);
// -*- C++ -*-
-// $Id: AliAnalysisTaskLongRangeCorrelations.h 341 2013-09-30 15:59:19Z cmayer $
+// $Id: AliAnalysisTaskLongRangeCorrelations.h 371 2013-11-30 19:23:47Z cmayer $
#ifndef _AliAnalysisTaskLongRangeCorrelations_H_
#define _AliAnalysisTaskLongRangeCorrelations_H_
fSelectPrimaryMCDataParticles = flagMCData;
}
- void SetRangeN(Int_t nMin, Int_t nMax) {
+ void SetRangeN(Int_t nMin, Int_t nMax, Double_t deltaEta) {
fNMin = nMin;
fNMax = nMax;
+ fDeltaEta = deltaEta;
}
TString GetOutputListName() const;
Int_t fSelectPrimaryMCDataParticles; // 0: no, 1: yes, -1: only non-primary particles
Int_t fNMin;
Int_t fNMax;
+ Double_t fDeltaEta;
// histogram data
Int_t fnBinsCent, fnBinsPt, fnBinsPhi, fnBinsEta;
Double_t fxMinCent, fxMinPt, fxMinPhi, fxMinEta;
// -*- c++ -*-
-// $Id: AddTaskLongRangeCorrelations.C 341 2013-09-30 15:59:19Z cmayer $
+// $Id: AddTaskLongRangeCorrelations.C 371 2013-11-30 19:23:47Z cmayer $
const Double_t centMin[] = { 0, 0, 10, 20, 30, 40, 50, 60, 70, 80 };
const Double_t centMax[] = { 5, 10, 20, 30, 40, 50, 60, 70, 80, 100 };
const Int_t nMin[] = { -1, 120, 70, 35, 20, 5, 0, 0, 0, -1 };
const Int_t nMax[] = { -1, 400, 275, 200, 145, 100, 68, 46, 30, -1 };
+const Double_t deltaEta[] = { -1, 0, 0.2, 0.4, 0.6, 1.4 };
+
AliAnalysisTaskLongRangeCorrelations*
AddTaskLongRangeCorrelations(Int_t trackFilter = 128, // TPC only
Bool_t runMixing = !kTRUE,
outputFileName += ":PWGCFEbyE.outputLongRangeCorrelations.root";
for (Int_t i=0; i<sizeof(centMin)/sizeof(Double_t); ++i) {
- taskLRC = new AliAnalysisTaskLongRangeCorrelations("TaskLongRangeCorrelations");
- taskLRC->SetRunMixing(runMixing);
- taskLRC->SetMixingTracks(mixingTracks);
- taskLRC->SetTrackFilter(trackFilter);
- taskLRC->SetCentralityRange(centMin[i], centMax[i]);
- taskLRC->SetPtRange(ptMin, 1e20);
- taskLRC->SetPhiRange(phiMin, phiMax);
- taskLRC->SelectCollisionCandidates(AliVEvent::kMB);
- taskLRC->SetSelectPrimaryMCParticles(selPrimMC, selPrimMCData);
- taskLRC->SetRangeN(nMin[i], nMax[i]);
-
- listLRC = mgr->CreateContainer(taskLRC->GetOutputListName(), TList::Class(),
- AliAnalysisManager::kOutputContainer,
- outputFileName.Data());
- mgr->AddTask(taskLRC);
- mgr->ConnectInput(taskLRC, 0, mgr->GetCommonInputContainer());
- mgr->ConnectOutput(taskLRC, 1, listLRC);
+ size_t jMin = (nMin[i] < 0) ? 0 : 1;
+ size_t jMax = (nMin[i] < 0) ? 1 : sizeof(deltaEta)/sizeof(Double_t);
+ for (Int_t j=jMin; j<jMax; ++j) {
+ taskLRC = new AliAnalysisTaskLongRangeCorrelations("TaskLongRangeCorrelations");
+ taskLRC->SetRunMixing(runMixing);
+ taskLRC->SetMixingTracks(mixingTracks);
+ taskLRC->SetTrackFilter(trackFilter);
+ taskLRC->SetCentralityRange(centMin[i], centMax[i]);
+ taskLRC->SetPtRange(ptMin, 1e20);
+ taskLRC->SetPhiRange(phiMin, phiMax);
+ taskLRC->SelectCollisionCandidates(AliVEvent::kMB);
+ taskLRC->SetSelectPrimaryMCParticles(selPrimMC, selPrimMCData);
+ taskLRC->SetRangeN(nMin[i], nMax[i], deltaEta[j]);
+ Printf("%f %f %d %d %f", centMin[i], centMax[i], nMin[i], nMax[i], deltaEta[j]);
+ listLRC = mgr->CreateContainer(taskLRC->GetOutputListName(), TList::Class(),
+ AliAnalysisManager::kOutputContainer,
+ outputFileName.Data());
+ mgr->AddTask(taskLRC);
+ mgr->ConnectInput(taskLRC, 0, mgr->GetCommonInputContainer());
+ mgr->ConnectOutput(taskLRC, 1, listLRC);
+ }
}
return taskLRC;