#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");
// 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()
{
{
// Embed particles.
- if(fOutTracks)
- fOutTracks->Delete();
-
if (fCopyArray)
CopyTracks();
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);
+ }
}
// $Id$
class TClonesArray;
+class TProfile;
class AliEMCALGeometry;
#include "AliJetModelBaseTask.h"
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
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.
// 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);
// 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;
}