From: mfloris Date: Tue, 3 Jun 2014 12:22:46 +0000 (+0200) Subject: Task and library for jet test in ESE spectra analysis (M Tangaro) X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=582efd6078c72928c11a618d6816a8c8fd5992a6;p=u%2Fmrichter%2FAliRoot.git Task and library for jet test in ESE spectra analysis (M Tangaro) This new tasks builts the jet spectra using the standard PWG-JE machinery in events with high and low q. This is used to evaluate possible biases from hard processes in the computation of the Q vector. It is built as a separate lib because it depends on the Jet libraries (building it in libPWGspectra would have introduced a dependency on the latter). --- diff --git a/PWGLF/CMakelibPWGLFspectraJET.pkg b/PWGLF/CMakelibPWGLFspectraJET.pkg new file mode 100644 index 00000000000..249adfb6468 --- /dev/null +++ b/PWGLF/CMakelibPWGLFspectraJET.pkg @@ -0,0 +1,39 @@ +# -*- mode: CMake -*- +#--------------------------------------------------------------------------------# +# Package File for PWGLFresonances # +# Author : Johny Jose (johny.jose@cern.ch) # +# Variables Defined : # +# # +# SRCS - C++ source files # +# HDRS - C++ header files # +# DHDR - ROOT Dictionary Linkdef header file # +# CSRCS - C source files # +# CHDRS - C header files # +# EINCLUDE - Include directories # +# EDEFINE - Compiler definitions # +# ELIBS - Extra libraries to link # +# ELIBSDIR - Extra library directories # +# PACKFFLAGS - Fortran compiler flags for package # +# PACKCXXFLAGS - C++ compiler flags for package # +# PACKCFLAGS - C compiler flags for package # +# PACKSOFLAGS - Shared library linking flags # +# PACKLDFLAGS - Module linker flags # +# PACKBLIBS - Libraries to link (Executables only) # +# EXPORT - Header files to be exported # +# CINTHDRS - Dictionary header files # +# CINTAUTOLINK - Set automatic dictionary generation # +# ARLIBS - Archive Libraries and objects for linking (Executables only) # +# SHLIBS - Shared Libraries and objects for linking (Executables only) # +#--------------------------------------------------------------------------------# + +set ( SRCS + SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.cxx + ) + +string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" ) + +set ( DHDR PWGLFspectraJETLinkDef.h) + +set ( EXPORT ) + +set ( EINCLUDE PWGLF/SPECTRA/PiKaPr/TestAOD TPC TOF STEER/STEER STEER/ESD STEER/AOD STEER/CDB STEER/STEERBase ANALYSIS) diff --git a/PWGLF/PWGLFspectraJETLinkDef.h b/PWGLF/PWGLFspectraJETLinkDef.h new file mode 100644 index 00000000000..ae56f36a1c7 --- /dev/null +++ b/PWGLF/PWGLFspectraJETLinkDef.h @@ -0,0 +1,6 @@ +#ifdef __CINT__ + +#pragma link C++ class AliAnalysisTaskJetSpectraAOD+; + + +#endif diff --git a/PWGLF/SPECTRA/PiKaPr/TestAOD/AddTaskJetSpectraAOD.C b/PWGLF/SPECTRA/PiKaPr/TestAOD/AddTaskJetSpectraAOD.C new file mode 100644 index 00000000000..0cbc7b702da --- /dev/null +++ b/PWGLF/SPECTRA/PiKaPr/TestAOD/AddTaskJetSpectraAOD.C @@ -0,0 +1,103 @@ +AliAnalysisTaskJetSpectraAOD* AddTaskJetSpectraAOD( + Bool_t mc=kFALSE, + Double_t CentCutMin=0, + Double_t CentCutMax=100, + Double_t QvecCutMin=0, + Double_t QvecCutMax=100, + Double_t EtaMin=-0.9, + Double_t EtaMax=0.9, + Double_t pt=50., + Double_t ptTofMatch=.6, + UInt_t trkbit=1, + Double_t DCA=100000, + UInt_t minNclsTPC=70, + TString opt="", + //jet settings + const char * RecJet, + const char * BckBranch, + Float_t jetParameterR = 0.4, + UInt_t filterMask = 272, + Float_t ptJetMin = 0.15){ + + AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); + if (!mgr) + { + ::Error("AddAliAnalysisTaskJetSpectraAOD", "No analysis manager to connect to."); + return NULL; + } + + // Check the analysis type using the event handlers connected to the analysis manager. + //============================================================================== + if (!mgr->GetInputEventHandler()) + { + ::Error("AliAnalysisTaskJetSpectraAOD", "This task requires an input event handler"); + return NULL; + } + + TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD" + if(type.Contains("ESD")) + { + ::Error("AliAnalysisTaskJetSpectraAOD", "This task requires to run on AOD"); + return NULL; + } + + AliSpectraAODTrackCuts * trcuts = new AliSpectraAODTrackCuts(Form("TrackCuts%s",opt.Data())); + trcuts->SetDCA(DCA); + trcuts->SetTrackBits(trkbit); + trcuts->SetPt(pt); + trcuts->SetPtTOFMatching(ptTofMatch); + trcuts->SetEta(EtaMin,EtaMax); + trcuts->SetMinTPCcls(minNclsTPC); + trcuts->PrintCuts(); + + AliSpectraAODEventCuts * evcuts = new AliSpectraAODEventCuts(Form("EventCuts%s",opt.Data())); + evcuts->SetQVectorCut(QvecCutMin,QvecCutMax); + evcuts->SetCentralityCutMax(CentCutMax); + evcuts->SetCentralityCutMin(CentCutMin); + if(mc==1)evcuts->SetIsMC(kTRUE); + evcuts->PrintCuts(); + + + AliAnalysisTaskJetSpectraAOD *task = new AliAnalysisTaskJetSpectraAOD(Form("TaskAODSpectraCent%.0fto%.0f_QVec%.1fto%.1f_Eta%.1fto%.1f_TrBit%d%s", + CentCutMin, + CentCutMax, + QvecCutMin, + QvecCutMax, + EtaMin, + EtaMax, + trkbit, + opt.Data())); + task->SetEventCuts(evcuts); + task->SetTrackCuts(trcuts); + if(mc==1)task->SetIsMC(kTRUE); + + //jet settings + task->SetBranchNames(RecJet); + task->SetRecBackgroundBranch(BckBranch); + task->SetFilterMask(filterMask); + task->SetJetPtMin(ptJetMin); + + Float_t EtaJetMin = EtaMin + jetParameterR; + Float_t EtaJetMax = EtaMax - jetParameterR; + task->SetEtaJet(EtaJetMin,EtaJetMax); + + TString outputFileName = AliAnalysisManager::GetCommonFileName(); + + TString typeofdata=mc?"MC":"Data"; + + outputFileName += Form(":SpectraESE_%s%s",typeofdata.Data(),opt.Data()); + + cout<<"outputFileName: "<GetCommonInputContainer(); + AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chist%s",opt.Data()), TList::Class(), AliAnalysisManager::kOutputContainer,outputFileName); + AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcut%s",opt.Data()), AliSpectraAODEventCuts::Class(), AliAnalysisManager::kOutputContainer,outputFileName); + AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcut%s",opt.Data()), AliSpectraAODTrackCuts::Class(), AliAnalysisManager::kOutputContainer, outputFileName); + mgr->AddTask(task); + + mgr->ConnectInput(task, 0, cinput); + mgr->ConnectOutput(task, 1, coutputpt1); + mgr->ConnectOutput(task, 2, coutputpt2); + mgr->ConnectOutput(task, 3, coutputpt3); + + return task; +} diff --git a/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.cxx b/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.cxx new file mode 100644 index 00000000000..c59b5d59931 --- /dev/null +++ b/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.cxx @@ -0,0 +1,298 @@ +/************************************************************************** + * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +//----------------------------------------------------------------- +// AliAnalysisTaskJetSpectraAOD class +//----------------------------------------------------------------- + +#include "TChain.h" +#include "TTree.h" +#include "TLegend.h" +#include "TH1F.h" +#include "TH2F.h" +#include "THnSparse.h" +#include "TCanvas.h" +#include "AliAnalysisTask.h" +#include "AliAnalysisManager.h" +#include "AliVTrack.h" +#include "AliAODMCParticle.h" +#include "AliVParticle.h" +#include "AliAODEvent.h" +#include "AliAODTrack.h" +#include "AliAODInputHandler.h" +#include "AliAnalysisTaskJetSpectraAOD.h" +#include "AliAnalysisTaskESDfilter.h" +#include "AliAnalysisDataContainer.h" +#include "AliCentrality.h" +#include "TProof.h" +#include "AliVEvent.h" +#include "AliStack.h" +#include + +#include "AliSpectraAODTrackCuts.h" +#include "AliSpectraAODEventCuts.h" + +//jet include +#include "AliAODHandler.h" +#include "AliAODJetEventBackground.h" +#include "AliAODJet.h" + +#include + +using namespace std; + +ClassImp(AliAnalysisTaskJetSpectraAOD) + +//________________________________________________________________________ +AliAnalysisTaskJetSpectraAOD::AliAnalysisTaskJetSpectraAOD(const char *name) : AliAnalysisTaskSE(name), + fAOD(0), + fIsMC(0), + fEventCuts(0), + fTrackCuts(0), + fVZEROside(0), + fOutput(0), + fAODJets(0), + fJetBranchName(""), + fListJets(0), + fBackgroundBranch(""), + fFilterMask(0), + fJetPtMin(0), + fJetEtaMin(0x0), + fJetEtaMax(0x0), + fnCentBins(20), + fnQvecBins(20), + fIsQvecCalibMode(0), + fQvecUpperLim(100), + fIsQvecCut(0), + fQvecMin(0), + fQvecMax(100) +{ + // Default constructor + + DefineInput(0, TChain::Class()); + DefineOutput(1, TList::Class()); + DefineOutput(2, AliSpectraAODEventCuts::Class()); + DefineOutput(3, AliSpectraAODTrackCuts::Class()); + +} + +//________________________________________________________________________ +AliAnalysisTaskJetSpectraAOD::~AliAnalysisTaskJetSpectraAOD() +{ + delete fListJets; +} +//________________________________________________________________________ +//________________________________________________________________________ +void AliAnalysisTaskJetSpectraAOD::UserCreateOutputObjects() +{ + Printf("\n\n\n\n\n\n In CreateOutput Object:"); + + fOutput = new TList(); + fOutput->SetOwner(); + fOutput->SetName("chistpt"); + + fListJets = new TList; + + if (!fTrackCuts) AliFatal("Track Cuts should be set in the steering macro"); + if (!fEventCuts) AliFatal("Event Cuts should be set in the steering macro"); + + // binning common to all the THn + const Double_t ptBins[] = {0.15,5.,10.,15.,20.,25.,30.,35.,40.,50.,75.,100.,150.,200.}; + const Int_t nptBins=13; + + //dimensions of THnSparse for jets + const Int_t nvarjet=5; + // pt_raw pt_corr cent Q vec rho + Int_t binsHistRealJet[nvarjet] = { nptBins, nptBins, fnCentBins, fnQvecBins, 40.}; + Double_t xminHistRealJet[nvarjet] = { 0., 0., 0., 0., 0.}; + Double_t xmaxHistRealJet[nvarjet] = { 200., 200., 100., fQvecUpperLim, 200.}; + THnSparseF* NSparseHistJet = new THnSparseF("NSparseHistJet","NSparseHistJet",nvarjet,binsHistRealJet,xminHistRealJet,xmaxHistRealJet); + NSparseHistJet->GetAxis(0)->SetTitle("#it{p}_{T,raw}"); + NSparseHistJet->GetAxis(0)->SetName("pT_raw"); + NSparseHistJet->SetBinEdges(0,ptBins); + NSparseHistJet->GetAxis(1)->SetTitle("#it{p}_{T,corr}"); + NSparseHistJet->GetAxis(1)->SetName("pT_corr"); + NSparseHistJet->SetBinEdges(1,ptBins); + NSparseHistJet->GetAxis(2)->SetTitle(Form("%s cent",fEventCuts->GetCentralityMethod().Data())); + NSparseHistJet->GetAxis(2)->SetName(Form("%s_cent",fEventCuts->GetCentralityMethod().Data())); + NSparseHistJet->GetAxis(3)->SetTitle("Q vec"); + NSparseHistJet->GetAxis(3)->SetName("Q_vec"); + NSparseHistJet->GetAxis(4)->SetTitle("rho"); + NSparseHistJet->GetAxis(4)->SetName("rho"); + fOutput->Add(NSparseHistJet); + + //dimensions of THnSparse for the normalization + const Int_t nvarev=3; + // cent Q vec rho + Int_t binsHistRealEv[nvarev] = { fnCentBins, fnQvecBins, 40.}; + Double_t xminHistRealEv[nvarev] = { 0., 0., 0.}; + Double_t xmaxHistRealEv[nvarev] = { 100., fQvecUpperLim, 200.}; + THnSparseF* NSparseHistEv = new THnSparseF("NSparseHistEv","NSparseHistEv",nvarev,binsHistRealEv,xminHistRealEv,xmaxHistRealEv); + NSparseHistEv->GetAxis(0)->SetTitle(Form("%s cent",fEventCuts->GetCentralityMethod().Data())); + NSparseHistEv->GetAxis(0)->SetName(Form("%s_cent",fEventCuts->GetCentralityMethod().Data())); + NSparseHistEv->GetAxis(1)->SetTitle("Q vec"); + NSparseHistEv->GetAxis(1)->SetName("Q_vec"); + NSparseHistEv->GetAxis(2)->SetTitle("rho"); + NSparseHistEv->GetAxis(2)->SetName("rho"); + fOutput->Add(NSparseHistEv); + +// TH1F* fHistTest = new TH1F("fHistTest","fHistTest",nptBins-1,ptBins); +// fOutput->Add(fHistTest); + + PostData(1, fOutput ); + PostData(2, fEventCuts); + PostData(3, fTrackCuts); + +} + +//________________________________________________________________________ +void AliAnalysisTaskJetSpectraAOD::UserExec(Option_t *) +{ + + // check for jet branches + if(!strlen(fJetBranchName.Data())){ + AliError("Jet branch name not set."); + return; + } + + // main event loop + fAOD = dynamic_cast(fInputEvent); + if (!fAOD) { + AliWarning("ERROR: AliAODEvent not available \n"); + return; + } + + if (strcmp(fAOD->ClassName(), "AliAODEvent")) + { + AliFatal("Not processing AODs"); + } + + TObject* outHandler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler(); + if( outHandler && outHandler->InheritsFrom("AliAODHandler") ) { + fAODJets = ((AliAODHandler*)outHandler)->GetAOD(); + } + +// -- event selection -- + + //event cuts + if(!fEventCuts->IsSelected(fAOD,fTrackCuts))return;//event selection //FIXME in our event selection need to put fAODJets? + + Double_t Qvec=0.;//in case of MC we save space in the memory + if(!fIsMC){ + if(fIsQvecCalibMode){ + if(fVZEROside==0)Qvec=fEventCuts->GetqV0A(); + else if (fVZEROside==1)Qvec=fEventCuts->GetqV0C(); + } + else Qvec=fEventCuts->GetQvecPercentile(fVZEROside); + } + + if(fIsQvecCut && (QvecfQvecMax) ) return; + + Double_t Cent=fEventCuts->GetCent(); + + // accepted events + // -- end event selection -- + + + // get background + AliAODJetEventBackground* externalBackground = 0; + if(fAODJets && !externalBackground && fBackgroundBranch.Length()){ + externalBackground = (AliAODJetEventBackground*)(fAODJets->FindListObject(fBackgroundBranch.Data())); + if(!externalBackground)Printf("%s:%d Background branch not found %s",(char*)__FILE__,__LINE__,fBackgroundBranch.Data());; + } + + Float_t rho = 0; + if(externalBackground)rho = externalBackground->GetBackground(0); //default schema + + // fetch jets + TClonesArray *aodJets = dynamic_cast(fAODJets->FindListObject(fJetBranchName.Data())); + if(!aodJets){ + AliError(Form("no jet branch \"%s\" found, in the AODs are:", fJetBranchName.Data())); + if(fAOD){ + Printf("Input AOD >>>>"); + fAOD->Print(); + } + return; + } + + fListJets->Clear(); + for (Int_t iJet = 0; iJet < aodJets->GetEntriesFast(); iJet++) { + AliAODJet *jet = dynamic_cast((*aodJets)[iJet]); + if (jet) fListJets->Add(jet); + } + + + + for(Int_t i=0; iGetEntries(); ++i){ + AliAODJet* jet = (AliAODJet*)(fListJets->At(i)); + + if((jet->Eta()Eta()>fJetEtaMax)) continue; + + Double_t ptJet = jet->Pt(); + + Double_t areaJet = jet->EffectiveAreaCharged(); + + Double_t ptcorr = ptJet-rho*areaJet; + + Double_t varJet[5]; + varJet[0]=jet->Pt(); + varJet[1]=(Double_t)ptcorr; + varJet[2]=(Double_t)Cent; + varJet[3]=(Double_t)Qvec; + varJet[4]=(Double_t)rho; + + ((THnSparseF*)fOutput->FindObject("NSparseHistJet"))->Fill(varJet);//jet loop + } + + +// //track loop +// for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++) { //FIXME loop on aod track... should be on jet tracks??? +// AliAODTrack* track = fAOD->GetTrack(iTracks); +// // if(!(track->TestFilterBit(1024)))continue; +// if (!fTrackCuts->IsSelected(track,kTRUE)) continue; +// +// TH1F* h=(TH1F*)fOutput->FindObject("fHistTest");h->Fill(track->Pt()); +// +// } // end loop on tracks + + Double_t varEv[3]; + varEv[0]=Cent; + varEv[1]=Qvec; + varEv[2]=rho; + ((THnSparseF*)fOutput->FindObject("NSparseHistEv"))->Fill(varEv);//event loop + + PostData(1,fOutput); + PostData(2, fEventCuts); + PostData(3, fTrackCuts); + //Printf("............. end of Exec"); + +} +//_________________________________________________________________ +void AliAnalysisTaskJetSpectraAOD::Terminate(Option_t *) +{ + // Terminate + printf("AliAnalysisTaskJetSpectraAOD: Terminate() \n"); +} + +//jet +void AliAnalysisTaskJetSpectraAOD::SetBranchNames(const TString &branch) +{ + fJetBranchName = branch; +} + +void AliAnalysisTaskJetSpectraAOD::SetRecBackgroundBranch(const TString &bckbranch) +{ + fBackgroundBranch = bckbranch; +} \ No newline at end of file diff --git a/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.h b/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.h new file mode 100644 index 00000000000..bac484a1231 --- /dev/null +++ b/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskJetSpectraAOD.h @@ -0,0 +1,119 @@ +#ifndef ALIANALYSISTASKJETSPECTRAAOD_H +#define ALIANALYSISTASKJETSPECTRAAOD_H + +class TH1F; +class TH2F; +class AliAODEvent; +class AliSpectraAODTrackCuts; +class AliSpectraAODEventCuts; +class AliHelperPID; + +#include "AliAnalysisTaskSE.h" + +class AliAnalysisTaskJetSpectraAOD : public AliAnalysisTaskSE +{ + public: + + // constructors + AliAnalysisTaskJetSpectraAOD() : AliAnalysisTaskSE(), + fAOD(0), + fIsMC(0), + fEventCuts(0), + fTrackCuts(0), + fVZEROside(0), + fOutput(0), + fAODJets(0), + fJetBranchName(""), + fListJets(0), + fBackgroundBranch(""), + fFilterMask(0), + fJetPtMin(0), + fJetEtaMin(0x0), + fJetEtaMax(0x0), + fnCentBins(20), + fnQvecBins(20), + fIsQvecCalibMode(0), + fQvecUpperLim(100), + fIsQvecCut(0), + fQvecMin(0), + fQvecMax(100) + {} + AliAnalysisTaskJetSpectraAOD(const char *name); + virtual ~AliAnalysisTaskJetSpectraAOD(); + + void SetIsMC(Bool_t isMC = kFALSE) {fIsMC = isMC; } + Bool_t GetIsMC() const { return fIsMC;} + + AliSpectraAODTrackCuts * GetTrackCuts() { return fTrackCuts; } + AliSpectraAODEventCuts * GetEventCuts() { return fEventCuts; } + TList * GetOutputList() { return fOutput; } + + void SetTrackCuts(AliSpectraAODTrackCuts * tc) { fTrackCuts = tc; } + void SetEventCuts(AliSpectraAODEventCuts * vc) { fEventCuts = vc; } + void SetnCentBins(Int_t val) { fnCentBins = val; } + void SetnQvecBins(Int_t val) { fnQvecBins = val; } + void SetQvecCalibMode(Bool_t mode) { fIsQvecCalibMode = mode; } + void SetQvecUpperLimit(Double_t val) { fQvecUpperLim = val; } + + //jet getter + void GetBranchNames(TString &branch) const { branch = fJetBranchName; } + void GetBackgroundBranchNames(TString &branch) const { branch = fBackgroundBranch; } + Float_t GetJetPtMin() const { return fJetPtMin; } + Float_t GetJetEtaMin() const { return fJetEtaMin; } + Float_t GetJetEtaMax() const { return fJetEtaMax; } + //jet setter + void SetBranchNames(const TString &branch); + void SetRecBackgroundBranch(const TString &bckbranch); + void SetFilterMask(UInt_t i){fFilterMask = i;} + void SetJetPtMin(Float_t pt) { fJetPtMin = pt; } + void SetEtaJet(Float_t etamin,Float_t etamax) { fJetEtaMin = etamin; fJetEtaMax = etamax; } + + void SetVZEROside(Int_t side = 0) {fVZEROside = side; } + Int_t GetVZEROside() const { return fVZEROside;} + + void SetQvecCut(Bool_t qcut) { fIsQvecCut = qcut; } + void SetQvecCutLimits(Float_t qmin,Float_t qmax) { fQvecMin = qmin; fQvecMax = qmax; } + + + void UserCreateOutputObjects(); + void UserExec(Option_t *option); + void Terminate(Option_t *); + + private: + + AliAODEvent *fAOD; //! AOD object + Bool_t fIsMC;// true if processing MC + AliSpectraAODEventCuts * fEventCuts; // Event Cuts + AliSpectraAODTrackCuts * fTrackCuts; // Track Cuts + + Int_t fVZEROside; // 0: VZERO-A 1: VZERO-C + + TList * fOutput; // output list + + //jet + AliAODEvent * fAODJets; //! AOD jet object + TString fJetBranchName; // name of jet branches to compare + TList * fListJets; //! jet lists + TString fBackgroundBranch; + + UInt_t fFilterMask; // filter bit for slecected tracks + Float_t fJetPtMin; // minimum jet pT + Float_t fJetEtaMin; // lower bound on eta for found jets + Float_t fJetEtaMax; // upper bound on eta for found jets + + Int_t fnCentBins; // number of bins for the centrality axis + Int_t fnQvecBins; // number of bins for the q vector axis + Bool_t fIsQvecCalibMode; // calib mode for Qvector percentile + Double_t fQvecUpperLim; // Upper limit for Qvector + + Bool_t fIsQvecCut; // Q-vec cut switch + Double_t fQvecMin; // lower bound for Qvec + Double_t fQvecMax; // upper bound for Qvec + + AliAnalysisTaskJetSpectraAOD(const AliAnalysisTaskJetSpectraAOD&); + AliAnalysisTaskJetSpectraAOD& operator=(const AliAnalysisTaskJetSpectraAOD&); + + ClassDef(AliAnalysisTaskJetSpectraAOD, 1); +}; + +#endif