Logo Coherent WaveBurst  
Reference Guide
Logo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
cwb.hh
Go to the documentation of this file.
1 /**********************************************************
2  * Package: CWB Class Library
3  * File name: CWB.hh
4  * Author: Gabriele Vedovato (vedovato@lnl.infn.it)
5  **********************************************************/
6 
7 
8 #ifndef CWB_HH
9 #define CWB_HH
10 
11 #include "TObjString.h"
12 #include "TObjArray.h"
13 #include "TString.h"
14 #include "TROOT.h"
15 #include "TMath.h"
16 #include "TSystem.h"
17 #include "TLatex.h"
18 #include "TTree.h"
19 #include "TFile.h"
20 #include "TNamed.h"
21 #include "TGlobal.h"
22 #include "TFileMerger.h"
23 
24 #include <string>
25 #include <iostream>
26 #include <fstream>
27 #include <stdlib.h>
28 #include <math.h>
29 #include <ctype.h>
30 #include <vector>
31 
32 #include "wavecomplex.hh"
33 #include "wavearray.hh"
34 #include "wat.hh"
35 
36 #include "History.hh"
37 #include "Toolbox.hh"
38 #include "config.hh"
39 #include "time.hh"
40 #include "ced.hh"
41 #include "frame.hh"
42 
43 #include "livetime.hh"
44 #include "variability.hh"
45 #include "wavenoise.hh"
46 
47 #include "CWB_Plugin.h"
48 
49 // macro used by the pipeline to share parameters between pipeline and Plugin
50 
51 #define IMPORT(TYPE,VAR) { \
52  char cmdline[128]; \
53  TGlobal* _global = (TGlobal*)gROOT->GetGlobal("gPOINTER",true); \
54  if(_global==NULL) sprintf(cmdline,"void* gPOINTER = (void*)&%s;",#VAR); \
55  else sprintf(cmdline,"gPOINTER = (void*)&%s;",#VAR); \
56  gROOT->ProcessLine(cmdline); \
57  TGlobal* _gvar = (TGlobal*)gROOT->GetGlobal(#VAR,true); \
58  if(_gvar!=NULL) { \
59  void* gPOINTER=NULL; \
60  _global = (TGlobal*)gROOT->GetGlobal("gPOINTER",true); \
61  memcpy((void*)&gPOINTER,(void*)_global->GetAddress(),sizeof(void*)); \
62  VAR = *(TYPE*)gPOINTER; \
63  } \
64 }
65 
66 #define EXPORT(TYPE,VAR,CMD) { \
67  TGlobal* _global = (TGlobal*)gROOT->GetGlobal(#VAR,true); \
68  char cmdline[128]; \
69  if(_global==NULL) sprintf(cmdline,"%s %s;",#TYPE,CMD); \
70  else sprintf(cmdline,"%s;",CMD); \
71  gROOT->ProcessLine(cmdline); \
72 }
73 
74 enum CWB_PLUGIN {
100 };
101 
102 enum CWB_STAGE {
112 };
113 
114 extern void CWB_Plugin(TFile* jfile, CWB::config*, network*, WSeries<double>*, TString, int);
118 
119 class cwb : public TNamed {
120 
121 public:
122 
123  friend void CWB_Plugin(TFile* jfile, CWB::config*, network*, WSeries<double>*, TString, int);
127 
131  virtual ~cwb();
132 
133  virtual void run(int runID=0);
134 
135  static size_t GetProcInfo(bool mvirtual=true);
136 
137  // return the pointer to the config object
138  CWB::config* GetConfig() {return &cfg;}
139 
140  // return the pointer to the network object
141  network* GetNetwork() {return &NET;}
142 
143  // return the pointer to the history object
145 
146  // return the final stage to process by the analysis
148 
149  // return the maximun stage value
150  static int GetStageSize() {return CWB_STAGE_LIKELIHOOD;}
151 
154 
155  int SetSkyMask(network* net, CWB::config* cfg, char* options, char skycoord, double skyres=-1);
156  static void MakeSkyMask(skymap& SkyMask, double theta, double phi, double radius);
157 
158  char GetLagMode() {return lagMode[0];}
159  TArrayC GetLagBuffer() {return lagBuffer;}
160 
161  void print() {PrintAnalysis(false);} // *MENU*
162 
163  // return the FRF frame files list
164  vector<frfile> GetFrList(int ifoID=-1);
165  vector<frfile> GetFrList(TString ifo);
166 
167  // Method used by TBrowser when double click the cwb object
168  virtual void Browse(TBrowser *b) {print();}
169 
170  double GetSegBegin() {return Tb;}
171  double GetSegEnd() {return Te;}
172 
174 
176  bool out=true, bool log=true);
177 
178 protected:
179 
181 
182  virtual void InitNetwork();
183  virtual void InitNetwork(TString fName);
184  virtual void InitHistory();
185  virtual double InitJob();
186  virtual double InitJob(TString fName);
187 
188  // virtual base class ReadData method
189  virtual double ReadData(double mdcShift, int ifactor) {return 0.;}
190  virtual double ReadData(TString fName);
191 
192  // virtual base class DataConditioning method
193  virtual void DataConditioning(int ifactor) {return;}
194  virtual void DataConditioning(TString fName, int ifactor);
195 
196  // virtual base class Coherence method
197  virtual void Coherence(int ifactor) {return;}
198  virtual void Coherence(TString fName);
199 
200  // virtual base class SuperCluster method
201  virtual void SuperCluster(int ifactor) {return;}
202  virtual void SuperCluster(TString fName);
203 
204  // virtual base class Likelihood method
205  virtual bool Likelihood(int ifactor, char* ced_dir, netevent* netburst = NULL,
206  TTree* net_tree = NULL, char* outDump = NULL) {return false;}
207 
208  void LoadPlugin(TMacro& plugin, TMacro& configPlugin);
209 
210  void Init();
211  void PrintAnalysis(bool stageInfos=true);
212  void PrintElapsedTime(int job_elapsed_time, TString info);
214  bool out=true, bool log=true, TString fname="");
217 
218  void Exec(char* command, int maxtry=3, bool verbose=true);
219  void FileGarbageCollector(TString ifName, TString ofName="",
220  vector<TString> delObjList = vector<TString>());
221 
222 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
223 // declarations
224 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
225 
226  TStopwatch watchJob; //! job benchmark
227  TStopwatch watchStage; //! stage benchmark
228 
229  TString iname; // input root data file
230 
231  CWB::Toolbox TB; //! Toolbox
232  int nIFO; // number of detectors
233  char ifo[NIFO_MAX][8]; // detector names array
234  int runID; // job ID
235  CWB_STAGE istage; // initial stage
236  CWB_STAGE jstage; // final stage
237 
238  // the first nIFO positions contains the ifo frFiles, nIFO+1 contains the sim frFile
239  CWB::frame fr[2*NIFO_MAX]; // array of frame objects used to read frame files
240  int nfrFiles[2*NIFO_MAX]; // frame files list names
241  frfile FRF[2*NIFO_MAX]; // frame file structures
242 
243  // output root file variables
244  TFile* froot; //! output root file
245 
246  // temporary job file variables
247  TFile* jfile; //! job file object
248  char jname[1024]; // job file name
249 
250  WSeries<float> v[NIFO_MAX]; //! noise variability
251  detector* pD[NIFO_MAX]; //! pointers to detectors
252  WSeries<double>* pTF[NIFO_MAX]; //! pointers to WSeries
253 
254  network NET; //! network object
255 
256  injection* mdc; //! injection object
257  livetime live; //! livetime object
258  netevent* netburst; //! netburst object
259  variability wavevar; //! variability object
260  wavenoise noiserms; //! wavenoise object
261 
262  CWB::History* history; //! history object
263 
264  unsigned int jobfOptions; //! used for the stage stuff
265  bool singleDetector; // true -> single detector mode
266 
267  size_t rateANA; // analysis data rate
268 
269  double Tb; // start segment gps time (segEdge excluded)
270  double Te; // stop segment gps time (segEdge excluded)
271  double dT; // WB segment duration (segEdge excluded)
272 
273  double mTau; //! maximum time delay
274  double dTau; //! time delay difference
275 
276  vector<waveSegment> detSegs; // detector job segments
277  vector<waveSegment> cat1List; //! category 1 data quality list
278  vector<waveSegment> cat2List; //! category 2 data quality list
279  int jobID;int slagID;int segID[20];
280  float slagShift[20]; // used to store the super lags
281  size_t lags; // number of lags
282  char lagMode[1]; // used to store the the user lagFile mode
283  TArrayC lagBuffer; // used to store the contents of the user lagFile
284 
285  bool bplugin; //! false/true -> defined/not-defined
286 
287  ClassDef(cwb,4)
288 };
289 
290 #endif
size_t rateANA
Definition: cwb.hh:267
TString outDump
int jobID
category 2 data quality list
Definition: cwb.hh:279
double Te
Definition: cwb.hh:270
CWB::frame fr[2 *NIFO_MAX]
Definition: cwb.hh:239
void PrintElapsedTime(int job_elapsed_time, TString info)
Definition: cwb.cc:1981
TString GetAnalysisInfo(CWB_STAGE stage, TString comment, TString info)
Definition: cwb.cc:2129
cwb(CWB_STAGE jstage=CWB_STAGE_FULL)
Definition: cwb.cc:13
double dTau
maximum time delay
Definition: cwb.hh:274
static size_t GetProcInfo(bool mvirtual=true)
Definition: cwb.cc:1829
variability wavevar
netburst object
Definition: cwb.hh:259
TString ofName
void FileGarbageCollector(TString ifName, TString ofName="", vector< TString > delObjList=vector< TString >())
Definition: cwb.cc:2319
void CWB_Plugin(TFile *jfile, CWB::config *, network *, WSeries< double > *, TString, int)
COHERENCE.
bool singleDetector
used for the stage stuff
Definition: cwb.hh:265
WSeries< double > * pTF[NIFO_MAX]
pointers to detectors
Definition: cwb.hh:252
int nfrFiles[2 *NIFO_MAX]
Definition: cwb.hh:240
void CWB_Plugin(TFile *jfile, CWB::config *, network *, WSeries< double > *, TString, int)
COHERENCE.
void Init()
Definition: cwb.cc:212
TString iname
stage benchmark
Definition: cwb.hh:229
double dT
Definition: cwb.hh:271
void CWB_Plugin(TFile *jfile, CWB::config *, network *, WSeries< double > *, TString, int)
COHERENCE.
double mTau
Definition: cwb.hh:273
vector< frfile > GetFrList(int ifoID=-1)
Definition: cwb.cc:2555
detector * pD[NIFO_MAX]
noise variability
Definition: cwb.hh:251
TString("c")
char comment[1024]
bool bplugin
Definition: cwb.hh:285
TFile * jfile
output root file
Definition: cwb.hh:247
double Tb
Definition: cwb.hh:269
virtual double InitJob()
Definition: cwb.cc:1230
CWB_PLUGIN
Definition: cwb.hh:74
float theta
TFile * froot
Definition: cwb.hh:244
delete[] radius
CWB_STAGE istage
Definition: cwb.hh:235
CWB_STAGE jstage
Definition: cwb.hh:236
int slagID
Definition: cwb.hh:279
TString GetStageInfo(CWB_STAGE stage, TString comment, TString fname="")
Definition: cwb.cc:2020
char ifo[NIFO_MAX][8]
Definition: cwb.hh:233
virtual double ReadData(double mdcShift, int ifactor)
Definition: cwb.hh:189
size_t lags
Definition: cwb.hh:281
TStopwatch watchJob
Definition: cwb.hh:226
network NET
pointers to WSeries
Definition: cwb.hh:254
virtual void Browse(TBrowser *b)
Definition: cwb.hh:168
network ** net
NOISE_MDC_SIMULATION.
char ced_dir[512]
Definition: test_config1.C:154
double mdcShift
Definition: cwb_net.C:178
vector< waveSegment > detSegs
time delay difference
Definition: cwb.hh:276
ofstream out
Definition: cwb_merge.C:196
virtual ~cwb()
Definition: cwb.cc:197
float slagShift[20]
Definition: cwb.hh:280
void CWB_Plugin(TFile *jfile, CWB::config *, network *, WSeries< double > *, TString, int)
COHERENCE.
float phi
double GetSegEnd()
Definition: cwb.hh:171
vector< waveSegment > cat2List
category 1 data quality list
Definition: cwb.hh:278
jfile
Definition: cwb_job_obj.C:25
TTree * net_tree
static TString GetStageString(CWB_STAGE jstage)
Definition: cwb.cc:2187
TStopwatch watchStage
job benchmark
Definition: cwb.hh:227
void PrintAnalysisInfo(CWB_STAGE stage, TString comment, TString info, bool out=true, bool log=true)
Definition: cwb.cc:2110
void SetupStage(CWB_STAGE jstage)
Definition: cwb.cc:2223
int segID[20]
Definition: cwb.hh:279
virtual void run(int runID=0)
Definition: cwb.cc:263
const int NIFO_MAX
Definition: wat.hh:4
bool log
Definition: WaveMDC.C:41
char lagMode[1]
Definition: cwb.hh:282
double GetSegBegin()
Definition: cwb.hh:170
wavenoise noiserms
variability object
Definition: cwb.hh:260
char fname[1024]
friend void CWB_Plugin(TFile *jfile, CWB::config *, network *, WSeries< double > *, TString, int)
COHERENCE.
void PrintStageInfo(CWB_STAGE stage, TString comment, bool out=true, bool log=true, TString fname="")
Definition: cwb.cc:2001
bool IsSingleDetector()
Definition: cwb.hh:173
void Exec(char *command, int maxtry=3, bool verbose=true)
Definition: cwb.cc:2291
char jname[1024]
job file object
Definition: cwb.hh:248
virtual void DataConditioning(int ifactor)
Definition: cwb.hh:193
static int GetStageSize()
Definition: cwb.hh:150
Definition: skymap.hh:45
string command
Definition: cwb_online.py:382
frfile FRF[2 *NIFO_MAX]
Definition: cwb.hh:241
CWB::Toolbox TB
Definition: cwb.hh:231
vector< waveSegment > cat1List
Definition: cwb.hh:277
CWB_STAGE GetStage()
Definition: cwb.hh:147
livetime live
injection object
Definition: cwb.hh:257
CWB::config cfg
Definition: cwb.hh:180
char options[256]
CWB::History * GetHistory()
Definition: cwb.hh:144
int job_elapsed_time
Definition: cwb_net.C:718
CWB::config * GetConfig()
Definition: cwb.hh:138
void PrintAnalysis(bool stageInfos=true)
Definition: cwb.cc:1687
static void MakeSkyMask(skymap &SkyMask, double theta, double phi, double radius)
Definition: cwb.cc:2398
virtual void InitHistory()
Definition: cwb.cc:984
unsigned int jobfOptions
history object
Definition: cwb.hh:264
CWB::History * history
wavenoise object
Definition: cwb.hh:262
int ifactor
int SetSkyMask(network *net, CWB::config *cfg, char *options, char skycoord, double skyres=-1)
Definition: cwb.cc:2465
void LoadPlugin(TMacro &plugin, TMacro &configPlugin)
Definition: cwb.cc:1851
TMacro plugin
netevent * netburst
livetime object
Definition: cwb.hh:258
Definition: cwb.hh:119
char GetLagMode()
Definition: cwb.hh:158
TMacro configPlugin
TArrayC lagBuffer
Definition: cwb.hh:283
void print()
Definition: cwb.hh:161
int nIFO
Toolbox.
Definition: cwb.hh:232
virtual void SuperCluster(int ifactor)
Definition: cwb.hh:201
int runID
Definition: cwb.hh:234
virtual void Coherence(int ifactor)
Definition: cwb.hh:197
char fName[256]
TArrayC GetLagBuffer()
Definition: cwb.hh:159
WSeries< float > v[NIFO_MAX]
Definition: cwb.hh:250
virtual void InitNetwork()
Definition: cwb.cc:892
CWB_STAGE
Definition: cwb.hh:102
virtual bool Likelihood(int ifactor, char *ced_dir, netevent *netburst=NULL, TTree *net_tree=NULL, char *outDump=NULL)
Definition: cwb.hh:205
injection * mdc
network object
Definition: cwb.hh:256
network * GetNetwork()
Definition: cwb.hh:141