StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFcsDbMaker.cxx
1 /***************************************************************************
2  * $id: StFcsDbMaker.cxx,v 1.22 2020/12/17 21:01:04 akio Exp $
3  * \author: akio ogawa
4  ***************************************************************************
5  *
6  * Description: This maker is the interface between FCS and the STAR database
7  *
8  ***************************************************************************
9  *
10  * $Log: StFcsDbMaker.cxx,v $
11  * Revision 1.2 2021/05/27 14:02:24 akio
12  * clean up Clear and fixGain/corr
13  *
14  * Revision 1.1 2021/03/30 13:40:07 akio
15  * FCS code after peer review and moved from $CVSROOT/offline/upgrades/akio
16  *
17  * Revision 1.32 2021/02/25 21:53:50 akio
18  * Int_t -> int
19  *
20  * Revision 1.31 2021/02/24 22:56:19 akio
21  * Modified for STAR code review (Dmitry)
22  *
23  * Revision 1.30 2021/02/23 22:18:23 akio
24  * Modified for STAr code review (Jason)
25  *
26  * Revision 1.29 2021/02/12 20:09:50 akio
27  * Adding getIdfromSCmap()
28  *
29  * Revision 1.28 2021/02/09 21:54:23 akio
30  * Using StEnumeration
31  *
32  * Revision 1.27 2021/02/05 17:23:25 akio
33  * Adding access to STAR offline DB tables.
34  * Adding getFromName/getDetFromName from David.
35  *
36  * Revision 1.26 2021/01/05 18:15:01 akio
37  * added setPedestal()
38  *
39  * Revision 1.25 2020/12/30 20:45:20 akio
40  * fix format
41  *
42  * Revision 1.24 2020/12/30 20:34:38 akio
43  * also modify getName for DEP
44  *
45  * Revision 1.23 2020/12/30 20:17:55 akio
46  * adding SC map access
47  *
48  * Revision 1.22 2020/12/17 21:01:04 akio
49  * fix slt problem in sc map
50  *
51  * Revision 1.21 2020/09/03 19:43:20 akio
52  * Updating SC map and adding patchpanel & cable color map
53  *
54  * Revision 1.20 2020/07/24 17:23:31 akio
55  * EPD mip value from 1.6MeV to 2.0MeV
56  *
57  * Revision 1.19 2020/05/29 18:53:40 akio
58  * Adding EPD as PRES maps, STAR coordinate for 4x4 trigger patch, renming map files to be used for DAQ as Tonko specifies
59  *
60  * Revision 1.18 2020/05/04 15:49:39 akio
61  * adding gain for EPD as PRES
62  *
63  * Revision 1.17 2020/05/04 15:48:22 akio
64  * adding input file for DAQ
65  *
66  * Revision 1.16 2019/10/23 20:05:39 akio
67  * bug fixed for getOffset for det=1
68  *
69  * Revision 1.15 2019/10/23 19:20:10 akio
70  * fix det=0 bug for getGain/gaincorr
71  *
72  * Revision 1.14 2019/10/23 13:34:38 akio
73  * Adding getZDepth, and take out Ecal front space (for SiPM/Fee) from offsets
74  * so that x/z offsets are now pointing to actual ecal tower front & near beam corner.
75  *
76  * Revision 1.13 2019/08/01 18:36:06 akio
77  * Bug fix which was causing id=0 to get gain=1.0 always
78  *
79  * Revision 1.12 2019/07/10 06:13:34 akio
80  * Adding reading of gains from text files
81  *
82  * Revision 1.11 2019/07/08 15:53:28 akio
83  * updating sampling fraction number by Ting & Liu's study
84  *
85  * Revision 1.10 2019/06/27 16:10:32 akio
86  * adding getLocalXYinCell
87  *
88  * Revision 1.9 2019/06/25 16:38:59 akio
89  * Fixed y offset for run19
90  * Added setting run# and time dependent (for preshower yoffset only for now)
91  *
92  * Revision 1.8 2019/06/21 17:28:47 akio
93  * dealing with 5cm offsent when leakyHcal
94  *
95  * Revision 1.7 2019/06/07 18:16:54 akio
96  * *** empty log message ***
97  *
98  * Revision 1.6 2019/05/16 16:08:32 akio
99  * going back to 2019 to full gepmetry
100  *
101  * Revision 1.5 2019/03/22 14:28:35 akio
102  * adding map for 2019
103  *
104  * Revision 1.4 2019/03/13 20:46:19 akio
105  * formatting
106  *
107  * Revision 1.3 2019/03/13 20:29:30 akio
108  * update for run19
109  *
110  * Revision 1.2 2019/02/05 22:00:18 akio
111  * fix NorthSouth()
112  *
113  * Revision 1.1 2018/11/14 16:50:13 akio
114  * FCS codes in offline/upgrade/akio
115  *
116  *
117  **************************************************************************/
118 
119 #include "StFcsDbMaker.h"
120 #include "StFcsDb.h"
121 #include "StFcsDbPulse.h"
122 #include "St_db_Maker/St_db_Maker.h"
123 #include "StMessMgr.h"
124 
125 #include "tables/St_fcsDetectorPosition_Table.h"
126 #include "tables/St_fcsEcalGain_Table.h"
127 #include "tables/St_fcsHcalGain_Table.h"
128 #include "tables/St_fcsPresGain_Table.h"
129 #include "tables/St_fcsEcalGainCorr_Table.h"
130 #include "tables/St_fcsHcalGainCorr_Table.h"
131 #include "tables/St_fcsPresValley_Table.h"
132 #include "tables/St_vertexSeed_Table.h"
133 
134 ClassImp(StFcsDbMaker)
135 
136 StFcsDbMaker::StFcsDbMaker(const char *name) : StMaker(name){
137  LOG_INFO << "******** StFcsDbMaker::StFcsDbMaker = "<<name<<endm;
138  mFcsDb = new StFcsDb("fcsDb");
139  AddData(mFcsDb,".const");
140  mFcsDbPulse = new StFcsDbPulse("fcsPulse");
141  AddData(mFcsDbPulse,".const");
142 };
143 
144 StFcsDbMaker::~StFcsDbMaker() {
145  //delete mFcsDb; //already deleted by chain because AddData in constructor
146  //delete mFcsDbPulse; //already deleted by chain because AddData in constructor
147 }
148 
149 int StFcsDbMaker::Init(){
150  mFcsDb->Init();
151  mFcsDbPulse->Init();
152  return kStOK;
153  return StMaker::Init();
154 }
155 
156 void StFcsDbMaker::Clear(Option_t *option){
157  StMaker::Clear(option);
158 }
159 
161  return StMaker::Make();
162 }
163 
164 int StFcsDbMaker::InitRun(int runNumber) {
165  LOG_INFO << "StFcsDbMaker::InitRun - run = " << runNumber << endm;
166 
167  if(mDbAccess){
168  St_db_Maker* dbmaker = (St_db_Maker*)GetMaker("db");
169  if(dbmaker){
170  LOG_INFO << "StFcsDbMaker::InitRun - Date&time from St_db_Maker="<<dbmaker->GetDate()<<","<< dbmaker->GetTime() << endm;
171  }else{
172  LOG_ERROR << "StFcsDbMaker::InitRun - No St_db_Maker"<<endm; return kStFatal;
173  }
174 
175  //Get to Geometry/fcs
176  TDataSet *DBgeom = 0;
177  St_fcsDetectorPosition *dbFcsDetPos=0;
178  DBgeom = GetInputDB("Geometry/fcs");
179  if(!DBgeom){
180  LOG_ERROR << "StFcsDbMaker::InitRun - No Geometry/fcs"<<endm;
181  }else{
182  dbFcsDetPos = (St_fcsDetectorPosition*)DBgeom ->Find("fcsDetectorPosition");
183  }
184  if(!dbFcsDetPos){
185  LOG_ERROR << "StFcsDbMaker::InitRun - No Geometry/fcs/fcsDetectorPosition"<<endm;
186  mFcsDb->setFcsDetectorPosition(0);
187  }else{
188  mFcsDb->setFcsDetectorPosition((fcsDetectorPosition_st*) dbFcsDetPos->GetTable());
189  }
190 
191  //Get to Calibrations/fcs
192  TDataSet *DBcalib = 0;
193  St_fcsEcalGain *dbFcsEcalGain =0;
194  St_fcsHcalGain *dbFcsHcalGain =0;
195  St_fcsPresGain *dbFcsPresGain =0;
196  St_fcsEcalGainCorr *dbFcsEcalGainCorr =0;
197  St_fcsHcalGainCorr *dbFcsHcalGainCorr =0;
198  St_fcsPresValley *dbFcsPresValley =0;
199  DBcalib = GetInputDB("Calibrations/fcs");
200  if(!DBcalib){
201  LOG_ERROR << "StFcsDbMaker::InitRun - No Calibration/fcs"<<endm;
202  }else{
203  dbFcsEcalGain = (St_fcsEcalGain*) DBcalib->Find("fcsEcalGain");
204  dbFcsHcalGain = (St_fcsHcalGain*) DBcalib->Find("fcsHcalGain");
205  dbFcsPresGain = (St_fcsPresGain*) DBcalib->Find("fcsPresGain");
206  dbFcsEcalGainCorr = (St_fcsEcalGainCorr*) DBcalib->Find("fcsEcalGainCorr");
207  dbFcsHcalGainCorr = (St_fcsHcalGainCorr*) DBcalib->Find("fcsHcalGainCorr");
208  dbFcsPresValley = (St_fcsPresValley*) DBcalib->Find("fcsPresValley");
209  }
210 
211  //Ecal Gain
212  if(!dbFcsEcalGain) {
213  LOG_ERROR << "StFcsDbMaker::InitRun - No Calibration/fcs/fcsEcalGain"<<endm;
214  mFcsDb->setFcsEcalGain(0);
215  }else{
216  mFcsDb->setFcsEcalGain((fcsEcalGain_st*) dbFcsEcalGain->GetTable());
217  }
218  //Hcal Gain
219  if(!dbFcsHcalGain) {
220  LOG_ERROR << "StFcsDbMaker::InitRun - No Calibration/fcs/fcsHcalGain"<<endm;
221  mFcsDb->setFcsHcalGain(0);
222  }else{
223  mFcsDb->setFcsHcalGain((fcsHcalGain_st*) dbFcsHcalGain->GetTable());
224  }
225  //Pres Gain
226  if(!dbFcsPresGain) {
227  LOG_ERROR << "StFcsDbMaker::InitRun - No Calibration/fcs/fcsPresGain"<<endm;
228  mFcsDb->setFcsPresGain(0);
229  }else{
230  mFcsDb->setFcsPresGain((fcsPresGain_st*) dbFcsPresGain->GetTable());
231  }
232  //Ecal GainCorr
233  if(!dbFcsEcalGainCorr) {
234  LOG_ERROR << "StFcsDbMaker::InitRun - No Calibration/fcs/fcsEcalGainCorr"<<endm;
235  mFcsDb->setFcsEcalGainCorr(0);
236  }else{
237  mFcsDb->setFcsEcalGainCorr((fcsEcalGainCorr_st*) dbFcsEcalGainCorr->GetTable());
238  }
239  //Hcal GainCorr
240  if(!dbFcsHcalGainCorr) {
241  LOG_ERROR << "StFcsDbMaker::InitRun - No Calibration/fcs/fcsHcalGainCorr"<<endm;
242  mFcsDb->setFcsHcalGainCorr(0);
243  }else{
244  mFcsDb->setFcsHcalGainCorr((fcsHcalGainCorr_st*) dbFcsHcalGainCorr->GetTable());
245  }
246  //Pres Valley
247  if(!dbFcsPresValley) {
248  LOG_ERROR << "StFcsDbMaker::InitRun - No Calibration/fcs/fcsPresValley"<<endm;
249  mFcsDb->setFcsPresValley(0);
250  }else{
251  mFcsDb->setFcsPresValley((fcsPresValley_st*) dbFcsPresValley->GetTable());
252  }
253  }
254 
255  mFcsDb->InitRun(runNumber);
256  return kStOK;
257 }
void setFcsPresGain(fcsPresGain_st *)
set fcsHcalGain_st*
Definition: StFcsDb.cxx:270
void setFcsPresValley(fcsPresValley_st *)
set fcsHcalGainCorr_st*
Definition: StFcsDb.cxx:285
void setFcsHcalGain(fcsHcalGain_st *)
set fcsEcalGain_st*
Definition: StFcsDb.cxx:265
virtual void Clear(Option_t *option="")
User defined functions.
Definition: StMaker.cxx:634
int Init()
Initialize object.
void setFcsEcalGainCorr(fcsEcalGainCorr_st *)
set fcsPresGain_st*
Definition: StFcsDb.cxx:275
void Clear(Option_t *option)
User defined functions.
virtual Int_t Make()
Definition: StMaker.cxx:898
void setFcsEcalGain(fcsEcalGain_st *)
set fcsDetectorPosition_st*
Definition: StFcsDb.cxx:260
Definition: Stypes.h:40
void setFcsDetectorPosition(fcsDetectorPosition_st *t)
set leaky Hcal
Definition: StFcsDb.cxx:255
void setFcsHcalGainCorr(fcsHcalGainCorr_st *)
set fcsEcalGainCorr_st*
Definition: StFcsDb.cxx:280
virtual TDataSet * Find(const char *path) const
Definition: TDataSet.cxx:362