ROOTANA
Loading...
Searching...
No Matches
manalyzer_example_root.cxx
Go to the documentation of this file.
1//
2// MIDAS analyzer example 2: ROOT analyzer
3//
4// K.Olchanski
5//
6
7#include <stdio.h>
8
9#include "manalyzer.h"
10#include "midasio.h"
11
12#include "TH1D.h"
13
15{
16 int fCounter = 0;
17 TH1D* fHexample = NULL;
18
20 : TARunObject(runinfo)
21 {
22 printf("ExampleRoot::ctor!\n");
23 fModuleName = "ExampleRoot";
24 }
25
27 {
28 printf("ExampleRoot::dtor!\n");
29 }
30
31 void BeginRun(TARunInfo* runinfo)
32 {
33 printf("BeginRun, run %d, file %s\n", runinfo->fRunNo, runinfo->fFileName.c_str());
34 uint32_t run_start_time_binary = 0;
35 runinfo->fOdb->RU32("Runinfo/Start time binary", &run_start_time_binary);
36 time_t run_start_time = run_start_time_binary;
37 printf("ODB Run start time: %d: %s", (int)run_start_time, ctime(&run_start_time));
38 fCounter = 0;
39 runinfo->fRoot->fOutputFile->cd(); // select correct ROOT directory
40 fHexample = new TH1D("example", "example", 200, -100, 100);
41 }
42
43 void EndRun(TARunInfo* runinfo)
44 {
45 printf("EndRun, run %d, events %d\n", runinfo->fRunNo, fCounter);
46 uint32_t run_stop_time_binary = 0;
47 runinfo->fOdb->RU32("Runinfo/Stop time binary", &run_stop_time_binary);
48 time_t run_stop_time = run_stop_time_binary;
49 printf("ODB Run stop time: %d: %s", (int)run_stop_time, ctime(&run_stop_time));
50 fHexample->SaveAs("example.root");
51 fHexample->SaveAs("example.pdf");
52 }
53
54 void PauseRun(TARunInfo* runinfo)
55 {
56 printf("PauseRun, run %d\n", runinfo->fRunNo);
57 }
58
59 void ResumeRun(TARunInfo* runinfo)
60 {
61 printf("ResumeRun, run %d\n", runinfo->fRunNo);
62 }
63
64 TAFlowEvent* Analyze(TARunInfo* runinfo, TMEvent* event, TAFlags* flags, TAFlowEvent* flow)
65 {
66 printf("Analyze, run %d, event serno %d, id 0x%04x, data size %d\n", runinfo->fRunNo, event->serial_number, (int)event->event_id, event->data_size);
67
68 //if (event->event_id != 2)
69 // return flow;
70
71 TMBank* bslow = event->FindBank("SLOW");
72 if (!bslow)
73 return flow;
74
75 float* dslow = (float*)event->GetBankData(bslow);
76 if (!dslow)
77 return flow;
78
79 double v = *dslow;
80
81 printf("event %d, slow %f\n", event->serial_number, v);
82
83 fHexample->Fill(v);
84 fCounter++;
85
86 return flow;
87 }
88
89 void AnalyzeSpecialEvent(TARunInfo* runinfo, TMEvent* event)
90 {
91 printf("AnalyzeSpecialEvent, run %d, event serno %d, id 0x%04x, data size %d\n", runinfo->fRunNo, event->serial_number, (int)event->event_id, event->data_size);
92 }
93};
94
96{
97public:
98 void Init(const std::vector<std::string> &args)
99 {
100 printf("Init!\n");
101 }
102
103 void Finish()
104 {
105 printf("Finish!\n");
106 }
107
109 {
110 printf("NewRunObject, run %d, file %s\n", runinfo->fRunNo, runinfo->fFileName.c_str());
111 return new ExampleRoot(runinfo);
112 }
113};
114
116
117/* emacs
118 * Local Variables:
119 * tab-width: 8
120 * c-basic-offset: 3
121 * indent-tabs-mode: nil
122 * End:
123 */
void Init(const std::vector< std::string > &args)
TARunObject * NewRunObject(TARunInfo *runinfo)
virtual void RU32(const char *varname, uint32_t *value, bool create=false, MVOdbError *error=NULL)=0
TFile * fOutputFile
Definition manalyzer.h:161
std::string fFileName
Definition manalyzer.h:25
MVOdb * fOdb
Definition manalyzer.h:26
int fRunNo
Definition manalyzer.h:24
TARootHelper * fRoot
Definition manalyzer.h:27
std::string fModuleName
Definition manalyzer.h:91
uint32_t serial_number
MIDAS event serial number.
Definition midasio.h:59
uint32_t data_size
MIDAS event data size.
Definition midasio.h:61
uint16_t event_id
MIDAS event ID.
Definition midasio.h:57
char * GetBankData(const TMBank *)
get pointer to MIDAS data bank
Definition midasio.cxx:1026
int TAFlags
Definition manalyzer.h:79
static TARegister tar(new ExampleRootFactory)
void EndRun(TARunInfo *runinfo)
void ResumeRun(TARunInfo *runinfo)
TAFlowEvent * Analyze(TARunInfo *runinfo, TMEvent *event, TAFlags *flags, TAFlowEvent *flow)
void BeginRun(TARunInfo *runinfo)
ExampleRoot(TARunInfo *runinfo)
void AnalyzeSpecialEvent(TARunInfo *runinfo, TMEvent *event)
void PauseRun(TARunInfo *runinfo)