forked from R3BRootGroup/R3BRoot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathR3BPdcCal2Hit.h
130 lines (112 loc) · 4.17 KB
/
R3BPdcCal2Hit.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/******************************************************************************
* Copyright (C) 2019 GSI Helmholtzzentrum für Schwerionenforschung GmbH *
* Copyright (C) 2019 Members of R3B Collaboration *
* *
* This software is distributed under the terms of the *
* GNU General Public Licence (GPL) version 3, *
* copied verbatim in the file "LICENSE". *
* *
* In applying this license GSI does not waive the privileges and immunities *
* granted to it by virtue of its status as an Intergovernmental Organization *
* or submit itself to any jurisdiction. *
******************************************************************************/
// ------------------------------------------------------------
// ----- R3BPdcCal2Hit -----
// ----- Created June 2nd 2020 by M.Heil -----
// ------------------------------------------------------------
#ifndef R3BPDCCAL2HIT
#define R3BPDCCAL2HIT
#include <list>
#include <map>
#include "FairTask.h"
#include "THnSparse.h"
class TClonesArray;
class R3BPdcHitModulePar;
class R3BPdcHitPar;
class R3BEventHeader;
class TH1F;
class TH2F;
class R3BPdcCalData;
/**
* An analysis task to apply HIT calibration for Pdc.
* it also applies walk corrections and Z-calibration
*/
class R3BPdcCal2Hit : public FairTask
{
public:
struct ToT
{
ToT(R3BPdcCalData const*, R3BPdcCalData const*, Double_t, Double_t, Double_t);
R3BPdcCalData const* lead;
R3BPdcCalData const* trail;
Double_t lead_ns, tail_ns, tot_ns;
};
struct Channel
{
std::list<R3BPdcCalData const*> lead_list;
std::list<ToT> tot_list;
};
/**
* Default constructor.
* Creates an instance of the task with default parameters.
*/
R3BPdcCal2Hit();
/**
* Standard constructor.
* Creates an instance of the task.
* @param name a name of the task.
* @param iVerbose a verbosity level.
*/
R3BPdcCal2Hit(const char* name, Int_t iVerbose = 1);
/**
* Destructor.
* Frees the memory used by the object.
*/
virtual ~R3BPdcCal2Hit();
/**
* Method for task initialization.
* This function is called by the framework before
* the event loop.
* @return Initialization status. kSUCCESS, kERROR or kFATAL.
*/
virtual InitStatus Init();
/**
* Method for re-initialization of parameter containers
* in case the Run ID has changed.
*/
virtual InitStatus ReInit();
/**
* Method for event loop implementation.
* Is called by the framework every time a new event is read.
* @param option an execution option.
*/
virtual void Exec(Option_t* option);
/**
* A method for finish of processing of an event.
* Is called by the framework for each event after executing
* the tasks.
*/
virtual void FinishEvent();
/**
* Method for finish of the task execution.
* Is called by the framework after processing the event loop.
*/
virtual void FinishTask();
virtual void SetParContainers();
private:
TClonesArray* fCalItems; /**< Array with Cal items - input data. */
TClonesArray* fCalTriggerItems; /**< Array with trigger Cal items - input data. */
TClonesArray* fHitItems; /**< Array with Hit items - output data. */
UInt_t fNofHitItems; /**< Number of hit items for cur event. */
// R3BPdcHitPar* fHitPar; /**< Hit parameter container. */
UInt_t fNofHitPars; /**< Number of modules in parameter file. */
R3BEventHeader* header; /**< Event header - input data. */
Double_t fClockFreq; /**< Clock cycle in [ns]. */
UInt_t maxevent;
UInt_t fnEvents;
typedef std::vector<Channel> ChannelArray;
std::vector<ChannelArray> fPlaneArray;
public:
ClassDef(R3BPdcCal2Hit, 1)
};
#endif