]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
bookkeep pt hard info when generating on-the-fly pythia events
authormverweij <marta.verweij@cern.ch>
Tue, 4 Feb 2014 14:45:11 +0000 (15:45 +0100)
committermverweij <marta.verweij@cern.ch>
Thu, 6 Feb 2014 14:00:18 +0000 (15:00 +0100)
PWGJE/EMCALJetTasks/AliJetEmbeddingFromGenTask.cxx
PWGJE/EMCALJetTasks/AliJetEmbeddingFromGenTask.h
PWGJE/EMCALJetTasks/macros/AddTaskJetEmbeddingFromGen.C

index 5b38bd3de63bacecd1f896fcda35ddfc1b1d85c0..8e107e5362d2f937727061a0cc04df7eeec40925 100644 (file)
@@ -12,6 +12,7 @@
 #include <TParticle.h>
 #include <TParticlePDG.h>
 #include <TRandom3.h>
+#include <TProfile.h>
 #include "AliAnalysisManager.h"
 #include "AliEMCALDigit.h"
 #include "AliEMCALGeometry.h"
 #include "AliStack.h"
 #include "AliVCluster.h"
 #include "AliVEvent.h"
+#include "AliGenPythiaEventHeader.h"
 
 ClassImp(AliJetEmbeddingFromGenTask)
 
 //________________________________________________________________________
 AliJetEmbeddingFromGenTask::AliJetEmbeddingFromGenTask() : 
   AliJetModelBaseTask("AliJetEmbeddingFromGenTask"),
-  fGen(0)
+  fGen(0),
+  fHistTrials(0),
+  fHistXsection(0),
+  fHistPtHard(0)
 {
   // Default constructor.
   SetSuffix("EmbeddedFromGen");
 }
 
 //________________________________________________________________________
-AliJetEmbeddingFromGenTask::AliJetEmbeddingFromGenTask(const char *name) : 
-  AliJetModelBaseTask(name),
-  fGen(0)
+AliJetEmbeddingFromGenTask::AliJetEmbeddingFromGenTask(const char *name, Bool_t drawqa) :
+  AliJetModelBaseTask(name,drawqa),
+  fGen(0),
+  fHistTrials(0),
+  fHistXsection(0),
+  fHistPtHard(0)
 {
   // Standard constructor.
   SetSuffix("EmbeddedFromGen");
@@ -53,6 +61,32 @@ AliJetEmbeddingFromGenTask::~AliJetEmbeddingFromGenTask()
   // Destructor
 }
 
+//________________________________________________________________________
+void AliJetEmbeddingFromGenTask::UserCreateOutputObjects()
+{
+  // Create user output.
+
+  if (!fQAhistos)
+    return;
+
+  AliJetModelBaseTask::UserCreateOutputObjects();
+
+  fHistTrials = new TH1F("fHistTrials", "fHistTrials", 1, 0, 1);
+  fHistTrials->GetYaxis()->SetTitle("trials");
+  fOutput->Add(fHistTrials);
+
+  fHistXsection = new TProfile("fHistXsection", "fHistXsection", 1, 0, 1);
+  fHistXsection->GetYaxis()->SetTitle("xsection");
+  fOutput->Add(fHistXsection);
+
+  fHistPtHard = new TH1F("fHistPtHard", "fHistPtHard", 500, 0., 500.);
+  fHistPtHard->GetXaxis()->SetTitle("p_{T,hard} (GeV/c)");
+  fHistPtHard->GetYaxis()->SetTitle("counts");
+  fOutput->Add(fHistPtHard);
+
+  PostData(1, fOutput);
+}
+
 //________________________________________________________________________
 Bool_t AliJetEmbeddingFromGenTask::ExecOnce() 
 {
@@ -87,9 +121,6 @@ void AliJetEmbeddingFromGenTask::Run()
 {
   // Embed particles.
 
-  if(fOutTracks)
-   fOutTracks->Delete();
-
   if (fCopyArray) 
     CopyTracks();
 
@@ -124,4 +155,28 @@ void AliJetEmbeddingFromGenTask::Run()
       continue;
     AddTrack(pt, eta, phi,0,0,0,0,0,0,part->GetMass());
   }
+
+  FillPythiaHistograms();
+}
+
+//________________________________________________________________________
+void AliJetEmbeddingFromGenTask::FillPythiaHistograms() {
+  //Get PYTHIA info: pt-hard, x-section, trials
+
+  if (!fQAhistos)
+    return;
+
+  AliRunLoader *rl = AliRunLoader::Instance();
+  AliGenPythiaEventHeader *genPH = dynamic_cast<AliGenPythiaEventHeader*>(rl->GetHeader()->GenEventHeader());
+  if(genPH) {
+    Printf("found pythia event header. pThard: %f Trials: %d xsec: %f",genPH->GetPtHard(),genPH->Trials(),genPH->GetXsection());
+
+    Float_t xsec = genPH->GetXsection();
+    Int_t trials = genPH->Trials();
+    Float_t pthard = genPH->GetPtHard();
+
+    fHistXsection->Fill(0.5,xsec);
+    fHistTrials->Fill(0.5,trials);
+    fHistPtHard->Fill(pthard);
+  }
 }
index 7c52428f410a9dff70630d20b9096266b3868ea3..b53749e1fb66244e855c08aff140b6eacdff34ae 100644 (file)
@@ -4,6 +4,7 @@
 // $Id$
 
 class TClonesArray;
+class TProfile;
 class AliEMCALGeometry;
 
 #include "AliJetModelBaseTask.h"
@@ -12,16 +13,23 @@ class AliGenerator;
 class AliJetEmbeddingFromGenTask : public AliJetModelBaseTask {
  public:
   AliJetEmbeddingFromGenTask();
-  AliJetEmbeddingFromGenTask(const char *name); 
+  AliJetEmbeddingFromGenTask(const char *name, Bool_t drawqa);
   virtual ~AliJetEmbeddingFromGenTask();
 
+  void           UserCreateOutputObjects();
+  void           FillPythiaHistograms();
+
   void           SetGen(AliGenerator *gen) { fGen = gen; }
 
  protected:
   Bool_t         ExecOnce();
   void           Run();
 
-  AliGenerator  *fGen;    //generator
+  AliGenerator  *fGen;                    //generator
+
+  TH1F          *fHistTrials;             //!trials from generator
+  TProfile      *fHistXsection;           //!x-section from generator
+  TH1           *fHistPtHard;             //!pt hard distribution
 
  private:
   AliJetEmbeddingFromGenTask(const AliJetEmbeddingFromGenTask&);            // not implemented
index ed8dddac9ca23aa1650dade410aa440ad673f244..8bee89e743c06a0ebb1c2435cf056d5333c6f67e 100644 (file)
@@ -10,7 +10,8 @@ AliJetEmbeddingFromGenTask* AddTaskJetEmbeddingFromGen(
   const Double_t  maxEta       = 0.9,
   const Double_t  minPhi       = 0,
   const Double_t  maxPhi       = TMath::Pi() * 2,
-  const Bool_t    copyArray    = kFALSE
+  const Bool_t    copyArray    = kTRUE,
+  const Bool_t    drawQA       = kFALSE
 )
 {  
   // Get the pointer to the existing analysis manager via the static access method.
@@ -34,7 +35,7 @@ AliJetEmbeddingFromGenTask* AddTaskJetEmbeddingFromGen(
   // Init the task and do settings
   //-------------------------------------------------------
 
-  AliJetEmbeddingFromGenTask *jetEmb = new AliJetEmbeddingFromGenTask(taskName);
+  AliJetEmbeddingFromGenTask *jetEmb = new AliJetEmbeddingFromGenTask(taskName,drawQA);
   jetEmb->SetGen(genGen);
   jetEmb->SetTracksName(tracksName);
   jetEmb->SetEtaRange(minEta, maxEta);
@@ -51,5 +52,16 @@ AliJetEmbeddingFromGenTask* AddTaskJetEmbeddingFromGen(
   // Create containers for input/output
   mgr->ConnectInput (jetEmb, 0, mgr->GetCommonInputContainer() );
 
+  if (drawQA) {
+    TString contName = taskName;
+    contName += "_histos";
+    AliAnalysisDataContainer *outc = mgr->CreateContainer(contName,
+                                                          TList::Class(),
+                                                          AliAnalysisManager::kOutputContainer,
+                                                          "AnalysisResults.root");
+    mgr->ConnectOutput(jetEmb, 1, outc);
+  }
+
+
   return jetEmb;
 }