]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
integration of local rho into framework. From Rosi/Redmer
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 22 Aug 2013 04:42:25 +0000 (04:42 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 22 Aug 2013 04:42:25 +0000 (04:42 +0000)
PWGJE/EMCALJetTasks/AliAnalysisTaskEmcalJet.cxx
PWGJE/EMCALJetTasks/AliAnalysisTaskEmcalJet.h
PWGJE/EMCALJetTasks/AliAnalysisTaskLocalRho.cxx
PWGJE/EMCALJetTasks/AliAnalysisTaskLocalRho.h
PWGJE/EMCALJetTasks/AliLocalRhoParameter.h
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskRhoVnModulation.cxx
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskRhoVnModulation.h
PWGJE/EMCALJetTasks/macros/AddTaskLocalRho.C

index 8326a6980d1981d558a6130a89f3cc33b05b48de..b91d0ea7a2d4bfb3bbef1af1509bf6a200b8fcf2 100644 (file)
@@ -18,6 +18,7 @@
 #include "AliEmcalJet.h"
 #include "AliLog.h"
 #include "AliRhoParameter.h"
+#include "AliLocalRhoParameter.h"
 #include "AliVCluster.h"
 #include "AliVEventHandler.h"
 #include "AliVParticle.h"
@@ -30,6 +31,7 @@ AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet() :
   fJetRadius(0.4),
   fJetsName(),
   fRhoName(),
+  fLocalRhoName(),
   fPtBiasJetTrack(0),
   fPtBiasJetClus(0),
   fJetPtCut(1),
@@ -48,6 +50,7 @@ AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet() :
   fJetTrigger(0),
   fJets(0),
   fRho(0),
+  fLocalRho(0),
   fRhoVal(0)
 {
   // Default constructor.
@@ -59,6 +62,7 @@ AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet(const char *name, Bool_t histo)
   fJetRadius(0.4),
   fJetsName(),
   fRhoName(),
+  fLocalRhoName(),
   fPtBiasJetTrack(0),
   fPtBiasJetClus(0),
   fJetPtCut(1),
@@ -77,6 +81,7 @@ AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet(const char *name, Bool_t histo)
   fJetTrigger(0),
   fJets(0),
   fRho(0),
+  fLocalRho(0),
   fRhoVal(0)
 {
   // Standard constructor.
@@ -184,7 +189,21 @@ AliRhoParameter *AliAnalysisTaskEmcalJet::GetRhoFromEvent(const char *name)
   }
   return rho;
 }
-
+//________________________________________________________________________
+AliLocalRhoParameter *AliAnalysisTaskEmcalJet::GetLocalRhoFromEvent(const char *name)
+{
+  // Get local rho from event.
+  AliLocalRhoParameter *rho = 0;
+  TString sname(name);
+  if (!sname.IsNull()) {
+    rho = dynamic_cast<AliLocalRhoParameter*>(InputEvent()->FindListObject(sname));
+    if (!rho) {
+      AliWarning(Form("%s: Could not retrieve local rho with name %s!", GetName(), name)); 
+      return 0;
+    }
+  }
+  return rho;
+}
 //________________________________________________________________________
 void AliAnalysisTaskEmcalJet::ExecOnce()
 {
@@ -225,6 +244,15 @@ void AliAnalysisTaskEmcalJet::ExecOnce()
     }
   }
 
+  if (!fLocalRhoName.IsNull() && !fLocalRho) {
+    fLocalRho = dynamic_cast<AliLocalRhoParameter*>(InputEvent()->FindListObject(fLocalRhoName));
+    if (!fLocalRho) {
+      AliError(Form("%s: Could not retrieve local rho %s!", GetName(), fLocalRhoName.Data()));
+      fInitialized = kFALSE;
+      return;
+    }
+  }
+
   if (!fJetsName.IsNull() && !fJets) {
     fJets = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fJetsName));
     if (!fJets) {
index 8b3d7d407b830fa76971c04961ac4ab0274a333f..4960c8482cedb194b405f457ec7cde23ba647d21 100644 (file)
@@ -8,6 +8,7 @@ class TList;
 class TString;
 class AliEmcalJet;
 class AliRhoParameter;
+class AliLocalRhoParameter;
 class AliVCluster;
 class AliVParticle;
 
@@ -29,6 +30,7 @@ class AliAnalysisTaskEmcalJet : public AliAnalysisTaskEmcal {
   void                        SetJetRadius(Float_t r)                              { fJetRadius      = r                ; } 
   void                        SetJetsName(const char *n)                           { fJetsName       = n                ; }
   virtual void                SetRhoName(const char *n)                            { fRhoName        = n                ; }
+  virtual void                SetLocalRhoName(const char *n)                       { fLocalRhoName   = n                ; }
   void                        SetMaxClusterPt(Float_t b)                           { fMaxClusterPt   = b                ; }
   void                        SetMaxTrackPt(Float_t b)                             { fMaxTrackPt     = b                ; }
   void                        SetPtBiasJetClus(Float_t b)                          { fPtBiasJetClus  = b                ; }
@@ -45,6 +47,7 @@ class AliAnalysisTaskEmcalJet : public AliAnalysisTaskEmcal {
   Double_t                    GetLeadingHadronPt(AliEmcalJet* jet)                                     const;
   void                        ExecOnce()                                                                    ;
   AliRhoParameter            *GetRhoFromEvent(const char *name)                                             ;
+  AliLocalRhoParameter       *GetLocalRhoFromEvent(const char *name)                                        ;
   Int_t                       GetSortedArray(Int_t indexes[], TClonesArray *array, Double_t rho=0)     const;
   Bool_t                      IsJetTrack(AliEmcalJet* jet, Int_t itrack, Bool_t sorted = kFALSE)       const;
   Bool_t                      IsJetCluster(AliEmcalJet* jet, Int_t iclus, Bool_t sorted = kFALSE)      const;
@@ -53,6 +56,7 @@ class AliAnalysisTaskEmcalJet : public AliAnalysisTaskEmcal {
   Float_t                     fJetRadius;                  // jet radius
   TString                     fJetsName;                   // name of jet collection
   TString                     fRhoName;                    // Name of rho object
+  TString                     fLocalRhoName;               // Name of local rho object
   Float_t                     fPtBiasJetTrack;             // select jets with a minimum pt track
   Float_t                     fPtBiasJetClus;              // select jets with a minimum pt cluster
   Float_t                     fJetPtCut;                   // cut on jet pt
@@ -71,12 +75,13 @@ class AliAnalysisTaskEmcalJet : public AliAnalysisTaskEmcal {
   UInt_t                      fJetTrigger;                 // jet trigger
   TClonesArray               *fJets;                       //!jets
   AliRhoParameter            *fRho;                        //!event rho
-  Double_t                    fRhoVal;                     //!event rho value
+  AliLocalRhoParameter       *fLocalRho;                   //!local event rho
+  Double_t                    fRhoVal;                     //!event rho value, same for local rho
 
  private:
   AliAnalysisTaskEmcalJet(const AliAnalysisTaskEmcalJet&);            // not implemented
   AliAnalysisTaskEmcalJet &operator=(const AliAnalysisTaskEmcalJet&); // not implemented
 
-  ClassDef(AliAnalysisTaskEmcalJet, 8) // EMCAL Jet base analysis task
+  ClassDef(AliAnalysisTaskEmcalJet, 10) // EMCAL Jet base analysis task
 };
 #endif
index da82d105443ee6b716697711de6770adae50c133..b76785dc56978b9f4d6361102b2c45c8c083eb32 100644 (file)
@@ -45,7 +45,7 @@ using namespace std;
 ClassImp(AliAnalysisTaskLocalRho)
 
 AliAnalysisTaskLocalRho::AliAnalysisTaskLocalRho() : AliAnalysisTaskEmcalJet("AliAnalysisTaskLocalRho", kTRUE), 
-    fDebug(0), fInitialized(0), fAttachToEvent(kTRUE), fFillHistograms(kFALSE), fNoEventWeightsForQC(kTRUE), fLocalRhoName(GetName()), fUseScaledRho(0), fCentralityClasses(0), fUserSuppliedV2(0), fUserSuppliedV3(0), fUserSuppliedR2(0), fUserSuppliedR3(0), fNAcceptedTracks(0), fNAcceptedTracksQCn(0), fInCentralitySelection(-1), fFitModulationType(kNoFit), fQCRecovery(kTryFit), fUsePtWeight(kTRUE), fDetectorType(kTPC), fFitModulationOptions("WLQI"), fRunModeType(kGrid), fFitModulation(0), fMinPvalue(0.01), fMaxPvalue(1), fLocalRho(0), fLocalJetMinEta(-10), fLocalJetMaxEta(-10), fLocalJetMinPhi(-10), fLocalJetMaxPhi(-10), fSoftTrackMinPt(0.15), fSoftTrackMaxPt(5.), fHistPvalueCDF(0), fAbsVnHarmonics(kTRUE), fExcludeLeadingJetsFromFit(1.), fRebinSwapHistoOnTheFly(kTRUE), fPercentageOfFits(10.), fUseV0EventPlaneFromHeader(kTRUE), fOutputList(0), fOutputListGood(0), fOutputListBad(0), fHistSwap(0), fHistAnalysisSummary(0), fProfV2(0), fProfV2Cumulant(0), fProfV3(0), fProfV3Cumulant(0) {
+    fDebug(0), fInitialized(0), fAttachToEvent(kTRUE), fFillHistograms(kFALSE), fNoEventWeightsForQC(kTRUE), fUseScaledRho(0), fCentralityClasses(0), fUserSuppliedV2(0), fUserSuppliedV3(0), fUserSuppliedR2(0), fUserSuppliedR3(0), fNAcceptedTracks(0), fNAcceptedTracksQCn(0), fInCentralitySelection(-1), fFitModulationType(kNoFit), fQCRecovery(kTryFit), fUsePtWeight(kTRUE), fDetectorType(kTPC), fFitModulationOptions("WLQI"), fRunModeType(kGrid), fFitModulation(0), fMinPvalue(0.01), fMaxPvalue(1), fLocalJetMinEta(-10), fLocalJetMaxEta(-10), fLocalJetMinPhi(-10), fLocalJetMaxPhi(-10), fSoftTrackMinPt(0.15), fSoftTrackMaxPt(5.), fHistPvalueCDF(0), fAbsVnHarmonics(kTRUE), fExcludeLeadingJetsFromFit(1.), fRebinSwapHistoOnTheFly(kTRUE), fPercentageOfFits(10.), fUseV0EventPlaneFromHeader(kTRUE), fOutputList(0), fOutputListGood(0), fOutputListBad(0), fHistSwap(0), fHistAnalysisSummary(0), fProfV2(0), fProfV2Cumulant(0), fProfV3(0), fProfV3Cumulant(0) {
     for(Int_t i(0); i < 10; i++) {
         fHistPsi2[i] = 0; 
         fHistPsi3[i] = 0;
@@ -54,7 +54,7 @@ AliAnalysisTaskLocalRho::AliAnalysisTaskLocalRho() : AliAnalysisTaskEmcalJet("Al
 }
 //_____________________________________________________________________________
 AliAnalysisTaskLocalRho::AliAnalysisTaskLocalRho(const char* name, runModeType type) : AliAnalysisTaskEmcalJet(name, kTRUE),
-    fDebug(0), fInitialized(0), fAttachToEvent(kTRUE), fFillHistograms(kFALSE), fNoEventWeightsForQC(kTRUE), fLocalRhoName(GetName()), fUseScaledRho(0), fCentralityClasses(0), fUserSuppliedV2(0), fUserSuppliedV3(0), fUserSuppliedR2(0), fUserSuppliedR3(0), fNAcceptedTracks(0), fNAcceptedTracksQCn(0), fInCentralitySelection(-1), fFitModulationType(kNoFit), fQCRecovery(kTryFit), fUsePtWeight(kTRUE), fDetectorType(kTPC), fFitModulationOptions("WLQI"), fRunModeType(type), fFitModulation(0), fMinPvalue(0.01), fMaxPvalue(1), fLocalRho(0), fLocalJetMinEta(-10), fLocalJetMaxEta(-10), fLocalJetMinPhi(-10), fLocalJetMaxPhi(-10), fSoftTrackMinPt(0.15), fSoftTrackMaxPt(5.), fHistPvalueCDF(0), fAbsVnHarmonics(kTRUE), fExcludeLeadingJetsFromFit(1.), fRebinSwapHistoOnTheFly(kTRUE), fPercentageOfFits(10.), fUseV0EventPlaneFromHeader(kTRUE), fOutputList(0), fOutputListGood(0), fOutputListBad(0), fHistSwap(0), fHistAnalysisSummary(0), fProfV2(0), fProfV2Cumulant(0), fProfV3(0), fProfV3Cumulant(0) {
+    fDebug(0), fInitialized(0), fAttachToEvent(kTRUE), fFillHistograms(kFALSE), fNoEventWeightsForQC(kTRUE), fUseScaledRho(0), fCentralityClasses(0), fUserSuppliedV2(0), fUserSuppliedV3(0), fUserSuppliedR2(0), fUserSuppliedR3(0), fNAcceptedTracks(0), fNAcceptedTracksQCn(0), fInCentralitySelection(-1), fFitModulationType(kNoFit), fQCRecovery(kTryFit), fUsePtWeight(kTRUE), fDetectorType(kTPC), fFitModulationOptions("WLQI"), fRunModeType(type), fFitModulation(0), fMinPvalue(0.01), fMaxPvalue(1), fLocalJetMinEta(-10), fLocalJetMaxEta(-10), fLocalJetMinPhi(-10), fLocalJetMaxPhi(-10), fSoftTrackMinPt(0.15), fSoftTrackMaxPt(5.), fHistPvalueCDF(0), fAbsVnHarmonics(kTRUE), fExcludeLeadingJetsFromFit(1.), fRebinSwapHistoOnTheFly(kTRUE), fPercentageOfFits(10.), fUseV0EventPlaneFromHeader(kTRUE), fOutputList(0), fOutputListGood(0), fOutputListBad(0), fHistSwap(0), fHistAnalysisSummary(0), fProfV2(0), fProfV2Cumulant(0), fProfV3(0), fProfV3Cumulant(0) {
     for(Int_t i(0); i < 10; i++) {
         fHistPsi2[i] = 0; 
         fHistPsi3[i] = 0;
@@ -82,6 +82,29 @@ AliAnalysisTaskLocalRho::~AliAnalysisTaskLocalRho()
     if(fHistSwap)               delete fHistSwap;
 }
 //_____________________________________________________________________________
+void AliAnalysisTaskLocalRho::ExecOnce()
+{
+    // Init the analysis
+   if(fLocalRhoName=="") fLocalRhoName = Form("LocalRhoFrom_%s", GetName());
+    fLocalRho = new AliLocalRhoParameter(fLocalRhoName.Data(), 0); 
+    // add the local rho to the event if necessary
+    if(fAttachToEvent) {
+        if(!(InputEvent()->FindListObject(fLocalRho->GetName()))) {
+            InputEvent()->AddObject(fLocalRho);
+        } else {
+            AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fLocalRho->GetName()));
+        }
+    }
+    AliAnalysisTaskEmcalJet::ExecOnce();        // init the base clas
+    if(fUseScaledRho) {
+        // unscaled rho has been retrieved by the parent class, now we retrieve rho scaled
+        fRho = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(Form("%s_Scaled", fRho->GetName())));
+        if(!fRho) {
+            AliFatal(Form("%s: Couldn't find container for scaled rho. Aborting !", GetName()));
+        }
+    }
+}
+//_____________________________________________________________________________
 Bool_t AliAnalysisTaskLocalRho::InitializeAnalysis() 
 {
     // initialize the anaysis
@@ -118,23 +141,6 @@ Bool_t AliAnalysisTaskLocalRho::InitializeAnalysis()
         case kGrid : { fFitModulationOptions += "N0"; } break;
         default : break;
     }
-    if(fUseScaledRho) {
-        // unscaled rho has been retrieved by the parent class, now we retrieve rho scaled
-        fRho = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(Form("%s_Scaled", fRho->GetName())));
-        if(!fRho) {
-            AliFatal(Form("%s: Couldn't find container for scaled rho. Aborting !", GetName()));
-            return kFALSE;  // pointless, but coverity will want this return value ...
-        }
-    }
-    fLocalRho = new AliLocalRhoParameter(fLocalRhoName.Data(), 0); 
-    // add the local rho to the event if necessary
-    if(fAttachToEvent) {
-        if(!(InputEvent()->FindListObject(fLocalRho->GetName()))) {
-            InputEvent()->AddObject(fLocalRho);
-        } else {
-            AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fLocalRho->GetName()));
-        }
-    }
     FillAnalysisSummaryHistogram();
     return kTRUE;
 }
index d300326481805d4a30df190f8d1bb5426be1c867..c4ab92ee63b1acadd8f4fd3a0764ecf2279f1a72 100644 (file)
@@ -31,6 +31,7 @@ class AliAnalysisTaskLocalRho : public AliAnalysisTaskEmcalJet
                                 AliAnalysisTaskLocalRho(const char *name, runModeType type);
         virtual                 ~AliAnalysisTaskLocalRho();
         // setting up the task and technical aspects
+        void                    ExecOnce();
         Bool_t                  InitializeAnalysis();
         virtual void            UserCreateOutputObjects();
         TH1F*                   BookTH1F(const char* name, const char* x, Int_t bins, Double_t min, Double_t max, Int_t c = -1, Bool_t append = kTRUE);
@@ -58,7 +59,6 @@ class AliAnalysisTaskLocalRho : public AliAnalysisTaskEmcalJet
         void                    SetDebugMode(Int_t d)                           {fDebug = d;}
         void                    SetCentralityClasses(TArrayI* c)                {fCentralityClasses = c;}
         void                    SetAttachToEvent(Bool_t a)                      {fAttachToEvent = a;}
-        void                    SetLocalRhoName(TString n)                      {fLocalRhoName = n;}
         void                    SetUseScaledRho(Bool_t s)                       {fUseScaledRho = s;}
         void                    SetFillHistograms(Bool_t b)                     {fFillHistograms = b;}
         // setters - analysis details
@@ -116,7 +116,6 @@ class AliAnalysisTaskLocalRho : public AliAnalysisTaskEmcalJet
         Bool_t                  fAttachToEvent;         // attach local rho to the event
         Bool_t                  fFillHistograms;        // fill qa histograms
         Bool_t                  fNoEventWeightsForQC;   // don't store event weights for qc analysis
-        TString                 fLocalRhoName;          // name for local rho
         Bool_t                  fUseScaledRho;          // use scaled rho
         TArrayI*                fCentralityClasses;     // centrality classes (maximum 10) used for QA
         TH1F*                   fUserSuppliedV2;        // histo with integrated v2
@@ -135,7 +134,6 @@ class AliAnalysisTaskLocalRho : public AliAnalysisTaskEmcalJet
         TF1*                    fFitModulation;         // modulation fit for rho
         Float_t                 fMinPvalue;             // minimum value of p
         Float_t                 fMaxPvalue;             // maximum value of p
-        AliLocalRhoParameter*   fLocalRho;              //! local rho
         // additional jet cuts (most are inherited)
         Float_t                 fLocalJetMinEta;        // local eta cut for jets
         Float_t                 fLocalJetMaxEta;        // local eta cut for jets
@@ -167,7 +165,7 @@ class AliAnalysisTaskLocalRho : public AliAnalysisTaskEmcalJet
         AliAnalysisTaskLocalRho(const AliAnalysisTaskLocalRho&);                  // not implemented
         AliAnalysisTaskLocalRho& operator=(const AliAnalysisTaskLocalRho&);       // not implemented
 
-        ClassDef(AliAnalysisTaskLocalRho, 2);
+        ClassDef(AliAnalysisTaskLocalRho, 3);
 };
 
 #endif
index 916e41e8ae2a78e5173910927ea0f4a047a5ed13..f5d925bbb38b3198c2ff7cb16e81c2a514b3a255 100644 (file)
@@ -21,6 +21,15 @@ class AliLocalRhoParameter : public AliRhoParameter {
   Double_t GetLocalVal(Double_t phi, Double_t r) const {
     return GetLocalVal(phi, r, GetVal());
   }
+  Double_t GetLocalUncertainty(Double_t phi, Double_t r, Double_t n) const {
+      if(!fLocalRho) return 999.;
+      Double_t intError(fLocalRho->IntegralError(phi-r,phi+r));
+      Double_t absConst(TMath::Abs(n/(2*r*fLocalRho->GetParameter(0))));
+      return  intError*absConst;        // absolute error on local rho
+  }
+  Double_t GetLocalUncertainty(Double_t phi, Double_t r) const {
+      return GetLocalUncertainty(phi, r, GetVal());
+  }
  private:
   TF1*     fLocalRho;      // ! rho as function of phi
 
index eced063f9310e1f2aafbf685aaaae71a05522d1c..100e196cc78da50b34328cb1e0cee446c5637850 100644 (file)
@@ -61,7 +61,7 @@ using namespace std;
 ClassImp(AliAnalysisTaskRhoVnModulation)
 
 AliAnalysisTaskRhoVnModulation::AliAnalysisTaskRhoVnModulation() : AliAnalysisTaskEmcalJet("AliAnalysisTaskRhoVnModulation", kTRUE), 
-    fDebug(0), fLocalInit(0), fAttachToEvent(kTRUE), fFillHistograms(kTRUE), fFillQAHistograms(kTRUE), fReduceBinsXByFactor(-1.), fReduceBinsYByFactor(-1.), fNoEventWeightsForQC(kTRUE), fCentralityClasses(0), fPtBinsHybrids(0), fPtBinsJets(0), fUserSuppliedV2(0), fUserSuppliedV3(0), fUserSuppliedR2(0), fUserSuppliedR3(0), fLocalRhoName(Form("RhoFrom_%s", GetName())), fUseScaledRho(0), fNAcceptedTracks(0), fNAcceptedTracksQCn(0), fFitModulationType(kNoFit), fQCRecovery(kTryFit), fUsePtWeight(kTRUE), fDetectorType(kTPC), fFitModulationOptions("QWLI"), fRunModeType(kGrid), fDataType(kESD), fRandom(0), fMappedRunNumber(0), fInCentralitySelection(-1), fFitModulation(0), fMinPvalue(0.01), fMaxPvalue(1), fNameJetClones(0), fNamePicoTrackClones(0), fNameRho(0), fLocalRho(0), fLocalJetMinEta(-10), fLocalJetMaxEta(-10), fLocalJetMinPhi(-10), fLocalJetMaxPhi(-10), fSoftTrackMinPt(0.15), fSoftTrackMaxPt(5.), fAbsVertexZ(10), fHistCentrality(0), fHistVertexz(0), fHistRunnumbersPhi(0), fHistRunnumbersEta(0), fHistPvaluePDF(0), fHistPvalueCDF(0), fMinDisanceRCtoLJ(0), fRandomConeRadius(-1.), fMaxCones(-1), fAbsVnHarmonics(kTRUE), fExcludeLeadingJetsFromFit(1.), fRebinSwapHistoOnTheFly(kTRUE), fPercentageOfFits(10.), fUseV0EventPlaneFromHeader(kTRUE), fExplicitOutlierCut(-1), fMinLeadingHadronPt(0), fSubtractJetPt(kFALSE), fOutputList(0), fOutputListGood(0), fOutputListBad(0), fHistAnalysisSummary(0), fHistSwap(0), fProfV2(0), fProfV2Cumulant(0), fProfV3(0), fProfV3Cumulant(0), fHistPsiControl(0), fHistPsiSpread(0), fHistPsiVZEROA(0), fHistPsiVZEROC(0), fHistPsiVZERO(0), fHistPsiTPC(0), fHistRhoVsMult(0), fHistRhoVsCent(0), fHistRhoAVsMult(0), fHistRhoAVsCent(0) {
+    fDebug(0), fLocalInit(0), fAttachToEvent(kTRUE), fFillHistograms(kTRUE), fFillQAHistograms(kTRUE), fReduceBinsXByFactor(-1.), fReduceBinsYByFactor(-1.), fNoEventWeightsForQC(kTRUE), fCentralityClasses(0), fPtBinsHybrids(0), fPtBinsJets(0), fUserSuppliedV2(0), fUserSuppliedV3(0), fUserSuppliedR2(0), fUserSuppliedR3(0), fUseScaledRho(0), fNAcceptedTracks(0), fNAcceptedTracksQCn(0), fFitModulationType(kNoFit), fQCRecovery(kTryFit), fUsePtWeight(kTRUE), fDetectorType(kTPC), fFitModulationOptions("QWLI"), fRunModeType(kGrid), fDataType(kESD), fRandom(0), fMappedRunNumber(0), fInCentralitySelection(-1), fFitModulation(0), fMinPvalue(0.01), fMaxPvalue(1), fNameJetClones(0), fNamePicoTrackClones(0), fNameRho(0), fLocalJetMinEta(-10), fLocalJetMaxEta(-10), fLocalJetMinPhi(-10), fLocalJetMaxPhi(-10), fSoftTrackMinPt(0.15), fSoftTrackMaxPt(5.), fAbsVertexZ(10), fHistCentrality(0), fHistVertexz(0), fHistRunnumbersPhi(0), fHistRunnumbersEta(0), fHistPvaluePDF(0), fHistPvalueCDF(0), fMinDisanceRCtoLJ(0), fRandomConeRadius(-1.), fMaxCones(-1), fAbsVnHarmonics(kTRUE), fExcludeLeadingJetsFromFit(1.), fRebinSwapHistoOnTheFly(kTRUE), fPercentageOfFits(10.), fUseV0EventPlaneFromHeader(kTRUE), fExplicitOutlierCut(-1), fMinLeadingHadronPt(0), fSubtractJetPt(kFALSE), fOutputList(0), fOutputListGood(0), fOutputListBad(0), fHistAnalysisSummary(0), fHistSwap(0), fProfV2(0), fProfV2Cumulant(0), fProfV3(0), fProfV3Cumulant(0), fHistPsiControl(0), fHistPsiSpread(0), fHistPsiVZEROA(0), fHistPsiVZEROC(0), fHistPsiVZERO(0), fHistPsiTPC(0), fHistRhoVsMult(0), fHistRhoVsCent(0), fHistRhoAVsMult(0), fHistRhoAVsCent(0) {
     for(Int_t i(0); i < 10; i++) {
         fProfV2Resolution[i] = 0;
         fProfV3Resolution[i] = 0;
@@ -106,7 +106,7 @@ AliAnalysisTaskRhoVnModulation::AliAnalysisTaskRhoVnModulation() : AliAnalysisTa
 }
 //_____________________________________________________________________________
 AliAnalysisTaskRhoVnModulation::AliAnalysisTaskRhoVnModulation(const char* name, runModeType type) : AliAnalysisTaskEmcalJet(name, kTRUE),
-  fDebug(0), fLocalInit(0), fAttachToEvent(kTRUE), fFillHistograms(kTRUE), fFillQAHistograms(kTRUE), fReduceBinsXByFactor(-1.), fReduceBinsYByFactor(-1.), fNoEventWeightsForQC(kTRUE), fCentralityClasses(0), fPtBinsHybrids(0), fPtBinsJets(0), fUserSuppliedV2(0), fUserSuppliedV3(0), fUserSuppliedR2(0), fUserSuppliedR3(0), fLocalRhoName(Form("RhoFrom_%s", GetName())), fUseScaledRho(0), fNAcceptedTracks(0), fNAcceptedTracksQCn(0), fFitModulationType(kNoFit), fQCRecovery(kTryFit), fUsePtWeight(kTRUE), fDetectorType(kTPC), fFitModulationOptions("QWLI"), fRunModeType(type), fDataType(kESD), fRandom(0), fMappedRunNumber(0), fInCentralitySelection(-1), fFitModulation(0), fMinPvalue(0.01), fMaxPvalue(1), fNameJetClones(0), fNamePicoTrackClones(0), fNameRho(0), fLocalRho(0), fLocalJetMinEta(-10), fLocalJetMaxEta(-10), fLocalJetMinPhi(-10), fLocalJetMaxPhi(-10), fSoftTrackMinPt(0.15), fSoftTrackMaxPt(5.),  fAbsVertexZ(10), fHistCentrality(0), fHistVertexz(0), fHistRunnumbersPhi(0), fHistRunnumbersEta(0), fHistPvaluePDF(0), fHistPvalueCDF(0), fMinDisanceRCtoLJ(0), fRandomConeRadius(-1.), fMaxCones(-1), fAbsVnHarmonics(kTRUE), fExcludeLeadingJetsFromFit(1.), fRebinSwapHistoOnTheFly(kTRUE), fPercentageOfFits(10.), fUseV0EventPlaneFromHeader(kTRUE), fExplicitOutlierCut(-1), fMinLeadingHadronPt(0), fSubtractJetPt(kFALSE), fOutputList(0), fOutputListGood(0), fOutputListBad(0), fHistAnalysisSummary(0), fHistSwap(0), fProfV2(0), fProfV2Cumulant(0), fProfV3(0), fProfV3Cumulant(0), fHistPsiControl(0), fHistPsiSpread(0), fHistPsiVZEROA(0), fHistPsiVZEROC(0), fHistPsiVZERO(0), fHistPsiTPC(0), fHistRhoVsMult(0), fHistRhoVsCent(0), fHistRhoAVsMult(0), fHistRhoAVsCent(0) {
+  fDebug(0), fLocalInit(0), fAttachToEvent(kTRUE), fFillHistograms(kTRUE), fFillQAHistograms(kTRUE), fReduceBinsXByFactor(-1.), fReduceBinsYByFactor(-1.), fNoEventWeightsForQC(kTRUE), fCentralityClasses(0), fPtBinsHybrids(0), fPtBinsJets(0), fUserSuppliedV2(0), fUserSuppliedV3(0), fUserSuppliedR2(0), fUserSuppliedR3(0), fUseScaledRho(0), fNAcceptedTracks(0), fNAcceptedTracksQCn(0), fFitModulationType(kNoFit), fQCRecovery(kTryFit), fUsePtWeight(kTRUE), fDetectorType(kTPC), fFitModulationOptions("QWLI"), fRunModeType(type), fDataType(kESD), fRandom(0), fMappedRunNumber(0), fInCentralitySelection(-1), fFitModulation(0), fMinPvalue(0.01), fMaxPvalue(1), fNameJetClones(0), fNamePicoTrackClones(0), fNameRho(0), fLocalJetMinEta(-10), fLocalJetMaxEta(-10), fLocalJetMinPhi(-10), fLocalJetMaxPhi(-10), fSoftTrackMinPt(0.15), fSoftTrackMaxPt(5.),  fAbsVertexZ(10), fHistCentrality(0), fHistVertexz(0), fHistRunnumbersPhi(0), fHistRunnumbersEta(0), fHistPvaluePDF(0), fHistPvalueCDF(0), fMinDisanceRCtoLJ(0), fRandomConeRadius(-1.), fMaxCones(-1), fAbsVnHarmonics(kTRUE), fExcludeLeadingJetsFromFit(1.), fRebinSwapHistoOnTheFly(kTRUE), fPercentageOfFits(10.), fUseV0EventPlaneFromHeader(kTRUE), fExplicitOutlierCut(-1), fMinLeadingHadronPt(0), fSubtractJetPt(kFALSE), fOutputList(0), fOutputListGood(0), fOutputListBad(0), fHistAnalysisSummary(0), fHistSwap(0), fProfV2(0), fProfV2Cumulant(0), fProfV3(0), fProfV3Cumulant(0), fHistPsiControl(0), fHistPsiSpread(0), fHistPsiVZEROA(0), fHistPsiVZEROC(0), fHistPsiVZERO(0), fHistPsiTPC(0), fHistRhoVsMult(0), fHistRhoVsCent(0), fHistRhoAVsMult(0), fHistRhoAVsCent(0) {
     for(Int_t i(0); i < 10; i++) {
         fProfV2Resolution[i] = 0;
         fProfV3Resolution[i] = 0;
@@ -158,6 +158,7 @@ AliAnalysisTaskRhoVnModulation::AliAnalysisTaskRhoVnModulation(const char* name,
         } break;
         default: fDebug = -1;   // suppress debug info explicitely when not running locally
     }
+    if(fLocalRhoName=="") fLocalRhoName = Form("LocalRhoFrom_%s", GetName());
 }
 //_____________________________________________________________________________
 AliAnalysisTaskRhoVnModulation::~AliAnalysisTaskRhoVnModulation()
@@ -171,6 +172,27 @@ AliAnalysisTaskRhoVnModulation::~AliAnalysisTaskRhoVnModulation()
     if(fCentralityClasses)      delete fCentralityClasses;
 }
 //_____________________________________________________________________________
+void AliAnalysisTaskRhoVnModulation::ExecOnce()
+{
+    // Init the analysis
+    fLocalRho = new AliLocalRhoParameter(fLocalRhoName.Data(), 0); 
+    if(fAttachToEvent) {
+        if(!(InputEvent()->FindListObject(fLocalRho->GetName()))) {
+            InputEvent()->AddObject(fLocalRho);
+        } else {
+            AliFatal(Form("%s: Container with name %s already present. Aborting", GetName(), fLocalRho->GetName()));
+        }
+    }
+    AliAnalysisTaskEmcalJet::ExecOnce();        // init the base class
+    if(fUseScaledRho) {
+        // unscaled rho has been retrieved by the parent class, now we retrieve rho scaled
+        fRho = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(Form("%s_Scaled", fRho->GetName())));
+        if(!fRho) {
+            AliFatal(Form("%s: Couldn't find container for scaled rho. Aborting !", GetName()));
+        }
+    }
+}
+//_____________________________________________________________________________
 Bool_t AliAnalysisTaskRhoVnModulation::InitializeAnalysis() 
 {
     // initialize the anaysis
@@ -214,22 +236,6 @@ Bool_t AliAnalysisTaskRhoVnModulation::InitializeAnalysis()
         case kGrid : { fFitModulationOptions += "N0"; } break;
         default : break;
     }
-    if(fUseScaledRho) {
-        // unscaled rho has been retrieved by the parent class, now we retrieve rho scaled
-        fRho = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(Form("%s_Scaled", fRho->GetName())));
-        if(!fRho) {
-            AliFatal(Form("%s: Couldn't find container for scaled rho. Aborting !", GetName()));
-            return kFALSE; // pointless, but coverity will want this return value ...
-        }
-    }
-    fLocalRho = new AliLocalRhoParameter(fLocalRhoName.Data(), 0); 
-    if(fAttachToEvent) {
-        if(!(InputEvent()->FindListObject(fLocalRho->GetName()))) {
-            InputEvent()->AddObject(fLocalRho);
-        } else {
-            AliFatal(Form("%s: Container with name %s already present. Aborting", GetName(), fLocalRho->GetName()));
-        }
-    }
     FillAnalysisSummaryHistogram();
     return kTRUE;
 }
index 2286942d58e2e77b06d313c042a42b44e844ee27..97364d69e793ea3a3fc617415e43a6d0158fdbeb 100644 (file)
@@ -33,8 +33,8 @@ class AliAnalysisTaskRhoVnModulation : public AliAnalysisTaskEmcalJet
                                 AliAnalysisTaskRhoVnModulation();
                                 AliAnalysisTaskRhoVnModulation(const char *name, runModeType type);
         virtual                 ~AliAnalysisTaskRhoVnModulation();
-       
         // setting up the task and technical aspects
+        void                    ExecOnce();
         Bool_t                  InitializeAnalysis();
         virtual void            UserCreateOutputObjects();
         virtual Bool_t          Run();
@@ -76,7 +76,6 @@ class AliAnalysisTaskRhoVnModulation : public AliAnalysisTaskEmcalJet
         void                    SetNameJetClones(const char* name)              {fNameJetClones = name; }
         void                    SetNamePicoTrackClones(const char* name)        {fNamePicoTrackClones = name; }
         void                    SetNameRho(const char* name)                    {fNameRho = name; }
-        void                    SetLocalRhoName(TString name)                   {fLocalRhoName = name; }
         void                    SetUseScaledRho(Bool_t s)                       {fUseScaledRho = s; }
         void                    SetRandomSeed(TRandom3* r)                      {if (fRandom) delete fRandom; fRandom = r; }
         void                    SetModulationFit(TF1* fit);
@@ -185,7 +184,6 @@ class AliAnalysisTaskRhoVnModulation : public AliAnalysisTaskEmcalJet
         TH1F*                   fUserSuppliedR2;        // correct the extracted v2 with this r
         TH1F*                   fUserSuppliedR3;        // correct the extracted v3 with this r
         // members
-        TString                 fLocalRhoName;          // local rho name
         Bool_t                  fUseScaledRho;          // use scaled rho
         Int_t                   fNAcceptedTracks;       //! number of accepted tracks
         Int_t                   fNAcceptedTracksQCn;    //! accepted tracks for QCn
@@ -205,7 +203,6 @@ class AliAnalysisTaskRhoVnModulation : public AliAnalysisTaskEmcalJet
         const char*             fNameJetClones;         //! collection of tclones array with jets
         const char*             fNamePicoTrackClones;   //! collection of tclones with pico tracks
         const char*             fNameRho;               //! name of rho
-        AliLocalRhoParameter*   fLocalRho;              //! local rho
         // additional jet cuts (most are inherited)
         Float_t                 fLocalJetMinEta;        // local eta cut for jets
         Float_t                 fLocalJetMaxEta;        // local eta cut for jets
@@ -304,7 +301,7 @@ class AliAnalysisTaskRhoVnModulation : public AliAnalysisTaskEmcalJet
         AliAnalysisTaskRhoVnModulation(const AliAnalysisTaskRhoVnModulation&);                  // not implemented
         AliAnalysisTaskRhoVnModulation& operator=(const AliAnalysisTaskRhoVnModulation&);       // not implemented
 
-        ClassDef(AliAnalysisTaskRhoVnModulation, 14);
+        ClassDef(AliAnalysisTaskRhoVnModulation, 15);
 };
 
 #endif
index 77c08456729a66a80c6e4c9198a4ad5666efad0e..6c5955efb3326793062d963fa37a30f28b94c27d 100644 (file)
@@ -8,20 +8,21 @@
  */
 
 AliAnalysisTaskLocalRho* AddTaskLocalRho(
-  const char *ntracks            = "Tracks",    // track selection used for vn estimate
-  const char *nclusters          = "",
-  const char *njets              = "Jets",      // jet selection for finding leading jet
-  const char *nrho               = "Rho",
-  Double_t   jetradius          = 0.3, 
-  Double_t   jetptcut           = 1,
+  const char *ntracks           = "Tracks",     // track selection used for vn estimate
+  const char *nclusters         = "",           // clusters (not used) 
+  const char *njets             = "Jets",       // jet selection for finding leading jet
+  const char *nrho              = "Rho",        // name of nominal rho
+  const char *lrho              = "LocalRho",   // name of local rho object
+  Double_t   jetradius          = 0.3,          // jet radius (to remove leading jet)
+  Double_t   jetptcut           = 1,            
   Double_t   jetareacut         = 0.557,
   UInt_t     type               = AliAnalysisTaskEmcal::kTPC,
   Int_t      leadhadtype        = 0,
-  const char *name           = "AliAnalysisTaskLocalRho",
-  TString    fitOpts            = "WLQI",
-  UInt_t     fitType            = AliAnalysisTaskLocalRho::kCombined,
-  TArrayI    *centralities      = 0x0,  
-  UInt_t     runMode            = AliAnalysisTaskLocalRho::kGrid
+  const char *name              = "AliAnalysisTaskLocalRho",    // task name
+  TString    fitOpts            = "WLQI",                       // options for tfitter
+  UInt_t     fitType            = AliAnalysisTaskLocalRho::kCombined,   // fitting strategy
+  TArrayI    *centralities      = 0x0,                                  // centrality binning for qa
+  UInt_t     runMode            = AliAnalysisTaskLocalRho::kGrid        // run mode 
   )
 {  
   // Get the pointer to the existing analysis manager via the static access method.
@@ -52,6 +53,7 @@ AliAnalysisTaskLocalRho* AddTaskLocalRho(
   jetTask->SetClusName(nclusters);
   jetTask->SetJetsName(njets);
   jetTask->SetRhoName(nrho);
+  jetTask->SetLocalRhoName(lrho);
   jetTask->SetJetRadius(jetradius);
   jetTask->SetJetPtCut(jetptcut);
   jetTask->SetPercAreaCut(jetareacut);