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