* jet correlation task - correlates jets to the vzero reaction plane using
* the scalar product method
*
- * this task should be run AFTER
+ * this task expects POI's in a TClonesArray, e.g. from running it after
* $ALICE_ROOT/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskRhoVnModulation()
+ * if subtracted jet pt is stored by using jet->PtSub() run in default mode
+ * to run on unsubtracted jets - or any other class inheriting from AliVParticle - call SetDoVParticleAnalysis(kTRUE)
*
* */
ClassImp(AliAnalysisTaskJetFlow)
AliAnalysisTaskJetFlow::AliAnalysisTaskJetFlow() : AliAnalysisTaskSE(),
- fDebug(-1), fJetsName(0), fOutputList(0), fDataType(kESD), fPtBump(0), fCCMaxPt(150), fCCBinsInPt(50), fCentralityMin(-1), fCentralityMax(-1), fCutsRP(0), fCutsPOI(0), fCutsNull(0), fCutsEvent(0), fFlowEvent(0), fHistAnalysisSummary(0)
+ fDebug(-1), fJetsName(0), fOutputList(0), fDataType(kESD), fVParticleAnalysis(kFALSE), fInitialized(kFALSE), fPtBump(0), fCCMaxPt(150), fCCBinsInPt(50), fCentralityMin(-1), fCentralityMax(-1), fPOIPtMin(0.15), fPOIPtMax(150), fCutsRP(0), fCutsPOI(0), fCutsNull(0), fCutsEvent(0), fFlowEvent(0), fHistAnalysisSummary(0), fCentralitySelection(0)
{ /* default constructor */ }
//_____________________________________________________________________________
AliAnalysisTaskJetFlow::AliAnalysisTaskJetFlow(const char* name) : AliAnalysisTaskSE(name),
- fDebug(-1), fJetsName(0), fOutputList(0), fDataType(kESD), fPtBump(0), fCCMaxPt(150), fCCBinsInPt(50), fCentralityMin(-1), fCentralityMax(-1), fCutsRP(0), fCutsPOI(0), fCutsNull(0), fCutsEvent(0), fFlowEvent(0), fHistAnalysisSummary(0)
+ fDebug(-1), fJetsName(0), fOutputList(0), fDataType(kESD), fVParticleAnalysis(kFALSE), fInitialized(kFALSE), fPtBump(0), fCCMaxPt(150), fCCBinsInPt(50), fCentralityMin(-1), fCentralityMax(-1), fPOIPtMin(0.15), fPOIPtMax(150), fCutsRP(0), fCutsPOI(0), fCutsNull(0), fCutsEvent(0), fFlowEvent(0), fHistAnalysisSummary(0), fCentralitySelection(0)
{
// constructor
DefineInput(0, TChain::Class());
{
// executed once
if(fDebug > 0) printf("__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
- if(dynamic_cast<AliAODEvent*>(InputEvent())) fDataType = kAOD; // determine the datatype
- else if(dynamic_cast<AliESDEvent*>(InputEvent())) fDataType = kESD;
fCutsEvent = new AliFlowEventCuts();
fCutsEvent->SetRefMultMethod(AliESDtrackCuts::kTrackletsITSTPC);
}
fHistAnalysisSummary->SetBinContent(3, fCentralityMax);
fHistAnalysisSummary->GetXaxis()->SetBinLabel(4, "pt bias");
fOutputList->Add(fHistAnalysisSummary);
+ // qa
+ fCentralitySelection = new TH1F("fCentralitySelection", "fCentralitySelection", 100, 0, 100);
+ fOutputList->Add(fCentralitySelection);
+
PostData(1, fOutputList);
// create the flow event and configure the static cc object
fFlowEvent = new AliFlowEvent(1000);
{
// user exec
if(fDebug > 0) printf("__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
-
if(!InputEvent() || !fCutsNull || !fCutsRP) return; // coverity (and sanity)
+ if(!fInitialized) {
+ if(dynamic_cast<AliAODEvent*>(InputEvent())) fDataType = kAOD; // determine the datatype
+ else if(dynamic_cast<AliESDEvent*>(InputEvent())) fDataType = kESD;
+ fInitialized = kTRUE;
+ }
+ if(!PassesCuts(InputEvent())) return; // check the event cuts
// get the jet array, which is added as an extension to the AliVEvent by the jetfinder
TClonesArray* jets = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fJetsName.Data()));
Int_t nAcceptedJets(0);
fFlowEvent->Fill(fCutsRP, fCutsNull);
fFlowEvent->SetReferenceMultiplicity(fCutsEvent->RefMult(InputEvent(), MCEvent()));
// loop over jets and inject them as POI's
- for(Int_t i(0); i < iJets; i++) {
- AliEmcalJet* jet = static_cast<AliEmcalJet*>(jets->At(i));
- if(jet) {
- if(jet->PtSub() + fPtBump <= .15) {
- fHistAnalysisSummary->SetBinContent(4, 1);
- continue;
+ if(fVParticleAnalysis) {
+ for(Int_t i(0); i < iJets; i++) {
+ AliVParticle* jet = static_cast<AliVParticle*>(jets->At(i));
+ if(jet) {
+ if(jet->Pt() + fPtBump <= fPOIPtMin || jet->Pt() > fPOIPtMax) {
+ fHistAnalysisSummary->SetBinContent(4, 1);
+ continue;
+ }
+ nAcceptedJets++;
+ AliFlowTrack* flowTrack = new AliFlowTrack(jet);
+ flowTrack->SetPt(jet->Pt() + fPtBump);
+ flowTrack->SetForPOISelection(kTRUE);
+ flowTrack->SetForRPSelection(kFALSE);
+ fFlowEvent->InsertTrack(flowTrack);
+ }
+ }
+ } else {
+ for(Int_t i(0); i < iJets; i++) {
+ AliEmcalJet* jet = static_cast<AliEmcalJet*>(jets->At(i));
+ if(jet) {
+ if(jet->PtSub() + fPtBump <= fPOIPtMin || jet->Pt() > fPOIPtMax) {
+ fHistAnalysisSummary->SetBinContent(4, 1);
+ continue;
+ }
+ nAcceptedJets++;
+ AliFlowTrack* flowTrack = new AliFlowTrack(jet);
+ flowTrack->SetPt(jet->PtSub() + fPtBump);
+ flowTrack->SetForPOISelection(kTRUE);
+ flowTrack->SetForRPSelection(kFALSE);
+ fFlowEvent->InsertTrack(flowTrack);
}
- nAcceptedJets++;
- AliFlowTrack* flowTrack = new AliFlowTrack(jet);
- flowTrack->SetPt(jet->PtSub() + fPtBump);
- flowTrack->SetForPOISelection(kTRUE);
- flowTrack->SetForRPSelection(kFALSE);
- fFlowEvent->InsertTrack(flowTrack);
}
}
}
if(fDebug > 0) printf(" > No accepted jets in event ! < " );
return;
}
+ fCentralitySelection->Fill(InputEvent()->GetCentrality()->GetCentralityPercentile("V0M"));
PostData(1, fOutputList);
PostData(2, fFlowEvent);
if(fDebug>0) {
void SetPtBump(Float_t b) {fPtBump = b;}
void SetCCMaxPt(Float_t m) {fCCMaxPt = m;}
void SetCCBinsInPt(Float_t b) {fCCBinsInPt = b;}
- void SetMinMaxCentrality(Float_t min, Float_t max) {fCentralityMin = min; fCentralityMax = max; }
+ void SetMinMaxCentrality(Float_t min, Float_t max) {fCentralityMin = min; fCentralityMax = max; }
+ void SetMinMaxPOIPt(Float_t min, Float_t max) {fPOIPtMin = min; fPOIPtMax = max; }
+ void SetDoVParticleAnalysis(Bool_t d) {fVParticleAnalysis = d; }
// analysis details
Bool_t PassesCuts(AliVEvent* event);
TString fJetsName; // name of jet list
TList* fOutputList; //! output list
dataType fDataType; //! data type
+ Bool_t fVParticleAnalysis; // do the analysis on vparticles instead of jets
+ Bool_t fInitialized; //! check if the analysis is initialized
// members
Float_t fPtBump; // track pt += ptbump
Float_t fCCMaxPt; // max pt for flow analysis (common constants)
Float_t fCCBinsInPt; // bins in pt for flow analysis (common constants)
Float_t fCentralityMin; // minimium centrality
Float_t fCentralityMax; // maximum centrality
+ Float_t fPOIPtMin; // minimum pt for poi's
+ Float_t fPOIPtMax; // maximum pt for poi's
// cut objects
AliFlowTrackCuts* fCutsRP; // rp cuts
AliFlowTrackCuts* fCutsPOI; // poi cuts
AliFlowEvent* fFlowEvent; //! container for flow analysis
// histograms
TH1F* fHistAnalysisSummary; //! analysis summary
+ TH1F* fCentralitySelection; //! centrality selection
AliAnalysisTaskJetFlow(const AliAnalysisTaskJetFlow&); // not implemented
AliAnalysisTaskJetFlow& operator=(const AliAnalysisTaskJetFlow&); // not implemented