--- /dev/null
+
+#include <TROOT.h>
+#include <TSystem.h>
+#include <TInterpreter.h>
+#include <TChain.h>
+#include <TFile.h>
+#include <TList.h>
+#include <iostream>
+#include "TH1F.h"
+#include "TH2F.h"
+#include "AliFMDAnalysisTaskBFCorrelation.h"
+#include "AliAnalysisManager.h"
+#include "AliESDFMD.h"
+#include "AliESDEvent.h"
+#include "AliAODEvent.h"
+#include "AliAODHandler.h"
+#include "AliMCEventHandler.h"
+#include "AliStack.h"
+#include "AliLog.h"
+#include "AliESDVertex.h"
+#include "TMath.h"
+#include "AliFMDAnaParameters.h"
+//#include "AliFMDGeometry.h"
+#include "AliGenEventHeader.h"
+#include "AliGenPythiaEventHeader.h"
+#include "AliHeader.h"
+//#include "TDatabasePDG.h"
+//#include "TParticlePDG.h"
+#include "AliESDInputHandler.h"
+ClassImp(AliFMDAnalysisTaskBFCorrelation)
+
+
+AliFMDAnalysisTaskBFCorrelation::AliFMDAnalysisTaskBFCorrelation()
+: fDebug(0),
+ fOutputList(0),
+ fInputList(0),
+ fVertexString(0x0),
+ fStandalone(kTRUE)
+{
+ // Default constructor
+ DefineInput (0, TList::Class());
+ DefineOutput(0, TList::Class());
+}
+//_____________________________________________________________________
+AliFMDAnalysisTaskBFCorrelation::AliFMDAnalysisTaskBFCorrelation(const char* name, Bool_t SE):
+ AliAnalysisTask(name,name),
+ fDebug(0),
+ fOutputList(0),
+ fInputList(0),
+ fVertexString(0x0),
+ fStandalone(kTRUE)
+{
+ fStandalone = SE;
+ if(fStandalone) {
+ DefineInput (0, TList::Class());
+ DefineInput(1, TObjString::Class());
+ DefineOutput(0, TList::Class());
+
+ }
+}
+//_____________________________________________________________________
+void AliFMDAnalysisTaskBFCorrelation::CreateOutputObjects()
+{
+ AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
+
+ if(!fOutputList) {
+ fOutputList = new TList();
+ fOutputList->SetName("BackgroundCorrected");
+ }
+
+ TH1F* test = new TH1F("test","test",10,0,10);
+ fOutputList->Add(test);
+}
+//_____________________________________________________________________
+void AliFMDAnalysisTaskBFCorrelation::ConnectInputData(Option_t */*option*/)
+{
+ if(fStandalone) {
+ fInputList = (TList*)GetInputData(0);
+ fVertexString = (TObjString*)GetInputData(1);
+ }
+}
+//_____________________________________________________________________
+void AliFMDAnalysisTaskBFCorrelation::Exec(Option_t */*option*/)
+{
+ AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
+
+ fVertexString = (TObjString*)fInputList->At(0);
+
+ Int_t vtxbin = fVertexString->GetString().Atoi();
+ //for(UShort_t det=1;det<=3;det++) {
+ // Int_t nRings = (det==1 ? 1 : 2);
+ // for (UShort_t ir = 0; ir < nRings; ir++) {
+ // Char_t ringChar = (ir == 0 ? 'I' : 'O');
+ //TH2F* hMultTotal = (TH2F*)fOutputList->FindObject(Form("dNdeta_FMD%d%c_vtxbin%d",det,ringChar,vtxbin));
+ // TH2F* hMultTotalTrVtx = (TH2F*)fOutputList->FindObject(Form("dNdetaTrVtx_FMD%d%c_vtxbin%d",det,ringChar,vtxbin));
+
+
+ TH1F* test = (TH1F*)fOutputList->FindObject("test");
+ test->Fill(vtxbin);
+ if(pars->GetProcessPrimary())
+ ProcessPrimary();
+
+ if(fStandalone) {
+ PostData(0, fOutputList);
+ }
+
+}
+//_____________________________________________________________________
+void AliFMDAnalysisTaskBFCorrelation::Terminate(Option_t */*option*/) {
+
+
+}
+//_____________________________________________________________________
+void AliFMDAnalysisTaskBFCorrelation::ProcessPrimary() {
+ /*
+ AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
+ AliMCEvent* mcEvent = eventHandler->MCEvent();
+ if(!mcEvent)
+ return;
+
+
+ AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
+
+ AliMCParticle* particle = 0;
+ AliStack* stack = mcEvent->Stack();
+
+ TH1F* hPrimary = (TH1F*)fOutputList->FindObject("hMultvsEta");
+ AliHeader* header = mcEvent->Header();
+ AliGenEventHeader* genHeader = header->GenEventHeader();
+
+ TArrayF vertex;
+ genHeader->PrimaryVertex(vertex);
+ if(TMath::Abs(vertex.At(2)) > pars->GetVtxCutZ())
+ return;
+ Double_t delta = 2*pars->GetVtxCutZ()/pars->GetNvtxBins();
+ Double_t vertexBinDouble = (vertex.At(2) + pars->GetVtxCutZ()) / delta;
+ Int_t vertexBin = (Int_t)vertexBinDouble;
+
+ Bool_t firstTrack = kTRUE;
+
+ // we loop over the primaries only unless we need the hits (diagnostics running slowly)
+ Int_t nTracks = stack->GetNprimary();
+ if(pars->GetProcessHits())
+ nTracks = stack->GetNtrack();
+
+ for(Int_t i = 0 ;i<nTracks;i++) {
+ particle = (AliMCParticle*) mcEvent->GetTrack(i);
+ if(!particle)
+ continue;
+
+ if(stack->IsPhysicalPrimary(i) && particle->Charge() != 0) {
+ hPrimary->Fill(particle->Eta());
+
+
+ TH1F* hPrimVtxBin = (TH1F*)fOutputList->FindObject(Form("primmult_vtxbin%d",vertexBin));
+ hPrimVtxBin->Fill(particle->Eta());
+ if(firstTrack) {
+ fNMCevents.Fill(vertexBin);
+ firstTrack = kFALSE;
+ }
+ }
+ }
+ */
+}
+//_____________________________________________________________________
+//
+//
+// EOF
--- /dev/null
+#ifndef ALIFMDANALYSISTASKBFCORRELATION_H
+#define ALIFMDANALYSISTASKBFCORRELATION_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+#include "AliAnalysisTask.h"
+
+#include "TObjArray.h"
+#include "TObjString.h"
+#include "TArrayI.h"
+#include "TH1I.h"
+#include "AliMCEvent.h"
+#include "AliFMDFloatMap.h"
+
+/**
+ * @ingroup FMD_ana
+ */
+class AliFMDAnalysisTaskBFCorrelation : public AliAnalysisTask
+{
+ public:
+ AliFMDAnalysisTaskBFCorrelation();
+ AliFMDAnalysisTaskBFCorrelation(const char* name, Bool_t SE = kTRUE);
+ virtual ~AliFMDAnalysisTaskBFCorrelation() {;}
+ AliFMDAnalysisTaskBFCorrelation(const AliFMDAnalysisTaskBFCorrelation& o) : AliAnalysisTask(),
+ fDebug(o.fDebug),
+ fOutputList(0),
+ fInputList(0),
+ fVertexString(o.fVertexString),
+ fStandalone(o.fStandalone)
+ {}
+
+ AliFMDAnalysisTaskBFCorrelation& operator=(const AliFMDAnalysisTaskBFCorrelation&) { return *this; }
+ // Implementation of interface methods
+ virtual void ConnectInputData(Option_t *option = "");
+ virtual void CreateOutputObjects();
+ virtual void Init() {}
+ virtual void LocalInit() {Init();}
+ virtual void Exec(Option_t *option);
+ virtual void Terminate(Option_t *option);
+ virtual void SetDebugLevel(Int_t level) {fDebug = level;}
+ void SetInputList(TList* inputList) {fInputList = inputList;}
+ void SetInputVertex(TObjString* vtxString) {fVertexString = vtxString;}
+ void SetOutputList(TList* outputList) {fOutputList = outputList;}
+
+ void ProcessPrimary();
+
+ TList* GetOutputList() {return fOutputList;}
+
+ private:
+ Int_t fDebug; // Debug flag
+ TList* fOutputList;
+ TList* fInputList;
+ TObjString* fVertexString;
+ Bool_t fStandalone;
+ ClassDef(AliFMDAnalysisTaskBFCorrelation, 0); // Analysis task for FMD analysis
+};
+
+#endif
+// Local Variables:
+// mode: C++
+// End:
fDensity("Density",kFALSE),
fBackground("BackgroundCorrected",kFALSE),
fDndeta("dNdeta",kFALSE),
+ fBFCorrelation("BFCorrelation",kFALSE),
fParams(0)
{
// Default constructor
fDensity("Density",kFALSE),
fBackground("BackgroundCorrected",kFALSE),
fDndeta("dNdeta",kFALSE),
+ fBFCorrelation("BFCorrelation",kFALSE),
fParams(0)
{
SetParams(AliFMDAnaParameters::Instance());
fDndeta.SetInputList(bgcorlist);
fDndeta.SetOutputList(fListOfHistos);
+ fBFCorrelation.SetInputList(bgcorlist);
+ fBFCorrelation.SetOutputList(fListOfHistos);
fSharing.CreateOutputObjects();
fDensity.CreateOutputObjects();
fBackground.CreateOutputObjects();
fDndeta.CreateOutputObjects();
-
+ fBFCorrelation.CreateOutputObjects();
}
AliESDEvent* fESD = (AliESDEvent*)InputEvent();
-
+ //std::cout<<fESD->GetBeamEnergy()<<" "<<fESD->GetBeamType()<<" "<<fESD->GetCurrentL3()<<std::endl;
fSharing.SetInputESD(fESD);
fSharing.Exec("");
if(fDensity.GetEventStatus()) {
fBackground.Exec("");
fDndeta.Exec("");
-
+ fBFCorrelation.Exec("");
}
else return;
}
fSharing.SetOutputList(outputList);
fBackground.SetHitList(outputList);
fDndeta.SetOutputList(outputList);
+ fBFCorrelation.SetOutputList(outputList);
fSharing.Terminate("");
fBackground.Terminate("");
fDndeta.Terminate("");
-
+ fBFCorrelation.Terminate("");
// TFile file("fmd_ana_histos_tmp.root","RECREATE");
// fListOfHistos->Write();
fSharing.Print(option);
fDensity.Print(option);
fBackground.Print(option);
- fDndeta.Print(option);
+ fDndeta.Print(option);
+ fBFCorrelation.Print(option);
}
if (opt.Contains("p") && fParams)
fParams->Print(option);
#include "AliFMDAnalysisTaskDensity.h"
#include "AliFMDAnalysisTaskBackgroundCorrection.h"
#include "AliFMDAnalysisTaskDndeta.h"
+#include "AliFMDAnalysisTaskBFCorrelation.h"
class AliFMDAnaParameters;
/** @defgroup FMD_ana Analysis tasks
* - AliFMDAnalysisTaskDensity
* - AliFMDAnalysisTaskBackgroundCorrection
* - AliFMDAnalysisTaskDndeta
+ * - AliFMDAnalysisTaskBFCorrelation
*/
class AliFMDAnalysisTaskSE : public AliAnalysisTaskSE
fDensity(o.fDensity),
fBackground(o.fBackground),
fDndeta(o.fDndeta),
+ fBFCorrelation(o.fBFCorrelation),
fParams(o.fParams)
{}
AliFMDAnalysisTaskSE& operator=(const AliFMDAnalysisTaskSE&) { return *this; }
void Print(Option_t* option="") const;
private:
- TList* fListOfHistos; // Output list
- AliFMDAnalysisTaskSharing fSharing; // Sharing task
- AliFMDAnalysisTaskDensity fDensity; // Density task
- AliFMDAnalysisTaskBackgroundCorrection fBackground; // Background task
- AliFMDAnalysisTaskDndeta fDndeta; // dN/deta task
- AliFMDAnaParameters* fParams; // Analysis parameters
+ TList* fListOfHistos; // Output list
+ AliFMDAnalysisTaskSharing fSharing; // Sharing task
+ AliFMDAnalysisTaskDensity fDensity; // Density task
+ AliFMDAnalysisTaskBackgroundCorrection fBackground; // Background task
+ AliFMDAnalysisTaskDndeta fDndeta; // dN/deta task
+ AliFMDAnalysisTaskBFCorrelation fBFCorrelation; // BF correlation task
+ AliFMDAnaParameters* fParams; // Analysis parameters
ClassDef(AliFMDAnalysisTaskSE, 1);
#pragma link C++ class AliFMDAnalysisTaskCollector+;
#pragma link C++ class AliFMDAnalysisTaskGenerateCorrection+;
#pragma link C++ class AliFMDDndeta+;
-
+#pragma link C++ class AliFMDAnalysisTaskBFCorrelation+;
#else
# error Not for compilation
FORWARD/analysis/AliFMDAnalysisTaskDndeta.cxx \
FORWARD/analysis/AliFMDAnalysisTaskSE.cxx \
FORWARD/analysis/AliFMDAnalysisTaskGenerateCorrection.cxx \
- FORWARD/analysis/AliFMDDndeta.cxx
+ FORWARD/analysis/AliFMDDndeta.cxx \
+ FORWARD/analysis/AliFMDAnalysisTaskBFCorrelation.cxx
HDRS = $(SRCS:.cxx=.h)