BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnBCHitProducer.cxx
Go to the documentation of this file.
1#include "BmnBCHitProducer.h"
2
3#include "BmnBCPoint.h"
4#include "FairRootManager.h"
5#include "TSystem.h"
6
7static Float_t workTime = 0.0;
8static int entries = 0;
9
13{
14 fInputBranchName = "BCPoint";
15 fOutputHitsBranchName = "BmnBCHit";
16 fOutputHitMatchesBranchName = "BmnBCHitMatch";
17
18 fVerbose = 1;
19}
20
22
24{
25
26 FairRootManager* ioman = FairRootManager::Instance();
27
29
31 ioman->Register(fOutputHitsBranchName, "BC", fBmnBCHitsArray, kTRUE);
32
33 if (fVerbose)
34 cout << " BmnBCHitProducer::Init() finished\n\n";
35 return kSUCCESS;
36}
37
39{
40 clock_t tStart = clock();
41 fBmnBCHitsArray->Delete();
42 BmnBCPoint* BCPoint;
43 Double_t ELoss1 = 0;
44 Double_t ELoss2 = 0;
45 Double_t ELoss3 = 0;
46 Double_t ELoss4 = 0;
47 Int_t NumberofHits = 0;
48 vector<Int_t> chargesBC3;
49 vector<Int_t> chargesBC4;
50
51 for (Int_t ipoint = 0; ipoint < fBmnBCPointsArray->GetEntriesFast(); ipoint++) {
52 BCPoint = (BmnBCPoint*)fBmnBCPointsArray->At(ipoint);
53 if (BCPoint->GetStation() == 1) {
54 ELoss1 += BCPoint->GetEnergyLoss();
55 } else if (BCPoint->GetStation() == 2) {
56 ELoss2 += BCPoint->GetEnergyLoss();
57 } else if (BCPoint->GetStation() == 3) {
58 ELoss3 += BCPoint->GetEnergyLoss();
59 chargesBC3.push_back(BCPoint->GetCharge());
60 } else if (BCPoint->GetStation() == 4) {
61 ELoss4 += BCPoint->GetEnergyLoss();
62 chargesBC4.push_back(BCPoint->GetCharge());
63 }
64 NumberofHits++;
65 }
66 new ((*fBmnBCHitsArray)[fBmnBCHitsArray->GetEntriesFast()])
67 BmnBCHit(ELoss1, ELoss2, ELoss3, ELoss4, NumberofHits, chargesBC3, chargesBC4);
68 // vector <Double_t> ELoss = {ELoss1, ELoss2, ELoss3, ELoss4};
69
70 if (!fBmnBCPointsArray) {
71 Error(" BmnBCHitProducer::Exec()", " !!! Unknown branch name !!! ");
72 return;
73 }
74
75 if (fVerbose) {
76 cout << " BmnBCHitProducer::Exec(), Number of BmnBCPoints = " << fBmnBCPointsArray->GetEntriesFast() << "\n";
77 }
78
79 if (fVerbose)
80 cout << " BmnBCHitProducer::Exec() finished\n\n";
81 entries++;
82 clock_t tFinish = clock();
83 workTime += ((Float_t)(tFinish - tStart)) / CLOCKS_PER_SEC;
84}
85
87{
88 cout << "Work time of the BC HitProducer: " << workTime << endl;
89}
static int entries
int Int_t
float Float_t
constexpr Bool_t kFALSE
double Double_t
constexpr Bool_t kTRUE
const char Option_t
void Error(const char *location, const char *msgfmt,...)
virtual InitStatus Init()
TClonesArray * fBmnBCHitsArray
Output array of BC Hits.
TString fOutputHitsBranchName
virtual void Finish()
TString fOutputHitMatchesBranchName
TClonesArray * fBmnBCPointsArray
Input array of BC Points.
virtual void Exec(Option_t *opt)
Double_t GetStation() const
Definition BmnBCPoint.h:75
Double_t GetCharge()
Definition BmnBCPoint.h:70