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