BmnRoot
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)
21 , fPedEnough(kFALSE)
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
47 fWorkAdcArray = new TClonesArray(BmnADCDigit::Class());
48 ioman->Register(fWorkAdcBranchName, "ADC32Prof", fWorkAdcArray, kTRUE);
49
50 fBmnProfDigitArray = new TClonesArray(BmnSiProfDigit::Class());
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
65void BmnProfAsic2Raw::Exec(Option_t* opt)
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);
94 fPedEnough = kTRUE;
95 if (!fPedEnough) {
96 if ((Int_t)fPedEvCntr != fEvForPedestals) {
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)
103 DrawBar(fPedEvCntr, fEvForPedestals);
104 } else {
105 fPedEnough = kTRUE;
107 }
108 } else
109 fMapper->FillEvent(fWorkAdcArray, fBmnProfDigitArray);
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
BmnStatus RecalculatePedestalsAugmented()
void CopyData2PedMap(TClonesArray *adc, UInt_t ev)
void SetVerbose(Int_t v)
virtual void Exec(Option_t *opt)
virtual void Finish()
BmnProfAsic2Raw(Int_t run_period=9, Int_t run_number=0, Int_t verb=0)
virtual InitStatus Init()
virtual ~BmnProfAsic2Raw()
int FillExtractedBits(TClonesArray *fInAdcArray, TClonesArray *fWorkAdcArray)
BmnStatus FillEvent(TClonesArray *adc, TClonesArray *csc)