if (fUseV0CutRange) {
- AliESDVZERO* esdV0 = aEsd->GetVZEROData();
- Float_t multV0A=esdV0->GetMTotV0A();
- Float_t multV0C=esdV0->GetMTotV0C();
- Float_t multV0 = multV0A+multV0C;
- // cout << "V0 Mult: " << multV0 << " " << fMultMin << " " << fMultMax << endl;
+ Float_t multV0=0;
+ Float_t dummy=0;
+ if (fUseCorrV0) {
+ multV0 = GetCorrV0(aEsd,dummy);
+ }
+ else {
+ AliESDVZERO* esdV0 = aEsd->GetVZEROData();
+ Float_t multV0A=esdV0->GetMTotV0A();
+ Float_t multV0C=esdV0->GetMTotV0C();
+ multV0 = multV0A+multV0C;
+ }
if (multV0 < fMultMin) return kFALSE;
if (multV0 > fMultMax) return kFALSE;
Float_t ntracks = trackCuts->CountAcceptedTracks(aEsd);
// cout << "Hey! " << fCentrBin << " " << ntracks << " " << fMultMin <<" - " << fMultMax << endl;
- if (fCentrBin == -1) return kTRUE;
+ if (fCentrBin == -1 && !fUseMultRange) return kTRUE;
if (ntracks < fMultMin) return kFALSE;
if (ntracks > fMultMax) return kFALSE;
} else {
}
}
+
+Float_t AliAnalysisMultPbCentralitySelector::GetCorrV0(const AliESDEvent* esd, float &v0CorrResc) const
+{
+ // correct V0 non-linearity, prepare a version rescaled to SPD2 corr
+ const Double_t par0[64] = { 6.71e-02 , 6.86e-02 , 7.06e-02 , 6.32e-02 ,
+ 5.91e-02 , 6.07e-02 , 5.78e-02 , 5.73e-02 , 5.91e-02 , 6.22e-02 ,
+ 5.90e-02 , 6.11e-02 , 5.55e-02 , 5.29e-02 , 5.19e-02 , 5.56e-02 ,
+ 6.25e-02 , 7.03e-02 , 5.64e-02 , 5.81e-02 , 4.57e-02 , 5.30e-02 ,
+ 5.13e-02 , 6.43e-02 , 6.27e-02 , 6.48e-02 , 6.07e-02 , 1.01e-01 ,
+ 6.68e-02 , 7.16e-02 , 6.36e-02 , 5.95e-02 , 2.52e-02 , 2.82e-02 ,
+ 2.56e-02 , 2.86e-02 , 2.82e-02 , 2.10e-02 , 2.13e-02 , 2.32e-02 ,
+ 2.75e-02 , 4.34e-02 , 3.78e-02 , 4.52e-02 , 4.11e-02 , 3.89e-02 ,
+ 4.10e-02 , 3.73e-02 , 4.51e-02 , 5.07e-02 , 5.42e-02 , 4.74e-02 ,
+ 4.33e-02 , 4.44e-02 , 4.64e-02 , 3.01e-02 , 6.38e-02 , 5.26e-02 ,
+ 4.99e-02 , 5.26e-02 , 5.47e-02 , 3.84e-02 , 5.00e-02 , 5.20e-02 };
+ const Double_t par1[64] = { -6.68e-05 , -7.78e-05 , -6.88e-05 , -5.92e-05 ,
+ -2.43e-05 , -3.54e-05 , -2.91e-05 , -1.99e-05 , -1.40e-05 , -4.01e-05 ,
+ -2.29e-05 , -3.68e-05 , -2.53e-05 , -2.44e-06 , -9.22e-06 , -1.51e-05 ,
+ -2.80e-05 , -2.34e-05 , -1.72e-05 , -1.81e-05 , -1.29e-05 , -2.65e-05 ,
+ -1.61e-05 , -2.86e-05 , -1.74e-05 , -4.23e-05 , -3.41e-05 , -1.05e-04 ,
+ -2.76e-05 , -4.71e-05 , -3.06e-05 , -2.32e-05 , -1.55e-06 , 2.15e-05 ,
+ 1.40e-05 , 2.16e-05 , 1.21e-05 , 3.05e-06 , 1.67e-05 , -3.84e-06 ,
+ 3.09e-06 , 1.50e-05 , 3.47e-06 , 4.87e-06 , -3.71e-07 , -1.75e-06 ,
+ -1.80e-06 , 9.99e-06 , -6.46e-06 , -4.91e-06 , 1.33e-05 , -2.52e-07 ,
+ -3.85e-06 , 4.94e-06 , -2.48e-07 , -1.20e-05 , 2.07e-06 , 6.12e-06 ,
+ -1.18e-06 , 4.54e-06 , -1.54e-05 , -1.25e-05 , 1.46e-06 , -6.67e-06 };
+ const Double_t par2[64] = { 1.29e-08 , 1.51e-08 , 1.43e-08 , 1.11e-08 ,
+ 5.04e-09 , 6.99e-09 , 5.58e-09 , 4.15e-09 , 4.00e-09 , 8.22e-09 ,
+ 4.97e-09 , 7.66e-09 , 4.91e-09 , 1.10e-09 , 2.64e-09 , 3.64e-09 ,
+ 5.76e-09 , 5.46e-09 , 3.38e-09 , 3.47e-09 , 2.43e-09 , 4.13e-09 ,
+ 2.80e-09 , 5.80e-09 , 3.86e-09 , 7.46e-09 , 5.98e-09 , 2.58e-08 ,
+ 5.50e-09 , 8.72e-09 , 5.23e-09 , 4.37e-09 , 2.33e-09 , -6.01e-10 ,
+ 3.99e-11 , -2.02e-10 , 7.67e-10 , 2.03e-09 , 1.17e-10 , 2.56e-09 ,
+ 1.16e-09 , -4.75e-10 , 1.28e-09 , 1.23e-09 , 1.62e-09 , 1.61e-09 ,
+ 1.93e-09 , 2.97e-10 , 2.21e-09 , 2.16e-09 , 5.22e-10 , 1.03e-09 ,
+ 1.56e-09 , 5.00e-10 , 1.01e-09 , 2.93e-09 , 1.05e-09 , 9.96e-11 ,
+ 1.21e-09 , 7.45e-10 , 3.07e-09 , 2.31e-09 , 6.70e-10 , 1.89e-09 };
+ //
+ Float_t multCorr = 0;
+ Float_t multCorr2 = 0;
+ Float_t multChCorr[64];
+ AliESDVZERO* esdV0 = esd->GetVZEROData();
+ for(Int_t i = 0; i < 64; ++i) {
+ Double_t b = (esdV0->GetMultiplicity(i)*par1[i]-par0[i]);
+ Double_t s = (b*b-4.*par2[i]*esdV0->GetMultiplicity(i)*esdV0->GetMultiplicity(i));
+ Double_t n = 0;
+ if (s<0) {
+ printf("FPE %d %.2f %.2f %.2e\n",i,esdV0->GetMultiplicity(i),b,(b*b-4.*par2[i]*esdV0->GetMultiplicity(i)*esdV0->GetMultiplicity(i)));
+ n = -b;
+ }
+ else {
+ n = (-b + TMath::Sqrt(s));
+ }
+ multChCorr[i] = 2.*esdV0->GetMultiplicity(i)/n*par0[i];
+ multCorr += multChCorr[i];
+ multCorr2 += (multChCorr[i]/par0[i]/64.);
+ }
+ v0CorrResc = multCorr2;
+ return multCorr;
+}
{
public:
- AliAnalysisMultPbCentralitySelector() : fIsMC (0), fCentrEstimator(""), fCentrBin(-1), fMultMin(0), fMultMax(1000000), fFile1(""), fFile2(""), fUseMultRange(kFALSE), fUseV0CutRange(kFALSE) {;}
+ AliAnalysisMultPbCentralitySelector() : fIsMC (0), fCentrEstimator(""), fCentrBin(-1), fMultMin(0), fMultMax(1000000), fFile1(""), fFile2(""), fUseMultRange(kFALSE), fUseV0CutRange(kFALSE), fUseCorrV0(kTRUE), fUseSPDOuterRange(kFALSE) {;}
virtual ~AliAnalysisMultPbCentralitySelector(){}
// AliAnalysisCuts interface
void SetMultRange(Int_t multMin = 0, Int_t multMax=10000) { fMultMin = multMin; fMultMax = multMax; }
void SetUseMultRange(Bool_t flag = kTRUE) {fUseMultRange = flag;}
void SetUseV0Range(Bool_t flag = kTRUE) {fUseV0CutRange = flag;}
+ void SetUseCorrV0(Bool_t flag) { fUseCorrV0 = flag;}
void SetUseSPDOuterRange(Bool_t flag = kTRUE) {fUseSPDOuterRange = flag;}
void SetCentralityEstimator(const char * estimator) { fCentrEstimator = estimator; }
void SetCentralityBin(Int_t bin) { fCentrBin = bin; }
void SetCentrTaskFiles(const char * file1, const char * file2) { fFile1 = file1; fFile2 = file2; }
+
+
+ Float_t GetCorrV0(const AliESDEvent* esd, float &v0CorrResc) const ;
virtual void Print(Option_t* option = "") const ;
virtual Long64_t Merge(TCollection* list){list->GetEntries();return 0;}
TString fFile2; // file used by centrality task. Set here for bookkeeping
Bool_t fUseMultRange; // if true, use track bins rather than multiplicity estimator
Bool_t fUseV0CutRange; // if true, use v0 range rather than multiplicity estimator
+ Bool_t fUseCorrV0; // linearized V0
Bool_t fUseSPDOuterRange; // if true, use SPD outer cluster range rather than multiplicity estimator
ClassDef(AliAnalysisMultPbCentralitySelector, 3)
ClassImp(AliAnalysisMultPbTrackHistoManager)
-const char * AliAnalysisMultPbTrackHistoManager::kStatStepNames[] = { "All Events", "After centrality selection", "After physics Selection", "With Vertex" };
+const char * AliAnalysisMultPbTrackHistoManager::kStatStepNames[] = { "All Events", "After centrality selection", "After physics Selection", "After ZDC cut", "With Vertex" };
const char * AliAnalysisMultPbTrackHistoManager::kHistoPtEtaVzNames[] = { "hGenPtEtaVz", "hRecPtEtaVz", "hRecPtEtaVzPrim",
"hRecPtEtaVzSecWeak", "hRecPtEtaVzSecMaterial", "hRecPtEtaVzFake"};
const char * AliAnalysisMultPbTrackHistoManager::kHistoDCANames[] = { "hGenDCA", "hRecDCA", "hRecDCAPrim", "hRecDCASecWeak","hRecDCASecMaterial", "hRecDCAFake"};
TH2D * h = (TH2D*) GetHisto(kHistoDCANames[id]);
if (!h) {
- h = BookHistoDCA(kHistoDCANames[id], Form("Pt Eta Vz distribution (%s)",kHistoDCANames[id]));
+ h = BookHistoDCA(kHistoDCANames[id], Form("DCA vs pt distribution (%s)",kHistoDCANames[id]));
}
return h;
}
+TH2D * AliAnalysisMultPbTrackHistoManager::GetHistoV0vsNtracks(Histo_t id) {
+ // Returns a histo of V0 vs ntracks
+
+
+ TString name = TString(kHistoPrefix[id])+"_V0vsNtracks";
+
+ TH2D * h = (TH2D*) GetHisto(name);
+ if (!h) {
+ name+=fHNameSuffix;
+ Bool_t oldStatus = TH1::AddDirectoryStatus();
+ TH1::AddDirectory(kFALSE);
+
+ AliInfo(Form("Booking histo %s",name.Data()));
+
+ h = new TH2D (name.Data(), Form("V0 vs Ntracks (%s)",kHistoPrefix[id]), 300,0,3000, 300, 0, 20000);
+
+ TH1::AddDirectory(oldStatus);
+ fList->Add(h);
+
+
+ }
+ return h;
+
+
+}
+
+
TH1D * AliAnalysisMultPbTrackHistoManager::GetHistoMult(Histo_t id) {
// Returns a 3D histo of Pt/eta/vtx. It it does not exist, books it.
public:
typedef enum {kHistoGen, kHistoRec, kHistoRecPrim, kHistoRecSecWeak, kHistoRecSecMat, kHistoRecFake, kNHistos} Histo_t;
- typedef enum {kStatAll, kStatCentr, kStatPhysSel, kStatVtx, kNStatBins} Stat_t;
+ typedef enum {kStatAll, kStatCentr, kStatPhysSel, kStatVtx, kStatZDCCut, kNStatBins} Stat_t;
typedef enum {kPartPiPlus, kPartKPlus, kPartP, kPartLPlus, kPartPiMinus, kPartKMinus, kPartPBar, kPartLMinus, kPartOther, kNPart} Part_t;
TH1I * GetHistoStats();
TH2D * GetHistoDCA(Histo_t id);
TH1D * GetHistoMult(Histo_t id);
+ TH2D * GetHistoV0vsNtracks(Histo_t id);
+
TH1D * GetHistoSpecies(Histo_t id);
TH1D * GetHistoProcess(Histo_t id);
#include "AliMultiplicity.h"
#include <iostream>
#include "AliAnalysisMultPbCentralitySelector.h"
+#include "AliTriggerAnalysis.h"
using namespace std;
AliAnalysisTaskMultPbTracks::AliAnalysisTaskMultPbTracks()
: AliAnalysisTaskSE("TaskMultPbTracks"),
- fESD(0),fHistoManager(0),fCentrSelector(0),fTrackCuts(0),fTrackCutsNoDCA(0),fIsMC(0),fIsTPCOnly(0)
+ fESD(0),fHistoManager(0),fCentrSelector(0),fTrackCuts(0),fTrackCutsNoDCA(0),fIsMC(0),fIsTPCOnly(0), fTriggerAnalysis(0)
{
// constructor
}
AliAnalysisTaskMultPbTracks::AliAnalysisTaskMultPbTracks(const char * name)
: AliAnalysisTaskSE(name),
- fESD(0),fHistoManager(0),fCentrSelector(0),fTrackCuts(0),fTrackCutsNoDCA(0),fIsMC(0),fIsTPCOnly(0)
+ fESD(0),fHistoManager(0),fCentrSelector(0),fTrackCuts(0),fTrackCutsNoDCA(0),fIsMC(0),fIsTPCOnly(0), fTriggerAnalysis(0)
{
//
// Standard constructur which should be used
}
AliAnalysisTaskMultPbTracks::AliAnalysisTaskMultPbTracks(const AliAnalysisTaskMultPbTracks& obj) :
- AliAnalysisTaskSE(obj) ,fESD (0), fHistoManager(0), fCentrSelector(0), fTrackCuts(0),fTrackCutsNoDCA(0),fIsMC(0),fIsTPCOnly(0)
+ AliAnalysisTaskSE(obj) ,fESD (0), fHistoManager(0), fCentrSelector(0), fTrackCuts(0),fTrackCutsNoDCA(0),fIsMC(0),fIsTPCOnly(0), fTriggerAnalysis(0)
{
//copy ctor
fESD = obj.fESD ;
fCentrSelector = obj.fCentrSelector;
fIsMC = obj.fIsMC;
fIsTPCOnly = obj.fIsTPCOnly;
+ fTriggerAnalysis = obj.fTriggerAnalysis;
}
if(fHistoManager) {
delete fHistoManager;
fHistoManager = 0;
+ delete fTriggerAnalysis;
+ fTriggerAnalysis=0;
}
}
// Histo list should not be destroyed: fListWrapper is owner!
fTrackCutsNoDCA->SetMaxDCAToVertexXYPtDep();
fTrackCutsNoDCA->SetMaxDCAToVertexZPtDep();
+ fTriggerAnalysis = new AliTriggerAnalysis();
+
}
// Quality cut on vertexer Z, as suggested by Francesco Prino
if(vtxESD->IsFromVertexerZ()) {
if (vtxESD->GetNContributors() <= 0) return;
- if (vtxESD->GetDispersion() >= 0.04) return;
- if (vtxESD->GetZRes() >= 0.25) return;
+ if (vtxESD->GetDispersion() > 0.04) return;
+ if (vtxESD->GetZRes() > 0.25) return;
}
// "Beam gas" vertex cut
const AliESDVertex * vtxESDTPC= fESD->GetPrimaryVertexTPC();
if(vtxESDTPC->GetNContributors()<1) return;
- if (vtxESDTPC->GetNContributors()<(-10.+0.25*fESD->GetMultiplicity()->GetNumberOfITSClusters(0))) return;
+ if (vtxESDTPC->GetNContributors()<(-10.+0.25*fESD->GetMultiplicity()->GetNumberOfITSClusters(0))) return;
- // Fill vertex and statistics
+ // Fill statistics
fHistoManager->GetHistoStats()->Fill(AliAnalysisMultPbTrackHistoManager::kStatVtx);
+
+ // ZDC cut, only ZNs
+ Bool_t zdcA = fTriggerAnalysis->ZDCTDCTrigger(fESD, AliTriggerAnalysis::kASide, kTRUE, kFALSE) ;
+ Bool_t zdcC = fTriggerAnalysis->ZDCTDCTrigger(fESD, AliTriggerAnalysis::kCSide, kTRUE, kFALSE) ;
+
+ if (!(zdcA && zdcC)) return;
+ fHistoManager->GetHistoStats()->Fill(AliAnalysisMultPbTrackHistoManager::kStatZDCCut);
+
+
+ // Fill Vertex
+
fHistoManager->GetHistoVzEvent(AliAnalysisMultPbTrackHistoManager::kHistoRec)->Fill(vtxESD->GetZ());
// loop on tracks
// cout << acceptedTracks << endl;
hNTracks[AliAnalysisMultPbTrackHistoManager::kHistoRec] ->Fill(acceptedTracks);
+ Float_t v0;
+ fHistoManager->GetHistoV0vsNtracks(AliAnalysisMultPbTrackHistoManager::kHistoRec)->Fill(acceptedTracks, fCentrSelector->GetCorrV0(fESD,v0));
// FIXME
// hNTracks[AliAnalysisMultPbTrackHistoManager::kHistoRec] ->Fill(fESD->GetMultiplicity()->GetNumberOfTracklets());
class AliESDtrackCuts;
class AliAnalysisMultPbCentralitySelector;
class AliAnalysisMultPbTrackHistoManager;
-
+class AliTriggerAnalysis;
class AliAnalysisTaskMultPbTracks : public AliAnalysisTaskSE {
UInt_t fOfflineTrigger ; // offline trigger mask
Bool_t fIsMC; // true if processing montecarlo
Bool_t fIsTPCOnly; // if you only want to use TPC tracks
+ AliTriggerAnalysis * fTriggerAnalysis; // for offline triggers
+
AliAnalysisTaskMultPbTracks& operator=(const AliAnalysisTaskMultPbTracks& task);
Double_t zPCEnergy = esdZDC->GetZDCP1Energy();
Double_t zNAEnergy = esdZDC->GetZDCN2Energy();
Double_t zPAEnergy = esdZDC->GetZDCP2Energy();
- zdcA = (zNAEnergy>minEnergy || zPAEnergy>minEnergy);
- zdcC = (zNCEnergy>minEnergy || zPCEnergy>minEnergy);
+ // zdcA = (zNAEnergy>minEnergy || zPAEnergy>minEnergy);
+ // zdcC = (zNCEnergy>minEnergy || zPCEnergy>minEnergy);
+ zdcA = (zNAEnergy>minEnergy);
+ zdcC = (zNCEnergy>minEnergy);
}
void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kFALSE, Int_t runMode = 0, Bool_t isMC = 0,
Int_t centrBin = 0, const char * centrEstimator = "VOM", Int_t useOtherCentralityCut = 0, Int_t trackMin=0, Int_t trackMax=10000,
- const char* option = "",TString customSuffix = "", Int_t workers = -1)
+ const char* option = "",TString customSuffix = "", Int_t workers = -1, Bool_t useSingleBin=kTRUE)
{
// runMode:
//
AliAnalysisMultPbCentralitySelector * centrSelector = new AliAnalysisMultPbCentralitySelector();
centrSelector->SetCentrTaskFiles(file1,file2); // for bookkeping only
centrSelector->SetCentralityBin(centrBin);
+ if (!useSingleBin) centrSelector->SetCentralityBin(0); // FIXME: ok?
centrSelector->SetCentralityEstimator(centrEstimator);
Bool_t doSave = kFALSE;
TString optionStr(option);
if (optionStr.Contains("SAVE"))
- {
- optionStr = optionStr(0,optionStr.Index("SAVE")) + optionStr(optionStr.Index("SAVE")+4, optionStr.Length());
- doSave = kTRUE;
- }
+ {
+ optionStr = optionStr(0,optionStr.Index("SAVE")) + optionStr(optionStr.Index("SAVE")+4, optionStr.Length());
+ doSave = kTRUE;
+ }
- AliESDtrackCuts * cuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE); TString pathsuffix = "";
+ AliESDtrackCuts * cuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE);
+ TString pathsuffix = "";
+
+ if(!useSingleBin) pathsuffix += "_AllCentr";
if (optionStr.Contains("DCA")) {
delete cuts;
// load my task
- gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/multPbPb/AddTaskMultPbPbTracks.C");
- AliAnalysisTaskMultPbTracks * task = AddTaskMultPbPbTracks("multPbPbtracks.root", cuts, centrSelector);
- task->SetIsMC(useMCKinematics);
- task->SetOfflineTrigger(AliVEvent::kMB);
- if(optionStr.Contains("TPC")) task->SetTPCOnly();
- // if (isMC) {
- // task->SetOfflineTrigger(AliVEvent::kMB);
- // } else {
- // task->SetOfflineTrigger(AliVEvent::kUserDefined);
- // }
- if(useMCKinematics) task->GetHistoManager()->SetSuffix("MC");
- if(customSuffix!=""){
- cout << "Setting custom suffix: " << customSuffix << endl;
- task->GetHistoManager()->SetSuffix(customSuffix);
+ if (useSingleBin) {
+ gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/multPbPb/AddTaskMultPbPbTracks.C");
+ AliAnalysisTaskMultPbTracks * task = AddTaskMultPbPbTracks("multPbPbtracks.root", cuts, centrSelector);
+ task->SetIsMC(useMCKinematics);
+ task->SetOfflineTrigger(AliVEvent::kMB);
+ if(optionStr.Contains("TPC")) task->SetTPCOnly();
+ if(useMCKinematics) task->GetHistoManager()->SetSuffix("MC");
+ if(customSuffix!=""){
+ cout << "Setting custom suffix: " << customSuffix << endl;
+ task->GetHistoManager()->SetSuffix(customSuffix);
+ }
+ } else {
+ gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/multPbPb/AddTaskMultPbPbTracksAllCentrality.C");
+ centrSelector->SetUseV0Range(kTRUE);
+ Int_t ncentr = 11;
+ const Float_t minCentr[] = {0, 79, 247,577, 1185,2155,3565,5527,8203, 12167,15073};
+ const Float_t maxCentr[] = {79,247,577,1185,2155,3565,5527,8203,12167,15073,21000};
+ AliAnalysisTaskMultPbTracks ** tasks = AddTaskMultPbPbTracksAllCentrality("multPbPbtracks.root", cuts, centrSelector, ncentr,minCentr,maxCentr);
+ for(Int_t icentr = 0; icentr < ncentr; icentr++){
+ cout << "1 " << tasks[icentr] << endl;
+ tasks[icentr]->Print();
+ tasks[icentr]->SetIsMC(useMCKinematics);
+ cout << "2" << endl;
+ tasks[icentr]->SetOfflineTrigger(AliVEvent::kMB);
+ cout << "3" << endl;
+ if(optionStr.Contains("TPC")) tasks[icentr]->SetTPCOnly();
+ cout << "4" << endl;
+ if(useMCKinematics) tasks[icentr]->GetHistoManager()->SetSuffix("MC");
+ cout << "5" << endl;
+ if(customSuffix!=""){
+ cout << "Setting custom suffix: " << customSuffix+long(icentr) << tasks[icentr] << endl;
+ tasks[icentr]->GetHistoManager()->SetSuffix(customSuffix+long(icentr));
+ cout << "ok" << endl;
+ }
+ }
}
- // task->SelectCollisionCandidates(AliVEvent::kUserDefined);
+ // Init and run the analy
if (!mgr->InitAnalysis()) return;
-
+
mgr->PrintStatus();
if (runMode == kMyRunModeLocal ) {
TString fileName = "multPbPbtracks.root";
gSystem->mkdir(path, kTRUE);
gSystem->Rename(fileName, path + "/" + fileName);
+ for(Int_t ibin = 0; ibin < 20; ibin++){
+ TString fileBin = fileName;
+ fileBin.ReplaceAll(".root",Form("_%2.2d.root",ibin));
+ gSystem->Rename(fileBin, path + "/" + fileBin);
+ }
+
gSystem->Rename("event_stat.root", path + "/event_stat.root");
Printf(">>>>> Moved files to %s", path.Data());
}
if (runMode == kMyRunModeCAF)
- {
- cout << "Init in CAF mode" << endl;
+ {
+ cout << "Init in CAF mode" << endl;
- gEnv->SetValue("XSec.GSI.DelegProxy", "2");
- TProof::Open("alice-caf.cern.ch", workers>0 ? Form("workers=%d",workers) : "");
- //TProof::Open("skaf.saske.sk", workers>0 ? Form("workers=%d",workers) : "");
-
- // Enable the needed package
- gProof->UploadPackage("$ALICE_ROOT/STEERBase");
- gProof->EnablePackage("$ALICE_ROOT/STEERBase");
- gProof->UploadPackage("$ALICE_ROOT/ESD");
- gProof->EnablePackage("$ALICE_ROOT/ESD");
- gProof->UploadPackage("$ALICE_ROOT/AOD");
- gProof->EnablePackage("$ALICE_ROOT/AOD");
- gProof->UploadPackage("$ALICE_ROOT/ANALYSIS");
- gProof->EnablePackage("$ALICE_ROOT/ANALYSIS");
- gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
- gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
- gProof->UploadPackage("$ALICE_ROOT/PWG0base");
- gProof->EnablePackage("$ALICE_ROOT/PWG0base");
- gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0/multPb"));
- gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background"));
- }
+ gEnv->SetValue("XSec.GSI.DelegProxy", "2");
+ TProof * p = TProof::Open("alice-caf.cern.ch", workers>0 ? Form("workers=%d",workers) : "");
+ // TProof::Open("skaf.saske.sk", workers>0 ? Form("workers=%d",workers) : "");
+ p->Exec("TObject *o = gEnv->GetTable()->FindObject(\"Proof.UseMergers\"); gEnv->GetTable()->Remove(o);", kTRUE);
+
+ // Enable the needed package
+ gProof->UploadPackage("$ALICE_ROOT/STEERBase");
+ gProof->EnablePackage("$ALICE_ROOT/STEERBase");
+ gProof->UploadPackage("$ALICE_ROOT/ESD");
+ gProof->EnablePackage("$ALICE_ROOT/ESD");
+ gProof->UploadPackage("$ALICE_ROOT/AOD");
+ gProof->EnablePackage("$ALICE_ROOT/AOD");
+ gProof->UploadPackage("$ALICE_ROOT/ANALYSIS");
+ gProof->EnablePackage("$ALICE_ROOT/ANALYSIS");
+ gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
+ gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
+ gProof->UploadPackage("$ALICE_ROOT/PWG0base");
+ gProof->EnablePackage("$ALICE_ROOT/PWG0base");
+ gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0/multPb"));
+ gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background"));
+ }
else
- {
- cout << "Init in Local or Grid mode" << endl;
- gSystem->Load("libCore.so");
- gSystem->Load("libTree.so");
- gSystem->Load("libGeom.so");
- gSystem->Load("libVMC.so");
- gSystem->Load("libPhysics.so");
- gSystem->Load("libSTEERBase");
- gSystem->Load("libESD");
- gSystem->Load("libAOD");
- gSystem->Load("libANALYSIS");
- gSystem->Load("libANALYSISalice");
- // Use AliRoot includes to compile our task
- gROOT->ProcessLine(".include $ALICE_ROOT/include");
-
- // gSystem->Load("libVMC");
- // gSystem->Load("libTree");
- // gSystem->Load("libSTEERBase");
- // gSystem->Load("libESD");
- // gSystem->Load("libAOD");
- // gSystem->Load("libANALYSIS");
- // gSystem->Load("libANALYSISalice");
- // gSystem->Load("libPWG0base");
+ {
+ cout << "Init in Local or Grid mode" << endl;
+ gSystem->Load("libCore.so");
+ gSystem->Load("libTree.so");
+ gSystem->Load("libGeom.so");
+ gSystem->Load("libVMC.so");
+ gSystem->Load("libPhysics.so");
+ gSystem->Load("libSTEERBase");
+ gSystem->Load("libESD");
+ gSystem->Load("libAOD");
+ gSystem->Load("libANALYSIS");
+ gSystem->Load("libANALYSISalice");
+ // Use AliRoot includes to compile our task
+ gROOT->ProcessLine(".include $ALICE_ROOT/include");
+
+ // gSystem->Load("libVMC");
+ // gSystem->Load("libTree");
+ // gSystem->Load("libSTEERBase");
+ // gSystem->Load("libESD");
+ // gSystem->Load("libAOD");
+ // gSystem->Load("libANALYSIS");
+ // gSystem->Load("libANALYSISalice");
+ // gSystem->Load("libPWG0base");
- gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0/multPb"));
- gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background"));
- // gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background/"));
- }
+ gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0/multPb"));
+ gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background"));
+ // gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background/"));
+ }
// Load helper classes
TIterator * iter = listToLoad->MakeIterator();
TObjString * name = 0;
etaMax=0.5
npart=381.188
weakFactor=-1
+useSingleBin=kTRUE
give_help() {
grid or a text file with a ESD per line
- caf mode: a dataset
- grid mode: a directory on alien
+ -h This help
Options specific to the multiplicity analysis
+ -l Run over all centrality bins
+ -o <option> Misc option [default=$option]
+ Available options:
+ - SAVE: Move results to a different output folder*
+ - DCA: Use DCA cut with global tracks
+ - ITSsa: Use ITSsa tracks
+ - TPC: Use TPC only tracks
+ - NOMCKINE: Skip MC kinematics (runs way faster)
+ * == can be used in trigger studies task
+ -t <option> Command line option for root [defaul=$ropt]
+ -m Use this to run on Monte Carlo
+ -x <suffix> Set a custom suffix in the histo manager
+ -g Debug mode
+ == The following options are only valid if running on a single bin ==
-b <bin> Set centrality bin [default=$centrBin]
-e <estimator> Set centrality estimator [default=$centrEstimator]
Available choiches:
estimator [off by default]
-2 <min,max> Select centrality based on SPD outer layer clusters rather than on centrality
estimator [off by default]
- -o <option> Misc option [default=$option]
- Available options:
- - SAVE: Move results to a different output folder*
- - DCA: Use DCA cut with global tracks
- - ITSsa: Use ITSsa tracks
- - TPC: Use TPC only tracks
- - NOMCKINE: Skip MC kinematics (runs way faster)
- * == can be used in trigger studies task
- -t <option> Command line option for root [defaul=$ropt]
- -m Use this to run on Monte Carlo
- -x <suffix> Set a custom suffix in the histo manager
- -g Debug mode
- -h This help
Options specific to the trigger study task
-k <ntracklets> Max number of tracklets to fill eta and pt
}
-while getopts "x:sr:c:gmd:o:w:n:e:b:t:k:vy:0:2:hz:a:" opt; do
+while getopts "x:sr:c:gmd:o:w:n:e:b:t:k:vy:0:2:hz:a:l" opt; do
case $opt in
r)
run=yes
runmode=$OPTARG
;;
+ l)
+ useSingleBin=kFALSE
+ ;;
y)
useTrackCentralityCut=1
trackMin=${OPTARG%%,*}
then
root $ropt runTriggerStudy.C\(\"$dataset\",$nev,$offset,$debug,$runmode,$isMC,$ntrackletsTrigger,$rejectBGV0Trigger,\"$option\",$workers\)
else
- root $ropt run.C\(\"$dataset\",$nev,$offset,$debug,$runmode,$isMC,$centrBin,\"$centrEstimator\",$useTrackCentralityCut,$trackMin,$trackMax,\"$option\",\"$customSuffix\",$workers\)
+ root $ropt run.C\(\"$dataset\",$nev,$offset,$debug,$runmode,$isMC,$centrBin,\"$centrEstimator\",$useTrackCentralityCut,$trackMin,$trackMax,\"$option\",\"$customSuffix\",$workers,$useSingleBin\)
fi
fi
cout << "Init in CAF mode" << endl;
gEnv->SetValue("XSec.GSI.DelegProxy", "2");
- // TProof::Open("alice-caf.cern.ch", workers>0 ? Form("workers=%d",workers) : "");
- TProof::Open("skaf.saske.sk", workers>0 ? Form("workers=%d",workers) : "");
+ TProof::Open("alice-caf.cern.ch", workers>0 ? Form("workers=%d",workers) : "");
+ // TProof::Open("skaf.saske.sk", workers>0 ? Form("workers=%d",workers) : "");
// Enable the needed package
gProof->UploadPackage("$ALICE_ROOT/STEERBase");