]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
from Redmer Bertens:
authormkrzewic <mkrzewic@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 15 May 2013 18:12:32 +0000 (18:12 +0000)
committermkrzewic <mkrzewic@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 15 May 2013 18:12:32 +0000 (18:12 +0000)
extend fucntionality of the jet flow task to measure the flow of jet constituents

PWG/FLOW/Tasks/AliAnalysisTaskJetFlow.cxx
PWG/FLOW/Tasks/AliAnalysisTaskJetFlow.h
PWGCF/FLOW/macros/AddTaskJetFlow.C

index 9c4631424c4a1cfb3548836c3722d11b35b7519a..8c1d7e011ea696eeefb972324eeac03943bdae78 100644 (file)
  * 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)
  *
  * */
 
@@ -49,11 +51,11 @@ using namespace std;
 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());
@@ -73,8 +75,6 @@ void AliAnalysisTaskJetFlow::LocalInit()
 {
     // 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); 
 }
@@ -95,6 +95,10 @@ void AliAnalysisTaskJetFlow::UserCreateOutputObjects()
     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);
@@ -108,8 +112,13 @@ void AliAnalysisTaskJetFlow::UserExec(Option_t *)
 {
     // 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);
@@ -126,19 +135,37 @@ void AliAnalysisTaskJetFlow::UserExec(Option_t *)
         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);
             }
         }
     }
@@ -147,6 +174,7 @@ void AliAnalysisTaskJetFlow::UserExec(Option_t *)
         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) {
index 4622a34f6389318690b8c2ef4812d3f936f02a58..68bee53e2849490b5ba074eb7ed75908f1be8abb 100644 (file)
@@ -35,7 +35,9 @@ class AliAnalysisTaskJetFlow : public AliAnalysisTaskSE
         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); 
 
@@ -46,12 +48,16 @@ class AliAnalysisTaskJetFlow : public AliAnalysisTaskSE
         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
@@ -61,6 +67,7 @@ class AliAnalysisTaskJetFlow : public AliAnalysisTaskSE
         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
index beb2bf1eb8f2d437eb940e81cb85aa598df8e7e8..66f63da341db404c230696c4b17cca334c9c8e0f 100644 (file)
@@ -7,11 +7,15 @@
 class AliAnalysisDataContainer;
 class AliFlowTrackCuts;
 
-void AddTaskJetFlow( TString name    = "name",
-                     TString jets    = "jets",
-                     Float_t ptbump  = 0,
-                     TArrayI* cent   = 0x0,
-                     Bool_t debug    = kTRUE  )
+void AddTaskJetFlow( TString name       = "name",
+                     TString jets       = "jets",
+                     Float_t ptbump     = 0,
+                     TArrayI* cent      = 0x0,
+                     Float_t MinPOIPt   = 0.15,
+                     Float_t MaxPOIPt   = 150,
+                     Float_t CCBinsInPt = 100,
+                     Bool_t VParticle   = kFALSE,
+                     Bool_t debug       = kFALSE  )
 {
     // first check the environment (common to all tasks)
     if(debug) printf("\n\n  >> AddTaskJetFlow <<\n");
@@ -45,6 +49,11 @@ void AddTaskJetFlow( TString name    = "name",
         TString tempName(Form("%s_%i_%i", name.Data(), cent->At(i), cent->At(i+1)));
         // create the task
         AliAnalysisTaskJetFlow* task = new AliAnalysisTaskJetFlow(tempName.Data());   
+        task->SetCCMaxPt(MaxPOIPt);
+        task->SetCCBinsInPt(CCBinsInPt);
+        task->SetDoVParticleAnalysis(VParticle);
+        task->SetMinMaxPOIPt(MinPOIPt, MaxPOIPt);
+        (debug) ? task->SetDebugMode(1) : task->SetDebugMode(-1);
         if(!task) {
              if(debug) cout << " --> Unexpected error occurred: NO TASK WAS CREATED! (could be a library problem!) " << endl;
              return 0x0;