fStandalone(kTRUE),
fMCevent(0),
fLastTrackByStrip(0),
- fPrimary(kTRUE)
+ fPrimary(kTRUE),
+ fRecordHits(kFALSE)
{
// Default constructor
DefineInput (0, TList::Class());
fStandalone(kTRUE),
fMCevent(0),
fLastTrackByStrip(0),
- fPrimary(kTRUE)
+ fPrimary(kTRUE),
+ fRecordHits(kFALSE)
{
fStandalone = SE;
if(fStandalone) {
Int_t vertexBin = (Int_t)vertexBinDouble;
Bool_t firstTrack = kTRUE;
- Int_t nTracks = fMCevent->GetNumberOfTracks();
+
+ // we loop over the primaries only unless we need the hits (diagnostics running slowly)
+ Int_t nTracks = stack->GetNprimary();
+ if(fRecordHits)
+ nTracks = stack->GetNtrack();
+
for(Int_t i = 0 ;i<nTracks;i++) {
particle = fMCevent->GetTrack(i);
if(!particle)
continue;
-
+
if(stack->IsPhysicalPrimary(i) && particle->Charge() != 0) {
hPrimary->Fill(particle->Eta());
fNMCevents.Fill(vertexBin);
firstTrack = kFALSE;
}
- }
- for(Int_t j=0; j<particle->GetNumberOfTrackReferences();j++) {
+ }
+ if(fRecordHits) {
+ for(Int_t j=0; j<particle->GetNumberOfTrackReferences();j++) {
AliTrackReference* ref = particle->GetTrackReference(j);
UShort_t det,sec,strip;
hHits->Fill(eta);
Float_t nstrips = (ring =='O' ? 256 : 512);
- //if(det == 1 && ring == 'I')
- // std::cout<<"hit in "<<det<<" "<<ring<<" "<<sec<<" "<<strip<<" "<<std::endl;
fLastTrackByStrip(det,ring,sec,strip) = (Float_t)i;
if(strip >0)
}
}
+ }
-
- }
+ }
}
//_____________________________________________________________________
fStandalone(o.fStandalone),
fMCevent(o.fMCevent),
fLastTrackByStrip(o.fLastTrackByStrip),
- fPrimary(o.fPrimary) {}
+ fPrimary(o.fPrimary),
+ fRecordHits(o.fRecordHits) {}
AliFMDAnalysisTaskDndeta& operator=(const AliFMDAnalysisTaskDndeta&) { return *this; }
// Implementation of interface methods
virtual void ConnectInputData(Option_t *option = "");
void ProcessPrimary();
TList* GetOutputList() {return fOutputList;}
void SetAnalyzePrimary(Bool_t prim) {fPrimary = prim;}
+ void SetRecordHits(Bool_t recordhits) {fRecordHits = recordhits;}
private:
Int_t fDebug; // Debug flag
TList* fOutputList;
AliMCEvent* fMCevent;
AliFMDFloatMap fLastTrackByStrip;
Bool_t fPrimary;
+ Bool_t fRecordHits;
ClassDef(AliFMDAnalysisTaskDndeta, 0); // Analysis task for FMD analysis
};
#include "AliESDEvent.h"
#include "iostream"
#include "AliESDFMD.h"
+#include "AliMCEventHandler.h"
+#include "AliAnalysisManager.h"
ClassImp(AliFMDAnalysisTaskSE)
fDensity("Density",kFALSE),
fBackground("BackgroundCorrected",kFALSE),
fDndeta("dNdeta",kFALSE),
- fPrimary(kTRUE)
+ fPrimary(kTRUE),
+ fRecordHits(kFALSE)
{
// Default constructor
}
fDensity("Density",kFALSE),
fBackground("BackgroundCorrected",kFALSE),
fDndeta("dNdeta",kFALSE),
- fPrimary(kTRUE)
+ fPrimary(kTRUE),
+ fRecordHits(kFALSE)
{
DefineOutput(1, TList::Class());
fDndeta.SetInputList(bgcorlist);
fDndeta.SetOutputList(fListOfHistos);
fDndeta.SetAnalyzePrimary(fPrimary);
+ fDndeta.SetRecordHits(fRecordHits);
fSharing.CreateOutputObjects();
fDensity.CreateOutputObjects();
fBackground.CreateOutputObjects();
fDensity.Exec("");
if(fDensity.GetEventStatus()) {
fBackground.Exec("");
- AliMCEvent* mcevent = MCEvent();
- fDndeta.SetMCEvent(mcevent);
+ //AliMCEvent* mcevent = MCEvent();
+ if(fPrimary) {
+ AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
+ AliMCEvent* mcevent = eventHandler->MCEvent();
+ fDndeta.SetMCEvent(mcevent);
+ }
fDndeta.Exec("");
}
fDensity(o.fDensity),
fBackground(o.fBackground),
fDndeta(o.fDndeta),
- fPrimary(o.fPrimary) {}
+ fPrimary(o.fPrimary),
+ fRecordHits(o.fRecordHits) {}
AliFMDAnalysisTaskSE& operator=(const AliFMDAnalysisTaskSE&) { return *this; }
virtual void Init();
virtual void UserExec(Option_t* /*option*/);
void Terminate(Option_t */*option*/);
void SetAnalyzePrimary(Bool_t prim) {fPrimary = prim;}
-
+ void SetRecordHits(Bool_t recordhits) {fRecordHits = recordhits;}
private:
TList* fListOfHistos;
AliFMDAnalysisTaskBackgroundCorrection fBackground;
AliFMDAnalysisTaskDndeta fDndeta;
Bool_t fPrimary;
+ Bool_t fRecordHits;
ClassDef(AliFMDAnalysisTaskSE, 1);
};
#include "AliESDVertex.h"
#include "AliMultiplicity.h"
#include "AliFMDAnaParameters.h"
+//#include "/home/canute/ALICE/AliRoot/PWG0/AliPWG0Helper.h"
//#include "AliFMDParameters.h"
ClassImp(AliFMDAnalysisTaskSharing)
Double_t vertex[3];
GetVertex(vertex);
fEsdVertex->SetXYZ(vertex);
-
+ /*
+ Bool_t isTriggered = AliPWG0Helper::IsEventTriggered(fESD, AliPWG0Helper::kMB1);
+
+ if(!isTriggered) {
+ fStatus = kFALSE;
+ std::cout<<"no trigger"<<std::endl;
+ return;
+ }
+ else
+ fStatus = kTRUE;
+ */
if(vertex[0] == 0 && vertex[1] == 0 && vertex[2] == 0) {
fStatus = kFALSE;