Logo Coherent WaveBurst  
Reference Guide
Logo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DrawSkyMapPRC.C
Go to the documentation of this file.
1 //
2 // Draw FOM plots for Position Reconstruction
3 // Author : Gabriele Vedovato
4 // Note : run with ACLiC -> root -l 'DrawSkyMapPRC.C+("IN_FILE_NAME","median50",1)'
5 // Note : to plot the skymap root files produced by this macro use :
6 // DrawLarsHistogramPRC.C
7 //
8 
9 #define XIFO 4
10 
11 #pragma GCC system_header
12 
13 #include "gnetwork.hh"
14 #include "cwb.hh"
15 #include "config.hh"
16 #include "network.hh"
17 #include "wavearray.hh"
18 #include "TString.h"
19 #include "TObjArray.h"
20 #include "TObjString.h"
21 #include "TRandom.h"
22 #include "TComplex.h"
23 #include "TMath.h"
24 #include "gwat.hh"
25 #include "mdc.hh"
26 #include <vector>
27 
28 
29 //------------------------------------------------------
30 // General Settings
31 //------------------------------------------------------
32 
33 #define WRITE_PLOT
34 #define DATA_LABEL ""
35 
36 #define WRITE_SKYMAP
37 
38 //------------------------------------------------------
39 // Plot Settings
40 //------------------------------------------------------
41 
42 #define DISPLAY_WORLD_MAP
43 
44 #define DRAW_SITES
45 
46 //------------------------------------------------------
47 // Thresholds Settings
48 //------------------------------------------------------
49 
50 #define TREE_NAME "waveburst"
51 
52 #define RHO_THR 2.0
53 #define CC_THR 0.5
54 //#define ED_THR 0.35 // ONLY FOR SEARCH I
55 #define SNR_THRESHOLD 100000000.
56 
57 //------------------------------------------------------
58 // Smoothing Settings
59 //------------------------------------------------------
60 
61 #define MIN_TRIGGERS_PER_PIXEL 2
62 
63 //#define MAX_ENTRIES_PER_PIXEL 2000
64 //#define MAX_ENTRIES_PER_PIXEL 500
65 //#define MAX_ENTRIES_PER_PIXEL 400
66 #define MAX_ENTRIES_PER_PIXEL 300
67 //#define MAX_ENTRIES_PER_PIXEL 200
68 
69 //------------------------------------------------------
70 // SKYMAP Settings
71 //------------------------------------------------------
72 
73 //char COORDINATES[256]="cWB";
74 char COORDINATES[256]="Geographic";
75 
76 //char PROJECTION[256]="";
77 char PROJECTION[256]="hammer";
78 //char PROJECTION[256]="sinusoidal";
79 
80 // default (for Lars Histogram)
81 #define ANGULAR_RESOLUTION (1./3.)
82 #define NPIX_SMOOTH 13
83 
84 //#define ANGULAR_RESOLUTION 1.
85 //#define NPIX_SMOOTH 4
86 
87 //#define ANGULAR_RESOLUTION 3.
88 //#define NPIX_SMOOTH 1
89 
90 //#define ANGULAR_RESOLUTION 9.
91 //#define NPIX_SMOOTH 0
92 
93 //------------------------------------------------------
94 
95 
96 void DrawSkyMapPRC(TString ifName, TString pType="MEDIAN50", int type=0, TString Title="", TString Tag="") {
97 
98 #ifdef __CINT__
99  printf("Please run this script in compiled mode by running \".x DrawSkyMapPRC.C+\"\n");
100  return;
101 #endif
102 
103  pType.ToUpper();
104  if((pType!="MEDIAN50")&&(pType!="MEDIAN90")&&(pType!="WRC50")&&(pType!="EFFICIENCY")) {
105  cout << "Plot Type not available !!!" << endl;
106  cout << "Select Plot Type : MEDIAN50/MEDIAN90/WRC50/EFFICIENCY" << endl;
107  exit(1);
108  }
109 
110  // open input tree
111  TFile *file0 = TFile::Open(ifName);
112  cout << ifName.Data() << endl;
113  if (file0==NULL) {cout << "Error Opening file" << endl;exit(1);}
114  TTree* itree = (TTree *) gROOT->FindObject(TREE_NAME);
115  if (itree==NULL) {cout << "Error Opening tree" << endl;exit(1);}
116 
117  // get detector list
118  TList* list = itree->GetUserInfo();
119  int nIFO=list->GetSize();
120  if (nIFO==0) {cout << "Error : no ifo present in the tree" << endl;exit(1);}
121  detector* pDetector[nIFO];
122  for (int n=0;n<list->GetSize();n++) {
123  pDetector[n] = (detector*)list->At(n);
124  detectorParams dParams = pDetector[n]->getDetectorParams();
125  pDetector[n]->print();
126  }
127 
128  // define selection cuts
129  char cut[1024];
130  sprintf(cut,"run>=0");
131 #ifdef CC_THR
132  sprintf(cut,"%s && netcc[0]>%f",cut,CC_THR);
133 #endif
134 #ifdef RHO_THR
135  sprintf(cut,"%s && rho[1]>%f",cut,RHO_THR);
136 #endif
137 #ifdef ED_THR
138  sprintf(cut,"%s && neted[0]/ecor<%f",cut,ED_THR);
139 #endif
140  sprintf(cut,"%s && abs(time[0]-time[%d])<0.1",cut,nIFO); // WAVE file
141 
142  if(type>0) sprintf(cut,"%s && type[1]==%d",cut,type);
143 
144  if(SNR_THRESHOLD>0.) {
145  sprintf(cut,"%s && sqrt(likelihood)<%f",cut,SNR_THRESHOLD); // WAVE file
146  } else {
147  sprintf(cut,"%s && sqrt(likelihood)>%f",cut,-SNR_THRESHOLD); // WAVE file
148  }
149 
150  if (pType=="WRC50") {
151  char selection[256]="theta[1]:phi[1]";
152 
153  char selection_wrc_num[256]="iSNR[0]+oSNR[0]-2*ioSNR[0]";
154  for(int i=1;i<nIFO;i++) sprintf(selection_wrc_num,"%s+iSNR[%d]+oSNR[%d]-2*ioSNR[%d]",selection_wrc_num,i,i,i);
155 
156  char selection_wrc_den[256]="oSNR[0]";
157  for(int i=1;i<nIFO;i++) sprintf(selection_wrc_den,"%s+oSNR[%d]",selection_wrc_den,i);
158 
159  sprintf(selection,"%s:(%s)/(%s):sqrt(likelihood)",selection,selection_wrc_num,selection_wrc_den);
160  cout << "selection : " << selection << endl;
161  itree->Draw(selection,cut,"goff");
162  } else {
163  itree->Draw("theta[1]:phi[1]:erA[0]:sqrt(likelihood)",cut,"goff"); // MDC file injected coordinates
164  }
165 
166  int inj_size = itree->GetSelectedRows();
167  double* iinj_theta = itree->GetV1();
168  double* iinj_phi = itree->GetV2();
169  double* iierA0 = itree->GetV3();
170  double* insnr = itree->GetV4();
171  double* inj_theta = new double[inj_size];
172  double* inj_phi = new double[inj_size];
173  double* erA0 = new double[inj_size];
174  double* nsnr = new double[inj_size];
175  for (int i=0;i<inj_size;i++) {
176  inj_theta[i]=iinj_theta[i];
177  inj_phi[i]=iinj_phi[i];
178  erA0[i]=iierA0[i];
179  nsnr[i]=insnr[i];
180  }
181 
182  if (pType=="WRC50") {
183  char selection[256]="";
184 
185  char selection_wrc_num[256]="iSNR[0]+oSNR[0]-2*ioSNR[0]";
186  for(int i=1;i<nIFO;i++) sprintf(selection_wrc_num,"%s+iSNR[%d]+oSNR[%d]-2*ioSNR[%d]",selection_wrc_num,i,i,i);
187 
188  char selection_wrc_den[256]="oSNR[0]";
189  for(int i=1;i<nIFO;i++) sprintf(selection_wrc_den,"%s+oSNR[%d]",selection_wrc_den,i);
190 
191  sprintf(selection,"(%s)/(%s):erA[1]:erA[5]:erA[9]",selection_wrc_num,selection_wrc_den);
192  cout << "selection : " << selection << endl;
193  itree->Draw(selection,cut,"goff");
194  } else {
195  itree->Draw("erA[0]:erA[1]:erA[5]:erA[9]",cut,"goff"); // MDC file injected coordinates
196  }
197 
198  double* ierA0 = itree->GetV1();
199  double* ierA1 = itree->GetV2();
200  double* ierA5 = itree->GetV3();
201  double* ierA9 = itree->GetV3();
202  double* erA[10];
203  for(int i=0;i<10;i++) erA[i] = new double[inj_size];
204  for (int i=0;i<inj_size;i++) {
205  erA[0][i]=ierA0[i];
206  erA[1][i]=ierA1[i];
207  erA[5][i]=ierA5[i];
208  erA[9][i]=ierA9[i];
209  }
210 
211  itree->Draw("theta[0]:phi[0]:inet:type[1]",cut,"goff"); // WAVE file reconstructed coordinates
212 
213  cout << cut << endl;
214 
215  int size = itree->GetSelectedRows();
216  double* rec_theta = itree->GetV1();
217  double* rec_phi = itree->GetV2();
218  double* inet = itree->GetV3();
219  double* itype = itree->GetV4();
220 
221  cout << "Selected entries : " << size << endl;
222 
223  skymap* SM = new skymap(ANGULAR_RESOLUTION,0,180,0,360);
224  int L = SM->size();
225 
226  double* coverage = new double[L]; for (int l=0;l<L;l++) coverage[l]=0;
227  double* mean = new double[L]; for (int l=0;l<L;l++) mean[l]=0;
228  double* nri = new double[L]; for (int l=0;l<L;l++) nri[l]=0.;
229  double* snr = new double[L]; for (int l=0;l<L;l++) snr[l]=0.;
230 
231  int* nEA0 = new int[L];
232  for (int l=0;l<L;l++) nEA0[l]=0;
233  float** EA0 = new float*[L];
234  for (int l=0;l<L;l++) EA0[l]=new float[MAX_ENTRIES_PER_PIXEL];
235  for (int l=0;l<L;l++) {
236  for (int n=0;n<MAX_ENTRIES_PER_PIXEL;n++) {
237  EA0[l][n]=0.;
238  }
239  }
240 
241  for (int i=0;i<size;i++) { // loop over events
242 
243  double inj_ph=inj_phi[i];
244  double inj_th=inj_theta[i];
245 
246  int inj_ind = SM->getSkyIndex(inj_th,inj_ph);
247 
248  if (erA[0][i]<erA[5][i]) coverage[inj_ind]++;
249  nri[inj_ind]+=inet[i];
250  snr[inj_ind]+=nsnr[i];
251  mean[inj_ind]+=erA0[i];
252  EA0[inj_ind][nEA0[inj_ind]++]=erA0[i];
253 
254  if(nEA0[inj_ind]>MAX_ENTRIES_PER_PIXEL-1) {cout << "Error : entries per pixels to big" << endl;exit(1);}
255  }
256 
257  int* nMDC = NULL;
258  int* nMDC0 = NULL;
259  if(pType=="EFFICIENCY") {
260  TString mdcFileName = ifName;
261  mdcFileName.ReplaceAll("wave_","mdc_");
262  cout << "opening file " << mdcFileName.Data();
263  TFile *fileMDC = TFile::Open(mdcFileName.Data());
264  if (fileMDC==NULL) {cout << "Error Opening mdc file" << endl;exit(1);}
265  TTree* itreeMDC = (TTree *) gROOT->FindObject("mdc");
266  if (itreeMDC==NULL) {cout << "Error Opening mdc tree" << endl;exit(1);}
267  char mdc_cut[256]="run>0";
268  if(type>0) sprintf(mdc_cut,"%s && type[0]==%d",mdc_cut,type);
269  cout << "mdc_cut : " << mdc_cut << endl;
270  itreeMDC->Draw("theta[0]:phi[0]",mdc_cut,"goff");
271  int mdc_size = itreeMDC->GetSelectedRows();
272  double* mdc_theta = itreeMDC->GetV1();
273  double* mdc_phi = itreeMDC->GetV2();
274 
275  nMDC = new int[L];
276  nMDC0 = new int[L];
277 
278  for (int l=0;l<L;l++) nMDC0[l]=0;
279  for (int l=0;l<L;l++) nMDC[l]=0;
280  for (int i=0;i<mdc_size;i++) { // loop over mdc
281  int mdc_ind = SM->getSkyIndex(mdc_theta[i],mdc_phi[i]);
282  nMDC0[mdc_ind]++;
283  }
284  }
285 
286  int* nEA = new int[L];
287  for (int l=0;l<L;l++) nEA[l]=0;
288  double** EA = new double*[L];
289  for (int l=0;l<L;l++) EA[l]=new double[MAX_ENTRIES_PER_PIXEL];
290  for (int l=0;l<L;l++) {
291  for (int n=0;n<MAX_ENTRIES_PER_PIXEL;n++) {
292  EA[l][n]=0.;
293  }
294  }
295 
296  double* snr_smooth = new double[L];
297  for (int l=0;l<L;l++) snr_smooth[l]=0.;
298 
299  // skymap smoothing
300 
301  for(int l=0; l<L; l++){
302  double th = SM->getTheta(l);
303  double ph = SM->getPhi(l);
304  double st = SM->getThetaStep(l);
305 
306  for(int in=-NPIX_SMOOTH; in<=NPIX_SMOOTH; in++) {
307  double ith = th+in*st; if(ith<0) ith+=180; if(ith>180) ith-=180; // FIX
308  double sp = SM->getPhiStep(SM->getSkyIndex(ith,ph)); // FIX
309  //double sp = SM->getPhiStep(SM->getSkyIndex(th+in*st,ph));
310  for(int im=-NPIX_SMOOTH; im<=NPIX_SMOOTH; im++) {
311  double iph = ph+im*sp; if(iph<0) iph+=360; if(iph>360) iph-=360; // FIX
312  int i = SM->getSkyIndex(ith,iph); // neighbour sky index // FIX
313  //int i = SM->getSkyIndex(th+in*st,ph+im*sp); // neighbour sky index
314  if((nEA0[l]+nEA0[i])>MAX_ENTRIES_PER_PIXEL-1) {cout << "Error : entries per pixels to big" << endl;exit(1);}
315  for (int n=0;n<nEA0[i];n++) EA[l][nEA[l]++]=EA0[i][n];
316  snr_smooth[l]+=snr[i];
317  if(pType=="EFFICIENCY") nMDC[l]+=nMDC0[i];
318  }
319  }
320  }
321 
322  int nEA_max=0;
323  for (int l=0;l<L;l++) if(nEA[l]>nEA_max) nEA_max=nEA[l];
324  for (int l=0;l<L;l++) if(nEA[l]>0) coverage[l]/=(double)nEA[l];
325  for (int l=0;l<L;l++) if(nEA[l]>0) nri[l]/=(double)nEA[l];
326  for (int l=0;l<L;l++) if(nEA[l]>0) mean[l]/=(double)nEA[l];
327  for (int l=0;l<L;l++) if(nEA[l]>0) snr_smooth[l]/=(double)nEA[l];
328 
329  double* tmp = new double[nEA_max];
330  int* index = new int[nEA_max];
331  for (int l=0;l<L;l++) if(nEA[l]>0) {
332  for (int n=0;n<nEA[l];n++) tmp[n]=EA[l][n];
333  TMath::Sort(nEA[l],tmp,index,false);
334  for (int n=0;n<nEA[l];n++) EA[l][n]=tmp[index[n]];
335  }
336  delete [] tmp;
337  delete [] index;
338 
339  double* EA50 = new double[L];
340  double* EA90 = new double[L];
341  for (int l=0;l<L;l++) if(nEA[l]>MIN_TRIGGERS_PER_PIXEL) {
342  EA50[l]=EA[l][nEA[l]/2];
343  EA90[l]=EA[l][(nEA[l]*9)/10];
344  } else {EA50[l]=0.; EA90[l]=0.;}
345 
346  // get label from file title
347  TObjArray* token = TString(ifName).Tokenize(TString("/"));
348  TObjString* otoken = (TObjString*)token->At(token->GetEntries()-1);
349  TString ifile_label = otoken->GetString();
350  ifile_label.ReplaceAll(".root","");
351  cout << "ifile_label " << ifile_label.Data() << endl;
352 
353  char title_label[256]="";
354  sprintf(title_label,"%s : ",pType.Data());
355  char cut_label[256]="";
356  sprintf(cut_label,"EC");
357 #ifdef CC_THR
358  sprintf(cut_label,"%s_cc_%.2f",cut_label,CC_THR);
359 #endif
360 #ifdef RHO_THR
361  sprintf(cut_label,"%s_rho_%.2f",cut_label,RHO_THR);
362 #endif
363 #ifdef ED_THR
364  sprintf(cut_label,"%s_ed_%.2f",cut_label,ED_THR);
365 #endif
366  sprintf(cut_label,"%s_R%dx%d",cut_label,int(ANGULAR_RESOLUTION),int(ANGULAR_RESOLUTION));
367  cout << "ANGULAR_RESOLUTION : " << ANGULAR_RESOLUTION << endl;
368  cout << "cut_label : " << cut_label << endl;
369 
370  gnetwork* gNET = new gnetwork;
371  for (int n=0;n<list->GetSize();n++) gNET->add(pDetector[n]);
372 
373  gNET->setSkyMaps(ANGULAR_RESOLUTION,0,180,0,360);
374  gNET->setAntenna();
375  gNET->setDelay(const_cast<char*>(pDetector[0]->Name));
376 
377  gskymap* gSM = gNET->GetGskymap();
379 // gSM->SetOptions("LVC experiment", 300,40, 1200, 670);
380 
381 #ifdef DISPLAY_WORLD_MAP
382  gSM->SetWorldMap();
383 #endif
384 
385  if (pType=="MEDIAN50") for (int l=0;l<L;l++) gSM->set(l,EA50[l]);
386  if (pType=="MEDIAN90") for (int l=0;l<L;l++) gSM->set(l,EA90[l]);
387  if (pType=="WRC50") for (int l=0;l<L;l++) gSM->set(l,EA50[l]);
388 
389  if (pType==("EFFICIENCY")) {
390  for (int l=0;l<L;l++) if (nMDC[l]>0) gSM->set(l,double(nEA[l])/nMDC[l]); else gSM->set(l,0.0);
391  }
392 
393  TH2D* h2 = (TH2D*)gSM->GetHistogram();
394  if (pType=="MEDIAN50") h2->GetZaxis()->SetRangeUser(0.5,50);
395  if (pType=="MEDIAN90") h2->GetZaxis()->SetRangeUser(0.5,50);
396  if (pType=="EFFICIENCY") h2->GetZaxis()->SetRangeUser(0.,1);
397  if (pType=="WRC50") h2->GetZaxis()->SetRangeUser(0.05,0.5);
398 
399  // set title
400  TString sTITLE=Title;
401  if(sTITLE=="") {
402  if (pType=="MEDIAN50") sTITLE = "Median Error Region 50%";
403  if (pType=="MEDIAN90") sTITLE = "Median Error Region 90%";
404  if (pType=="EFFICIENCY") sTITLE = "Efficiency";
405  if (pType=="WRC50") sTITLE = "Median Normalized Residual Energy 50%";
406  }
407  if(Tag!="") sTITLE=sTITLE+" "+Tag;
408  gSM->SetTitle(sTITLE);
409 
410  if (pType=="MEDIAN50") gSM->SetLogz(true);
411  if (pType=="MEDIAN90") gSM->SetLogz(true);
412  if (pType=="WRC50") gSM->SetLogz(true);
413  gSM->Draw(0);
414 
415 #ifdef DRAW_SITES
416  char ifostr[64]="";
417  for(int n=0; n<nIFO; n++) {
418  sprintf(ifostr,"%s %s",ifostr,pDetector[n]->Name);
419  }
420  cout << "oNetwork : " << ifostr << endl;
421 
422  // Set Network (only to print sites)
423  gNET->DrawSitesShortLabel(kBlack);
424  gNET->DrawSites(kBlack,2.0);
425  gNET->DrawSitesArms(1000000,kWhite,2.0);
426 #endif
427 
428  // compute median50% average over the sky
429  double MeanEA50=0;
430  int nMeanEA50=0;
431  for (int l=0;l<L;l++) if(nEA[l]>0) {MeanEA50+=EA50[l];nMeanEA50++;}
432  MeanEA50/=nMeanEA50;
433  cout << "MeanEA50 : " << MeanEA50 << endl;
434 
435  char skymap_file_name[256]="";
436 #ifdef WRITE_SKYMAP
437  if(type>0) {
438  sprintf(skymap_file_name,"SKYMAP_%s_%s_RES%d%s_%d.root",
439  pType.Data(),ifile_label.Data(),int(ANGULAR_RESOLUTION*10.),DATA_LABEL,type);
440  } else {
441  sprintf(skymap_file_name,"SKYMAP_%s_%s_RES%d%s.root",
442  pType.Data(),ifile_label.Data(),int(ANGULAR_RESOLUTION*10.),DATA_LABEL);
443  }
444  cout << skymap_file_name << endl;
445 /*
446  gskymap oSM(ANGULAR_RESOLUTION,0,180,0,360);
447  if (pType=="MEDIAN50") for (int l=0;l<L;l++) oSM.set(l,EA50[l]);
448  if (pType=="MEDIAN90") for (int l=0;l<L;l++) oSM.set(l,EA90[l]);
449  oSM.DumpObject(skymap_file_name);
450 */
451  gNET->DumpObject(skymap_file_name);
452 #endif
453 
454 #ifdef WRITE_PLOT
455  sprintf(skymap_file_name,"%s_%s_RES%d%s.png",
456  pType.Data(),ifile_label.Data(),int(ANGULAR_RESOLUTION*10.),DATA_LABEL);
457  cout << skymap_file_name << endl;
458  gSM->Print(skymap_file_name);
459  exit(0);
460 #endif
461 
462 }
463 
TH2D * GetHistogram()
Definition: gskymap.hh:120
gskymap * gSM
detectorParams getDetectorParams()
Definition: detector.cc:201
char cut[512]
gnetwork * gNET
#define SNR_THRESHOLD
Definition: DrawSkyMapPRC.C:55
size_t add(detector *)
param: detector structure return number of detectors in the network
Definition: network.cc:2528
void DrawSitesArms(double mlength=600000., Color_t lcolor=kBlack, Size_t lwidth=1.0, Style_t lstyle=1)
Definition: gnetwork.cc:295
printf("total live time: non-zero lags = %10.1f \n", liveTot)
void setAntenna(detector *)
param: detector (use theta, phi index array)
Definition: network.cc:2815
#define DATA_LABEL
Definition: DrawSkyMapPRC.C:34
int n
Definition: cwb_net.C:10
cout<< "skymap size : "<< L<< endl;for(int l=0;l< L;l++) sm.set(l, l);sm > const_cast< char * >("skymap.dat")
TString("c")
void set(size_t i, double a)
Definition: gskymap.hh:110
TH2F * ph
char ifostr[64]
double getTheta(size_t i)
Definition: skymap.hh:206
double getThetaStep(size_t i)
Definition: skymap.hh:224
void DumpObject(char *file)
Definition: gnetwork.cc:1473
Long_t size
double getPhiStep(size_t i)
Definition: skymap.hh:164
i drho i
TList * list
void Draw(int dpaletteId=0, Option_t *option="colfz")
Definition: gskymap.cc:442
#define MIN_TRIGGERS_PER_PIXEL
Definition: DrawSkyMapPRC.C:61
double rec_theta
#define nIFO
size_t getSkyIndex(double th, double ph)
param: theta param: phi
Definition: skymap.cc:702
void DrawSitesShortLabel(Color_t tcolor=kBlack, Size_t tsize=0.052, Font_t tfont=32)
Definition: gnetwork.cc:407
double rec_phi
void setSkyMaps(double sms, double t1, double t2, double p1, double p2)
Definition: gnetwork.hh:29
static const double SM
Definition: GNGen.cc:8
i() int(T_cor *100))
double * tmp
Definition: testWDM_5.C:31
char COORDINATES[256]
Definition: DrawSkyMapPRC.C:74
#define MAX_ENTRIES_PER_PIXEL
Definition: DrawSkyMapPRC.C:66
void DrawSites(Color_t mcolor=kBlack, Size_t msize=2.0, Style_t mstyle=20)
Definition: gnetwork.cc:238
#define nMDC
double inj_phi
void DrawSkyMapPRC(TString ifName, TString pType="MEDIAN50", int type=0, TString Title="", TString Tag="")
Definition: DrawSkyMapPRC.C:96
TObjArray * token
void setDelay(const char *="L1")
Definition: network.cc:2736
#define NPIX_SMOOTH
Definition: DrawSkyMapPRC.C:82
Definition: skymap.hh:45
char PROJECTION[256]
Definition: DrawSkyMapPRC.C:77
void SetTitle(TString title)
Definition: gskymap.hh:134
#define TREE_NAME
Definition: DrawSkyMapPRC.C:50
gskymap * GetGskymap()
Definition: gnetwork.hh:26
double getPhi(size_t i)
Definition: skymap.hh:146
ifstream in
void SetWorldMap(bool drawWorldMap=true)
Definition: gskymap.hh:136
double inj_theta
wavearray< int > index
void print()
Definition: detector.cc:1768
void SetLogz(bool isLogz=true)
Definition: gskymap.hh:130
int l
Definition: cbc_plots.C:434
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)
TTree * itree
#define ANGULAR_RESOLUTION
Definition: DrawSkyMapPRC.C:81
snr * snr
Definition: ComputeSNR.C:71
size_t size()
Definition: skymap.hh:118
void Print(TString pname)
Definition: gskymap.cc:1104
void SetOptions(TString projection="hammer", TString coordinate="Geographic", double resolution=1, bool goff=false)
Definition: gskymap.cc:66
#define RHO_THR
Definition: DrawSkyMapPRC.C:52
#define CC_THR
Definition: DrawSkyMapPRC.C:53
exit(0)