BmnRoot
Loading...
Searching...
No Matches
BmnPVGetter.cxx
Go to the documentation of this file.
1#include "BmnPVGetter.h"
2
3BmnPVGetter::BmnPVGetter(TString fname, Long64_t nEvs) {
4 fDstTreeName = "bmndata";
5 fDstFileName = fname;
6 fPVertexName = "BmnVertex";
7 fEvHeaderName = "DstEventHeader.";
8 fDstFile = nullptr;
9 fDstTree = nullptr;
10 fPVertex = nullptr;
11 fEvHeader = nullptr;
12 iEv = -1;
13 doNext = kTRUE;
14 if (nEvs == 0LL)
15 nFEvents = LONG_LONG_MAX;
16 else
17 nFEvents = nEvs;
18}
19
22
23InitStatus BmnPVGetter::Init() {
24 if (fVerbose > 0)
25 printf("Primary Vertex Extractor init\n");
26
27 fDstFile = new TFile(fDstFileName, "READ");
28 if (fDstFile->IsOpen() == kFALSE) {
29 printf("\n!!!!\ncannot open file %s !\n", fDstFileName.Data());
30 return kFATAL;
31 }
32 fDstTree = (TTree *) fDstFile->Get(fDstTreeName.Data());
33 if (fDstTree->SetBranchAddress(fPVertexName.Data(), &fPVertex) < 0)
34 return kFATAL;
35 if (fDstTree->SetBranchAddress(fEvHeaderName.Data(), &fEvHeader) < 0)
36 return kFATAL;
37 nFEvents = Min(fDstTree->GetEntries(), nFEvents);
38 if (fVerbose > 0)
39 printf("Primary Vertex Extractor : will run up to %lld events.\n", nFEvents);
40
41 FairRootManager* ioman = FairRootManager::Instance();
42 if (NULL == ioman) Fatal("Init", "FairRootManager is not instantiated");
43
44 fPVertexShow = new TClonesArray(CbmVertex::Class(), 1); //out
45 ioman->Register(fPVertexName, "GEM", fPVertexShow, kTRUE); // last arg: save to file
46 fEvHeaderShow = new DstEventHeader(); //out
47 ioman->Register(fEvHeaderName, "", fEvHeaderShow, kTRUE); // last arg: save to file
48
49 return kSUCCESS;
50}
51
52void BmnPVGetter::Exec(Option_t *option) {
53 if (doNext)
55 doNext = kFALSE;
56}
57
59 printf("\n%s: Iterated over %lld of %lld events\n", typeid (*this).name(), iEv + 1, nFEvents);
60 fDstFile->Close();
61 delete fDstFile;
62}
63
65 if (fVerbose > 1)
66 printf("PVG Finish: fVZ %f getsave = %d\n", fVZ, fRunSimInst->GetSaveEvent());
67 if (Abs(fVZ) < Abs(CutValidZ) && fRunSimInst->GetSaveEvent() == kFALSE)
68 return;
69 doNext = kTRUE;
70}
71
73 // do {
74 fPVertexShow->Delete();
75 fDstTree->GetEntry(++iEv);
76 printf("\nPVs on event %lld eventID = %u\n", iEv, fEvHeader->GetEventId());
77 for (Int_t iTrack = 0; iTrack < fPVertex->GetEntriesFast(); iTrack++) {
78 CbmVertex* v = (CbmVertex*) fPVertex->UncheckedAt(iTrack);
79 fGen->SetBeam(v->GetX(), v->GetY(), 0.0, 0.0);
80 fGen->SetTarget(v->GetZ(), 0.0);
81 fVZ = v->GetZ();
82 if (fVerbose > 1)
83 printf("v( %f %f %f)\n", v->GetX(), v->GetY(), v->GetZ());
84 }
85 // } while (vz < MinValidZ);
86 fPVertexShow->AbsorbObjects(fPVertex);
87 // if (fVZ < MinValidZ)
88 // fRunSimInst->SetSaveEvent(kFALSE);
90 if (iEv == nFEvents - 1)
91 fRunSimInst->GetMCApp()->StopMCRun();
92}
__m128 v
Definition P4_F32vec4.h:1
Bool_t GetSaveEvent()
FairMCApplication * GetMCApp()
InitStatus Init()
Double_t fVZ
Definition BmnPVGetter.h:68
virtual ~BmnPVGetter()
TString fDstFileName
Definition BmnPVGetter.h:57
BmnPVGetter(TString fname, Long64_t nEvs=0)
DstEventHeader * fEvHeader
Definition BmnPVGetter.h:62
Bool_t doNext
Definition BmnPVGetter.h:69
void NextFileEvent()
FairPrimaryGenerator * fGen
Definition BmnPVGetter.h:55
void FinishEvent()
void Exec(Option_t *option)
TTree * fDstTree
Definition BmnPVGetter.h:61
BmnFairRunSim * fRunSimInst
Definition BmnPVGetter.h:54
TClonesArray * fPVertexShow
Definition BmnPVGetter.h:65
TString fEvHeaderName
Definition BmnPVGetter.h:59
TString fDstTreeName
Definition BmnPVGetter.h:56
Long64_t nFEvents
Definition BmnPVGetter.h:67
TClonesArray * fPVertex
Definition BmnPVGetter.h:64
DstEventHeader * fEvHeaderShow
Definition BmnPVGetter.h:63
TString fPVertexName
Definition BmnPVGetter.h:58
Long64_t iEv
Definition BmnPVGetter.h:66
TFile * fDstFile
Definition BmnPVGetter.h:60
Double_t GetZ() const
Definition CbmVertex.h:60
void SetEventId(UInt_t event_id)
UInt_t GetEventId()
#define CutValidZ