BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnProfAsic2Raw.cxx
Go to the documentation of this file.
1#include "BmnProfAsic2Raw.h"
2
3#include "FairRootManager.h"
4#include "TSystem.h"
5
6#include <TChain.h>
7#include <TRandom.h>
8#include <TStopwatch.h>
9#include <zlib.h>
10
11static Double_t workTime = 0.0;
12
13BmnProfAsic2Raw::BmnProfAsic2Raw(Int_t run_period, Int_t run_number, Int_t verbosity)
14 : FairTask("BmnProfAsic2Raw", verbosity)
15 , fPeriodId(run_period)
16 , fRunId(run_number)
17 , fPedEvCntr(0)
18 , fNoiseEvCntr(0)
19 , fEvForPedestals(100)
20 , fEv(0)
22 , fInputEventHeaderName("BmnEventHeader.")
23 , fInputAdcBranchName("ADC192ASIC")
24 , fWorkAdcBranchName("ADC32PROF")
25 , fOutputProfBranchName("BmnProfDigit")
26{}
27
29
31{
32
33 if (fVerbose > 1)
34 cout << "=================== BmnProfAsic2Raw::Init() started ====================" << endl;
35
36 FairRootManager* ioman = FairRootManager::Instance();
37
38 fEventHead = static_cast<BmnEventHeader*>(ioman->GetObject(fInputEventHeaderName));
39 fInAsicArray = (TClonesArray*)ioman->GetObject(fInputAdcBranchName);
40 if (!fInAsicArray) {
41 cout << "BmnProfAsic2Raw::Init(): branch " << fInputAdcBranchName << " not found! Task will be deactivated"
42 << endl;
43 SetActive(kFALSE);
44 return kERROR;
45 }
46
48 ioman->Register(fWorkAdcBranchName, "ADC32Prof", fWorkAdcArray, kTRUE);
49
51 ioman->Register(fOutputProfBranchName, "Prof", fBmnProfDigitArray, kTRUE);
52
53 TString gPathCSCConfig = gSystem->Getenv("VMCWORKDIR");
54 gPathCSCConfig += "/parameters/csc/XMLConfigs/";
55
56 //--------------------------------------------------------------------------
57 fMapper = new BmnProfRaw2Digit(8, 0);
58 fMapper->SetVerbose(1);
59 if (fVerbose > 1)
60 cout << "=================== BmnProfAsic2Raw::Init() finished ===================" << endl;
61
62 return kSUCCESS;
63}
64
66{
67 fEv++;
68 TStopwatch sw;
69 sw.Start();
70 if (!IsActive())
71 return;
72 fBmnProfDigitArray->Delete();
73 fWorkAdcArray->Delete();
74
75 if (fVerbose > 1)
76 cout << "=================== BmnProfAsic2Raw::Exec() started ====================" << endl;
77 if (fVerbose > 1)
78 cout << " BmnProfAsic2Raw::Exec(), Number of BmnAdcDigits = " << fInAsicArray->GetEntriesFast() << "\n";
79
81
82 if (fVerbose > 1)
83 cout << "=================== BmnProfAsic2Raw::Exec() finished ===================" << endl;
84
85 sw.Stop();
86 workTime += sw.RealTime();
87 return;
88}
89
91{
92
93 fMapper->FillExtractedBits(fInAsicArray, fWorkAdcArray);
95 if (!fPedEnough) {
97 fMapper->CopyData2PedMap(fWorkAdcArray, fPedEvCntr);
98 fPedEvCntr++;
99 if (fVerbose == 1) {
100 if (fPedEvCntr % 100 == 0 && fPedEvCntr > 0)
101 cout << "Pedestal event #" << fPedEvCntr << "/" << fEvForPedestals << ";" << endl;
102 } else if (fVerbose == 0)
104 } else {
106 fMapper->RecalculatePedestalsAugmented();
107 }
108 } else
110 return;
111}
112
114{
115 delete fMapper;
116 if (fVerbose > 0) {
117 printf("Work time of BmnProfAsic2Raw: %4.2f sec.\n", workTime);
118 printf("Processed events: %d\n", fEv);
119 }
120 return;
121}
void DrawBar(UInt_t iEv, UInt_t nEv)
Definition BmnMath.cxx:940
static Double_t workTime
int Int_t
constexpr Bool_t kFALSE
double Double_t
constexpr Bool_t kTRUE
const char Option_t
R__EXTERN TSystem * gSystem
virtual void Exec(Option_t *opt)
TString fInputAdcBranchName
TClonesArray * fBmnProfDigitArray
Output array of Profilometer digits.
BmnProfRaw2Digit * fMapper
virtual void Finish()
BmnEventHeader * fEventHead
TString fOutputProfBranchName
BmnProfAsic2Raw(Int_t run_period=9, Int_t run_number=0, Int_t verb=0)
virtual InitStatus Init()
TClonesArray * fInAsicArray
Input array of ADC signals.
TClonesArray * fWorkAdcArray
Intermediate array of ADC signals.
virtual ~BmnProfAsic2Raw()
TString fInputEventHeaderName
TString fWorkAdcBranchName
static TClass * Class()
static TClass * Class()
Double_t RealTime()
void Start(Bool_t reset=kTRUE)
void Stop()