27 #pragma GCC system_header 34 #include "TObjArray.h" 35 #include "TObjString.h" 36 #include "TPaletteAxis.h" 37 #include "TMultiLayerPerceptron.h" 38 #include "TMLPAnalyzer.h" 51 #define nIFO 3 // number of detectors 54 #define CREATE_NETWORK 64 if (!gROOT->GetClass(
"TMultiLayerPerceptron")) {
65 gSystem->Load(
"libMLP");
77 if(nTrain>nTrainBg) maxTrain=nTrain;
78 else maxTrain=nTrainBg;
80 TFile*
ifile=TFile::Open(TREE_FILE.Data());
81 TTree* NNTree=(TTree*)ifile->Get(
"nnTree");
85 int entries=NNTree->GetEntries();
86 cout<<
"entries: "<<entries<<endl;
95 NNTree->SetBranchAddress(
"#Entries_type",&entriesTot);
96 NNTree->SetBranchAddress(
"Matrix_dim",&ndim);
97 NNTree->SetBranchAddress(
"#inputs",&ninp);
98 NNTree->SetBranchAddress(
"amplitude_mode",&y);
101 sig_entries=entriesTot;
102 NNTree->GetEntry(entries-1);
103 bg_entries=entriesTot;
107 cout<<
"NDIM "<<NDIM<<endl;
108 cout<<
"nINP"<<nINP<<endl;
110 cout<<
"sig e "<<sig_entries<<endl;
111 cout<<
"bg e "<<bg_entries<<endl;
114 if(sig_entries==bg_entries) cout<<
"Error: training with a single type of event"<<endl;
116 if(bg_entries<nTrainBg){cout<<
"Error: Bg: num train>num events"<<endl;
118 if(sig_entries<nTrain) {cout<<
"Error: Sig: num train>num events"<<endl;
121 if(!nTrainBg) nTrainBg=bg_entries;
122 if(!nTrain) nTrain=sig_entries;
135 TreeF.ReplaceAll(
"/home/serena.vinciguerra/",
"");
136 TreeF.ReplaceAll(
"/",
"_");
137 TreeF.ReplaceAll(
".root",
"");
139 structure.ReplaceAll(
":",
"_");
141 sprintf(nomeNN,
"NN/mlpNetwork_colored_nTS%i_nTB%i_structure%s_lm%i_epochs%i_s%i_b%i_ROC_TREEfile_%s.root",nTrain,nTrainBg,structure.Data(),lm,nepoch,q,p,TreeF.Data());
144 sprintf(nameTrain,
"PropertyGraphs/mlpNetwork_colored_nTS%i_nTB%i_s%i_b%i_TREEfile_%s.root",nTrain,nTrainBg,q,p,TreeF.Data());
149 NNTree->SetBranchAddress(
"Files_name",&FILE_NAME);
152 NNTree->GetEntry(entries-1);
154 cout<<
"fine ifdef RHO_CC"<<endl;
157 TString FileSelectName(nameTrain);
159 FileSelectName.ReplaceAll(
"PropertyGraphs/mlpNetwork",
"selectTREE/TreeTrain");
160 TFile *f0=TFile::Open(FileSelectName.Data(),
"read");
165 std::vector<int>* choice=
new vector<int>;
166 cout<<
"vector definition"<<endl;
168 for (
int z=0;
z<nTrain;
z++) choice->push_back(q+
z);
170 for (
int z=0;
z<nTrainBg;
z++) choice->push_back(
z+p);
174 cout<<
"new file created"<<endl;
177 nomefile=FileSelectName.Data();
178 cout<<
"open file-Train pre-existing: "<<nomefile.Data()<<endl;
183 TFile* fsel=TFile::Open(nomefile.Data());
184 TTree* tTrain1=(TTree*)fsel->Get(
"nnTree");
185 cout<<
"def Tree per Train"<<endl;
189 char ilabel[nINP][16];
191 for(
int i=0;
i<nINP;
i++) {
196 tTrain1->SetBranchAddress(ilabel[i], &x[i]);
198 tTrain1->SetBranchAddress(
"type",&type);
201 char wlabel[nINP][16];
204 for(
int i=0;
i<nINP;
i++) {
207 tTrain1->SetBranchAddress(wlabel[i], &w[i]);
211 tTrain1->SetBranchAddress(
"w",&w);
216 TChain sigTree(
"waveburst");
217 sigTree.Add(SIG_FILE.Data());
220 cout <<
"sig entries2 : " << sig_entries2 << endl;
222 TChain bgTree(
"waveburst");
223 bgTree.Add(BG_FILE.Data());
226 cout <<
"bg entries2 : " << bg_entries2 << endl;
228 TH1F *ibg =
new TH1F(
"bgh",
"rho[0]", 50, 0, 50);
229 TH1F *isig =
new TH1F(
"sigh",
"rho[0]", 50, 0, 18);
230 TH1F *ibg2 =
new TH1F(
"bgh2",
"netcc[1]", 50, 0, 1.2);
231 TH1F *isig2 =
new TH1F(
"sigh2",
"netcc[1]", 50, 0, 1.1);
235 ibg->SetDirectory(0);
236 isig->SetDirectory(0);
237 ibg2->SetDirectory(0);
238 isig2->SetDirectory(0);
247 TTree* t_NNout=
new TTree(
"rho_cc_NNout",
"rho_cc_NNout");
252 t_NNout->Branch(
"rho",&rho_NN,
"rho/D");
253 t_NNout->Branch(
"cc",&cc_NN,
"cc/D");
254 t_NNout->Branch(
"type",&NNtype,
"type/I");
255 t_NNout->Branch(
"NNout",&NNout,
"NNout/D");
257 for(
int h=q;
h<q+nTrain;
h++){
259 if(q%2==0) resto0=(
h)%2;
262 if (resto0==0&&
h<q+2) minCC=(double)signal.
netcc[1];
263 if (resto0==0&&
h<q+2) minRHO=(double)signal.
rho[0];
264 if (signal.
rho[0]<minRHO&&resto0==0)minRHO=(double)signal.
rho[0];
265 if (signal.
netcc[1]<minCC&&resto0==0)minCC=(double)signal.
netcc[1];
266 if (signal.
rho[0]>maxRHO&&resto0==0)maxRHO=(double)signal.
rho[0];
267 if (signal.
netcc[1]>maxCC&&resto0==0)maxCC=(double)signal.
netcc[1];
268 isig->Fill(signal.
rho[0]);
269 isig2->Fill(signal.
netcc[1]);
272 for(
int h=(p-sig_entries);
h<(p-sig_entries+nTrainBg);
h++){
274 if((p-sig_entries+nTrainBg)%2==0) resto0=(
h)%2;
277 if (resto0==0&&
h<q+2) minCC=(double)signal.
netcc[1];
278 if (resto0==0&&
h<q+2) minRHO=(double)signal.
rho[0];
279 if (background.
rho[0]<minRHO&&resto0==0)minRHO=(double)background.
rho[0];
280 if (background.
netcc[1]<minCC&&resto0==0)minCC=(double)background.
netcc[1];
281 if (background.
rho[0]>maxRHO&&resto0==0)maxRHO=(double)background.
rho[0];
282 if (background.
netcc[1]>maxCC&&resto0==0)maxCC=(double)background.
netcc[1];
283 ibg->Fill(background.
rho[0]);
284 ibg2->Fill(background.
netcc[1]);
286 cout<<
"max RHO"<<maxRHO<<
" maxCC "<<maxCC<<
" minRHO "<<minRHO<<
" minCC "<<minCC<<endl;
289 if (rm!=0) maxRHO=rm;
293 for (
int i=0;i<nINP-1;i++) {
300 sprintf(add1,
"@%s:%s:type",ilabel[nINP-1],option.Data());
302 cout<<layout.Data()<<endl;
309 #ifdef CREATE_NETWORK 310 TCanvas *errors=
new TCanvas(
"errors",
"errors",0,0,600,600);
311 TMultiLayerPerceptron *mlp =
new TMultiLayerPerceptron(layout,
"w",tTrain1,
"Entry$%2",
"(Entry$+1)%2");
312 if (lm==1)mlp->SetLearningMethod(TMultiLayerPerceptron::kStochastic);
313 if(lm==2)mlp->SetLearningMethod(TMultiLayerPerceptron::kBatch);
314 if(lm==3)mlp->SetLearningMethod(TMultiLayerPerceptron::kSteepestDescent);
315 if(lm==4)mlp->SetLearningMethod(TMultiLayerPerceptron::kRibierePolak);
316 if(lm==5)mlp->SetLearningMethod(TMultiLayerPerceptron::kFletcherReeves);
317 if(lm==6)mlp->SetLearningMethod(TMultiLayerPerceptron::kBFGS);
319 cout<<
"Invalid Learning Method:1<=lm<=6"<<endl;
323 mlp->Train(nepoch,
"text,current,graph,update=10");
327 PNGname.ReplaceAll(
"NN/",
"ErrorGraphs/");
328 PNGnameroot.ReplaceAll(
"NN/",
"ErrorGraphs/");
329 PNGname.ReplaceAll(
".root",
".png");
331 errors->SaveAs(PNGname.Data());
332 errors->Print(PNGnameroot.Data());
336 TFile fnet(nomeNN,
"RECREATE");
342 cout<<
"ci sono"<<endl;
344 cout<<
"non ci sono più"<<endl;
346 TMultiLayerPerceptron *mlp = (TMultiLayerPerceptron*)fnet.Get(
"TMultiLayerPerceptron");
347 if(mlp==NULL) {cout <<
"Error getting mlp" << endl;
exit(1);}
352 TCanvas* mlpa_canvas =
new TCanvas(
"mlpa_canvas",
"Network analysis");
354 mlpa_canvas->Divide(2,2);
358 ibg->SetLineColor(kBlue);
359 ibg->SetFillStyle(3008); ibg->SetFillColor(kBlue);
360 isig->SetLineColor(kRed);
361 isig->SetFillStyle(3003); isig->SetFillColor(kRed);
368 TLegend *ilegend =
new TLegend(.75, .80, .95, .95);
369 ilegend->AddEntry(ibg,
"Background");
370 ilegend->AddEntry(isig,
"Signal");
372 cout <<
"Integral ibg : " << ibg->GetEntries() << endl;
373 cout <<
"Integral isig : " << isig->GetEntries() << endl;
380 ibg2->SetLineColor(kBlue);
381 ibg2->SetFillStyle(3008); ibg2->SetFillColor(kBlue);
382 isig2->SetLineColor(kRed);
383 isig2->SetFillStyle(3003); isig2->SetFillColor(kRed);
388 TLegend *ilegend2 =
new TLegend(.75, .80, .95, .95);
389 ilegend2->AddEntry(ibg2,
"Background");
390 ilegend2->AddEntry(isig2,
"Signal");
392 cout <<
"Integral ibg : " << ibg2->GetEntries() << endl;
393 cout <<
"Integral isig : " << isig2->GetEntries() << endl;
398 TMLPAnalyzer ana(mlp);
400 ana.GatherInformations();
403 #ifdef CREATE_NETWORK 415 ana.DrawNetwork(0,
"type==1",
"type==0");
417 mlpa_canvas->Divide(1,2);
422 ana.DrawNetwork(0,
"type==1",
"type==0");
427 TTree*
t=
new TTree(
"info",
"info");
428 t->Branch(
"amplitude_mode",&y,
"amplitude_mode/I");
430 t->Branch(
"Matrix_dim",&ndim,
"Matrix_dim/I");
432 t->Branch(
"#inputs",&ninp,
"#inputs/I");
434 sprintf(NNname,
"%s",option.Data());
435 t->Branch(
"NNname",&NNname,
"NNname/C");
436 t->Branch(
"#trainBg",&nTrainBg,
"#trainBg/I");
437 t->Branch(
"#trainSig",&nTrain,
"#trainSig/I");
440 t->Branch(
"Rand_start_Bg",&p,
"Rand_start_Bg/I");
441 t->Branch(
"Rand_start_Sig",&q,
"Rand_start_Sig/I");
442 t->Branch(
"epochs",&nepoch,
"epocs/I");
443 t->Branch(
"learning_method",&lm,
"learning_method/I");
449 double errTot=mlp->GetError(TMultiLayerPerceptron::kTest);
453 mlpa_canvas->Write();
456 CanvNN.ReplaceAll(
"NN/",
"mlpa_canv/");
457 CanvNNroot.ReplaceAll(
"NN/",
"mlpa_canv/");
458 CanvNN.ReplaceAll(
".root",
".png");
459 mlpa_canvas->SaveAs(CanvNN.Data());
460 mlpa_canvas->Print(CanvNNroot.Data());
470 float thres0[npunti+1];
475 for (
int i=0;i<=npunti;i++){
484 passo=(
log(1.1)-
log(0.5))/(npunti/2);
485 cout<<
"passo "<<passo<<endl;
487 cout<<
"soglia0 "<<thres0[0]<<endl;
488 for(
int i=npunti;i>npunti/2;i--) {
489 thres0[i-1]=thres0[
i]*exp(passo);}
490 for(
int i=0;i<(npunti/2);i++) {
491 thres0[npunti/2+i+1]=1.6 -thres0[npunti/2+i+1];
492 thres0[npunti/2-i-1]=1.-thres0[npunti/2+i+1];
497 thres0[npunti/2]=0.5;
498 for(
int i=0;i<(npunti);i++) {
499 cout<<thres0[
i]<<endl;
511 TH2D* PUREZZA_S=
new TH2D(
"Purezza",
"Purezza",
NCC,minCC,maxCC,
NRHO,minRHO,maxRHO);
512 TH2D* h2BgO_R=
new TH2D(
"rho_cc_out",
"rho_cc_out",50,0.,50,50,-0.5,1.5);
513 TH2D* h2SigO_R=
new TH2D(
"rho_cc_out",
"rho_cc_out",50,0.,50,50,-0.5,1.5);
514 TH2D* h2BgR_C=
new TH2D(
"rho_cc_out",
"rho_cc_out",50,0.,1.2,50,0.,50);
515 TH2D* h2SigR_C=
new TH2D(
"rho_cc_out",
"rho_cc_out",50,0.,1.2,50,0.,50);
516 TH2D* h2Bg=
new TH2D(
"rho_cc_out",
"rho_cc_out",50,0.,1.2,50,-0.5,1.5);
517 TH2D* h2Sig=
new TH2D(
"rho_cc_out",
"rho_cc_out",50,0.,1.2,50,-0.5,1.5);
518 h2Bg->SetDirectory(0);
519 h2Sig->SetDirectory(0);
520 PUREZZA_S->SetDirectory(0);
536 for (
int ii=0;ii<
NRHO; ii++) {
538 for (
int ji=0;ji<
NCC; ji++) {
539 if (ii==0) cc1[ji]=0.;
546 deltacc=(maxCC-
minCC)/NCC;
549 deltarho=(maxRHO-minRHO)/NRHO;
551 for (
int ii=0;ii<
NRHO;ii++) {
552 rho1[ii]=maxRHO-(ii+1)*deltarho;
561 for (
int ji=0;ji<
NCC;ji++) {
562 cc1[ji]=(ji)*deltacc+minCC;
571 for (
int i = 0; i <(double)tTrain1->GetEntries(); i++)
573 tTrain1->GetEntry(i);
574 for (
int j=0;
j<nINP;
j++)
577 params[
j]=(double)x[
j];
580 double output=mlp->Evaluate(0,params);
588 rho_NN=(double)signal.
rho[0];
589 cc_NN=(
double)signal.
netcc[1];
593 rho_NN=(double)background.
rho[0];
594 cc_NN=(
double)background.
netcc[1];
599 if (type==1&&resto==0){
600 sigTree.GetEntry(i+q);
601 h2SigO_R->Fill(signal.
rho[0],output);
602 for (
int ii=0; ii<
NRHO;ii++){
603 if (signal.
rho[0]>=rho1[ii]) {
604 for (
int ji=0;ji<
NCC;ji++){
605 if (signal.
netcc[1]>=cc1[ji]) {
606 if (output>0.5){ pur[ii*NRHO+ji]=pur[ii*NRHO+ji]+1;
607 tot[ii*NRHO+ji]=tot[ii*NRHO+ji]+1;
613 if (output<0.1) cout<<
"output<0.1, while type=1 event_index: "<<i+q<<
" of file: "<<SIG_FILE.Data()<<endl;
614 h2SigR_C->Fill(signal.
netcc[1],signal.
rho[0]);
615 h2Sig->Fill(signal.
netcc[1],output);
617 if (type==0&&resto==0){
618 bgTree.GetEntry(p-sig_entries+i-nTrain);
619 h2BgO_R->Fill(background.
rho[0],output);
620 for (
int ii=0; ii<
NRHO;ii++){
621 for (
int ji=0;ji<
NCC;ji++){
622 if (background.
rho[0]>rho1[ii]) {
623 if (background.
netcc[1]>cc1[ji]) {
624 if (output>0.5) { tot[ii*NRHO+ji]=tot[ii*NRHO+ji]+1;
630 if (output>0.9) cout<<
"output>0.9, while type=0 event_index: "<<p-sig_entries+i-nTrain<<
" of file: "<<BG_FILE.Data()<<endl;
631 h2BgR_C->Fill(background.
netcc[1],background.
rho[0]);
632 h2Bg->Fill(background.
netcc[1],output);
639 while(output<thres0[j]&&(j>0)) j=j-1;
640 for (
int k=npunti;
k>=0;
k--){
642 if(
k<=j) FA[
k]=FA[
k]+1;}
645 if(
k<=j) TA[
k]=TA[
k]+1; }
654 while(output<thres0[j]&&(j>0)) j=j-1;
655 for (
int k=npunti;
k>=0;
k--){
657 if(
k<=j) FA1[
k]=FA1[
k]+1;}
660 if(
k<=j) TA1[
k]=TA1[
k]+1; }
662 tmedio1=tmedio1+type;
664 yy1=output*output+yy1;
677 NNoutName.ReplaceAll(
"NN/",
"NNout/NNout_");
678 TFile* f_NNout=
new TFile(NNoutName,
"RECREATE");
683 for (
int ii=0;ii<
NRHO; ii++)
for (
int ji=0;ji<
NCC; ji++) {
684 cout<<
" pur "<<pur[NRHO*ii+ji]<<
" tot "<<tot[NRHO*ii+ji]<<
" cc "<<cc1[ji]<<
" rho "<<rho1[ii];
686 if(tot[NRHO*ii+ji]>0) pur[NRHO*ii+ji]=pur[NRHO*ii+ji]/tot[NRHO*ii+ji];
687 cout<<
" pur_fin "<<pur[NRHO*ii+ji];
691 if(tot[NRHO*ii+ji]>0) PUREZZA_S->Fill(cc1[ji]+deltacc/2,rho1[ii]+deltarho/2,pur[NRHO*ii+ji]);
693 h2Bg->SetMarkerStyle(7);
694 h2Sig->SetMarkerStyle(6);
695 h2Bg->SetMarkerColor(4);
696 h2Sig->SetMarkerColor(2);
697 h2BgO_R->SetMarkerStyle(7);
698 h2SigO_R->SetMarkerStyle(6);
699 h2BgO_R->SetMarkerColor(4);
700 h2SigO_R->SetMarkerColor(2);
701 h2BgR_C->SetMarkerStyle(7);
702 h2SigR_C->SetMarkerStyle(6);
703 h2BgR_C->SetMarkerColor(4);
704 h2SigR_C->SetMarkerColor(2);
708 TCanvas *cRHO_CC_OUT=
new TCanvas(
"RHO_CC_NNOUT",
"RHO_CC_NNOUT",1200,700);
710 cRHO_CC_OUT->Divide(2,2);
711 cRHO_CC_OUT->cd(1)->SetTitle(
"OUT_CC");
712 h2Bg->GetXaxis()->SetTitle(
"cc");
713 h2Bg->GetYaxis()->SetTitle(
"NNoutput");
714 h2Bg->GetZaxis()->SetTitle(
"count");
717 cRHO_CC_OUT->cd(2)->SetTitle(
"OUT_RHO");
718 h2BgO_R->GetXaxis()->SetTitle(
"rho");
719 h2BgO_R->GetYaxis()->SetTitle(
"NNoutput");
720 h2BgO_R->GetZaxis()->SetTitle(
"count");
722 h2SigO_R->Draw(
"same");
723 cRHO_CC_OUT->cd(3)->SetTitle(
"RHO_CC");
724 h2BgR_C->GetXaxis()->SetTitle(
"cc");
725 h2BgR_C->GetYaxis()->SetTitle(
"rho");
726 h2BgR_C->GetZaxis()->SetTitle(
"count");
728 h2SigR_C->Draw(
"same");
729 cRHO_CC_OUT->cd(4)->SetTitle(
"PUREZZA");
730 PUREZZA_S->SetStats(0);
731 PUREZZA_S->GetXaxis()->SetTitle(
"cc");
732 PUREZZA_S->GetYaxis()->SetTitle(
"rho");
733 PUREZZA_S->GetZaxis()->SetTitle(
"count");
734 PUREZZA_S->Draw(
"colz");
736 TString cRHO_CC_OUTname(nomeNN);
737 TString cRHO_CC_OUTnameroot(nomeNN);
738 cRHO_CC_OUTname.ReplaceAll(
".root",
".png");
739 cRHO_CC_OUTnameroot.ReplaceAll(
"NN/mlpNetwork",
"CC_OUT/RHO_CC_OUTgraph");
740 cRHO_CC_OUTname.ReplaceAll(
"NN/mlpNetwork",
"CC_OUT/RHO_CC_OUTgraph");
741 cRHO_CC_OUT->SaveAs(cRHO_CC_OUTname.Data());
742 cRHO_CC_OUT->Print(cRHO_CC_OUTnameroot.Data());
744 tmedio1=tmedio1/nTrain;
745 ymedio1=ymedio1/nTrain;
749 tmedio=tmedio/nTrain;
750 ymedio=ymedio/nTrain;
754 cout<<
"tmedio1: "<<tmedio1<<
" ymedio1 "<<ymedio1<<
" tt1 "<<tt1<<
" yy1 "<<yy1<<
" ty1 "<<ty1<<
" entries "<<entries<<endl;
757 corr1=(ty1-nTrain*ymedio1*tmedio1)/sqrt((tt1-nTrain*tmedio1*tmedio1)*(yy1-nTrain*ymedio1*ymedio1));
758 corr=(ty-nTrain*ymedio*tmedio)/sqrt((tt-nTrain*tmedio*tmedio)*(yy-nTrain*ymedio*ymedio));
759 cout<<
"corr "<<corr<<endl;
760 cout<<
"corr1 "<<corr1<<endl;
763 for (
int k=0;
k<=npunti;
k++) {
766 TA1[
k]=(TA1[
k]/nTrain)*2;
767 TA[
k]=(TA[
k]/nTrain)*2;
769 FA1[
k]=(FA1[
k]/nTrainBg)*2;
770 FA[
k]=(FA[
k]/nTrainBg)*2;
773 cout<<
"ng "<<nf.Data()<<endl;
774 char nomefileTest[516];
777 sprintf(nomefileTest,
"thresFiles/thres_np%i_Test_onTrainSet_",npunti2);
778 nf.ReplaceAll(
"NN/mlpNetwork",nomefileTest);
779 cout<<
"nf "<<nf.Data()<<endl;
780 TFile *
gfile=
new TFile(nf.Data(),
"RECREATE");
783 TGraph* gROC1=
new TGraph(npunti+1,FA1,TA1);
784 gROC1->SetTitle(
"ROC_train(threshold)");
785 gROC1->SetMarkerStyle(7);
786 TGraph* gFA1=
new TGraph(npunti+1,thres0,FA1);
787 gFA1->SetTitle(
"False Alarm _train(threshold)");
788 gFA1->SetMarkerStyle(7);
789 TGraph* gTA1=
new TGraph(npunti+1,thres0,TA1);
790 gTA1->SetTitle(
"Efficiency _train(threshold)");
791 gTA1->SetMarkerStyle(7);
793 TGraph* gROC=
new TGraph(npunti+1,FA,TA);
794 gROC->SetTitle(
"ROC_test(threshold)");
795 gROC->SetMarkerStyle(7);
796 TGraph* gFA=
new TGraph(npunti+1,thres0,FA);
797 gFA->SetTitle(
"False Alarm _test(threshold)");
798 gFA->SetMarkerStyle(7);
799 TGraph* gTA=
new TGraph(npunti+1,thres0,TA);
800 gTA->SetTitle(
"Efficiency _test(threshold)");
801 gTA->SetMarkerStyle(7);
803 TCanvas *cROC=
new TCanvas(
"ROC_graph",
"ROC_graph");
805 cROC->cd(2)->SetLogx();
809 cROC->cd(6)->SetLogy();
812 cROC->cd(4)->SetLogy();
814 cROC->cd(1)->SetLogx();
818 cROC->cd(5)->SetLogy();
821 cROC->cd(3)->SetLogy();
827 CANV_NAME.ReplaceAll(
"NN/mlpNetwork",
"TRAIN_GRAPHS/ROC");
828 CANV_NAMEroot.ReplaceAll(
"NN/mlpNetwork",
"TRAIN_GRAPHS/ROC");
829 CANV_NAME.ReplaceAll(
".root",
".png");
830 cROC->SaveAs(CANV_NAME.Data());
831 cROC->Print(CANV_NAMEroot.Data());
834 TTree *ThTree=
new TTree(
"ROC",
"ROC");
840 sprintf(FAlabel1,
"FalseAlarm_train[%i]/F",npunti);
841 sprintf(TAlabel1,
"TrueAlarm_train[%i]/F",npunti);
842 sprintf(FAlabel,
"FalseAlarm_test[%i]/F",npunti);
843 sprintf(TAlabel,
"TrueAlarm_test[%i]/F",npunti);
844 sprintf(thlabel,
"thresholds[%i]/F",npunti);
846 ThTree->Branch(
"FalseAlarm_test",&FA,FAlabel);
847 ThTree->Branch(
"FalseAlarm_train",&FA1,FAlabel1);
849 ThTree->Branch(
"Efficiency_train",&TA1,TAlabel1);
850 ThTree->Branch(
"Efficiency_test",&TA,TAlabel);
852 ThTree->Branch(
"thresholds",&thres0,thlabel);
853 ThTree->Branch(
"correlation_train",&corr1,
"correlation_train/D");
854 ThTree->Branch(
"correlation_test",&corr,
"correlation_test/D");
857 ThTree->Branch(
"#points",&u,
"#points/I");
874 TFile* fOriginal=TFile::Open(ORIGINAL_FILE.Data());
875 TTree* tOriginal=(TTree*)fOriginal->Get(
"nnTree");
877 if((choice->size())>(tOriginal->GetEntries())){cout<<
"Error:startB+nTrainB>Entries"<<endl;
883 tOriginal->SetBranchAddress(
"#inputs",&ninp);
884 tOriginal->GetEntry(0);
887 int const NDIM=sqrt(nINP);
890 TTree*
t=
new TTree(
"nnTree",
"nnTree");
893 tOriginal->SetBranchAddress(
"type",&type);
894 t->Branch(
"type",&type,
"type/I");
897 char xlabel[nINP][16];
898 char xllabel[nINP][16];
901 char wlabel[nINP][16];
902 char wllabel[nINP][16];
905 tOriginal->SetBranchAddress(
"w",&w);
906 t->Branch(
"w",&w,
"w/F");
911 char SDlabels[nINP][16];
912 char SDllabels[nINP][16];
914 char RMSlabels[nINP][16];
915 char RMSllabels[nINP][16];
916 float averages[nINP];
917 char averagelabels[nINP][16];
918 char averagellabels[nINP][16];
920 char SDlabelb[nINP][16];
921 char SDllabelb[nINP][16];
923 char RMSlabelb[nINP][16];
924 char RMSllabelb[nINP][16];
925 float averageb[nINP];
926 char averagelabelb[nINP][16];
927 char averagellabelb[nINP][16];
929 char SDlabel[nINP][16];
930 char SDllabel[nINP][16];
932 char RMSlabel[nINP][16];
933 char RMSllabel[nINP][16];
935 char averagelabel[nINP][16];
936 char averagellabel[nINP][16];
938 TTree *tTrainTest=
new TTree(
"trainTEST",
"trainTEST");
941 for (
int i=0;
i<nINP;
i++){
954 sprintf(xllabel[i],
"%s/F",xlabel[i]);
955 tOriginal->SetBranchAddress(xlabel[i],&x[i]);
956 t->Branch(xlabel[i],&x[i],xllabel[i]);
959 sprintf(wllabel[i],
"%s/F",wlabel[i]);
960 tOriginal->SetBranchAddress(wlabel[i],&w[i]);
961 t->Branch(wlabel[i],w[i],wllabel[i]);
968 for (
int k=0;
k<choice->size();
k++){
970 tOriginal->GetEntry((*choice)[
k]);
972 for (
int i=0;
i<nINP;
i++){
973 RMS[
i]=RMS[
i]+x[
i]*x[
i];
974 average[
i]=average[
i]+x[
i];
976 RMSs[
i]=RMSs[
i]+x[
i]*x[
i];
977 averages[
i]=averages[
i]+x[
i];
980 RMSb[
i]=RMSb[
i]+x[
i]*x[
i];
981 averageb[
i]=averageb[
i]+x[
i];
985 for (
int u=0;u<
k;u++)
if( (*choice)[u]==(*choice)[k]) {cout<<
"Error:same event taken 2 times"<<
"u "<<u<<
" choise "<<(*choice)[u]<<endl;
exit(0);}
996 int Ntest=choice->size();
1002 TH2D *RMShs=
new TH2D(
"RMShs",
"RMShs",NDIM,0,NDIM,NDIM,0,NDIM);
1003 TH2D *AVhs=
new TH2D(
"AVhs",
"Avhs",NDIM,0,NDIM,NDIM,0,NDIM);
1004 TH2D *SDhs=
new TH2D(
"SDhs",
"SDhs",NDIM,0,NDIM,NDIM,0,NDIM);
1005 TH2D *RMShb=
new TH2D(
"RMShb",
"RMShb",NDIM,0,NDIM,NDIM,0,NDIM);
1006 TH2D *AVhb=
new TH2D(
"AVhb",
"Avhb",NDIM,0,NDIM,NDIM,0,NDIM);
1007 TH2D *SDhb=
new TH2D(
"SDhb",
"SDhb",NDIM,0,NDIM,NDIM,0,NDIM);
1008 TH2D *RMSh=
new TH2D(
"RMSh",
"RMSh",NDIM,0,NDIM,NDIM,0,NDIM);
1009 TH2D *AVh=
new TH2D(
"AVh",
"Avh",NDIM,0,NDIM,NDIM,0,NDIM);
1010 TH2D *SDh=
new TH2D(
"SDh",
"SDh",NDIM,0,NDIM,NDIM,0,NDIM);
1026 for (
int i=0;
i<nINP;
i++){
1027 RMSs[
i]=RMSs[
i]/Ntest*2;
1028 averages[
i]=averages[
i]/Ntest*2;
1029 SDs[
i]=RMSs[
i]-pow(averages[
i],2);
1030 SDs[
i]=pow(SDs[i],0.5);
1031 RMSs[
i]=pow(RMSs[i],0.5);
1033 cout <<
"SIGNAL: " << averages[
i] <<
" " << RMSs[
i] <<
" " << SDs[
i] << endl;
1035 RMSb[
i]=RMSb[
i]/Ntest*2;
1036 averageb[
i]=averageb[
i]/Ntest*2;
1037 SDb[
i]=RMSb[
i]-pow(averageb[i],2);
1038 SDb[
i]=pow(SDb[i],0.5);
1039 RMSb[
i]=pow(RMSb[i],0.5);
1041 cout <<
"BKG: " << averageb[
i] <<
" " << RMSb[
i] <<
" " << SDb[
i] << endl;
1043 RMS[
i]=RMS[
i]/Ntest;
1044 average[
i]=average[
i]/Ntest;
1045 SD[
i]=RMS[
i]-pow(average[i],2);
1046 SD[
i]=pow(SD[i],0.5);
1047 RMS[
i]=pow(RMS[i],0.5);
1049 cout <<
"ALL: " << average[
i] <<
" " << RMS[
i] <<
" " << SD[
i] << endl;
1051 sprintf(SDlabels[i],
"SDs%i",i+1);
1052 sprintf(SDllabels[i],
"%s/F",SDlabels[i]);
1053 tTrainTest->Branch(SDlabels[i],&SDs[i],SDllabels[i]);
1054 sprintf(RMSlabels[i],
"RMSs%i",i+1);
1055 sprintf(RMSllabels[i],
"%s/F",RMSlabels[i]);
1056 tTrainTest->Branch(RMSlabels[i],&RMSs[i],RMSllabels[i]);
1057 sprintf(averagelabels[i],
"averages%i",i+1);
1058 sprintf(averagellabels[i],
"%s/F",averagelabels[i]);
1059 tTrainTest->Branch(averagelabels[i],&averages[i],averagellabels[i]);
1060 sprintf(SDlabelb[i],
"SDb%i",i+1);
1061 sprintf(SDllabelb[i],
"%s/F",SDlabelb[i]);
1062 tTrainTest->Branch(SDlabelb[i],&SDb[i],SDllabelb[i]);
1063 sprintf(RMSlabelb[i],
"RMSb%i",i+1);
1064 sprintf(RMSllabelb[i],
"%s/F",RMSlabelb[i]);
1065 tTrainTest->Branch(RMSlabelb[i],&RMSb[i],RMSllabelb[i]);
1066 sprintf(averagelabelb[i],
"averageb%i",i+1);
1067 sprintf(averagellabelb[i],
"%s/F",averagelabelb[i]);
1068 tTrainTest->Branch(averagelabelb[i],&averageb[i],averagellabelb[i]);
1069 sprintf(SDlabel[i],
"SD%i",i+1);
1070 sprintf(SDllabel[i],
"%s/F",SDlabel[i]);
1071 tTrainTest->Branch(SDlabel[i],&SD[i],SDllabel[i]);
1072 sprintf(RMSlabel[i],
"RMS%i",i+1);
1073 sprintf(RMSllabel[i],
"%s/F",RMSlabel[i]);
1074 tTrainTest->Branch(RMSlabel[i],&RMS[i],RMSllabel[i]);
1075 sprintf(averagelabel[i],
"average%i",i+1);
1076 sprintf(averagellabel[i],
"%s/F",averagelabel[i]);
1077 tTrainTest->Branch(averagelabel[i],&average[i],averagellabel[i]);
1087 RMShs->Fill(ti,fi,RMSs[i]);
1088 AVhs->Fill(ti,fi,averages[i]);
1089 SDhs->Fill(ti,fi,SDs[i]);
1090 RMShb->Fill(ti,fi,RMSb[i]);
1091 AVhb->Fill(ti,fi,averageb[i]);
1092 SDhb->Fill(ti,fi,SDb[i]);
1093 RMSh->Fill(ti,fi,RMS[i]);
1094 AVh->Fill(ti,fi,average[i]);
1095 SDh->Fill(ti,fi,SD[i]);
1100 TCanvas *cProp=
new TCanvas (
"TrainSet_Properties",
"TrainSet_Properties",0,0,900,600);
1103 RMSh->SetTitle(
"RMS");
1106 AVh->SetTitle(
"Average");
1109 SDh->SetTitle(
"SD");
1112 RMShs->SetTitle(
"RMS_s");
1113 RMShs->Draw(
"COLZ");
1115 AVhs->SetTitle(
"Average_s");
1118 SDhs->SetTitle(
"SD_s");
1121 RMShb->SetTitle(
"RMS_b");
1122 RMShb->Draw(
"COLZ");
1124 AVhb->SetTitle(
"Average_b");
1127 SDhb->SetTitle(
"SD_b");
1131 TString Prop_nameroot(IDname);
1132 Prop_name.ReplaceAll(
".root",
"Prop.png");
1133 Prop_nameroot.ReplaceAll(
".root",
"Prop.root");
1134 cProp->SaveAs(Prop_name.Data());
1135 cProp->Print(Prop_nameroot.Data());
1138 int ent=t->GetEntries();
1139 if (choice->size()!=ent) cout<<
"Error in Tree dimension: Entries new tree="<<t->GetEntries()<<
" vector->size"<<choice->size()<<endl;
1144 NOME_FILE.ReplaceAll(
"PropertyGraphs/mlpNetwork",
"selectTREE/TreeTrain");
1145 TFile*
ofile=
new TFile(NOME_FILE.Data(),
"RECREATE");
1146 t->SetDirectory(ofile);
1155 TFile* TrainTest=
new TFile(IDname.Data(),
"RECREATE");
1156 tTrainTest->Write();
1159 cout<<NOME_FILE.Data()<<endl;
wavearray< double > t(hp.size())
Float_t * rho
biased null statistics
cout<< endl;cout<< "ts size = "<< ts.size()<< " ts rate = "<< ts.rate()<< endl;tf.Forward(ts, wdm);int levels=tf.getLevel();cout<< "tf size = "<< tf.size()<< endl;double dF=tf.resolution();double dT=1./(2 *dF);cout<< "rate(hz) : "<< RATE<< "\ layers : "<< nLAYERS<< "\ dF(hz) : "<< dF<< "\ dT(ms) : "<< dT *1000.<< endl;int itime=TIME_PIXEL_INDEX;int ifreq=FREQ_PIXEL_INDEX;int index=(levels+1) *itime+ifreq;double time=itime *dT;double freq=(ifreq >0) ? ifreq *dF :dF/4;cout<< endl;cout<< "PIXEL TIME = "<< time<< " sec "<< endl;cout<< "PIXEL FREQ = "<< freq<< " Hz "<< endl;cout<< endl;wavearray< double > x
r add(tfmap, const_cast< char *>("hchannel"))
cout<< "Injected signals: "<< mdc.GetEntries()<< endl;cout<< "Injected signals in histogram factor_events_inj: "<< NEVTS<< endl;float myifar, ecor, m1, m2, netcc[3], neted, penalty;float rho[2];float chirp[6];float range[2];float frequency[2];float iSNR[3], sSNR[3];sim.SetBranchAddress("mass", mass);sim.SetBranchAddress("factor", &factor);sim.SetBranchAddress("range", range);sim.SetBranchAddress("chirp", chirp);sim.SetBranchAddress("rho", rho);sim.SetBranchAddress("netcc", netcc);sim.SetBranchAddress("neted", &neted);sim.SetBranchAddress("ifar", &myifar);sim.SetBranchAddress("ecor", &ecor);sim.SetBranchAddress("penalty", &penalty);sim.SetBranchAddress("time", mytime);sim.SetBranchAddress("iSNR", iSNR);sim.SetBranchAddress("sSNR", sSNR);sim.SetBranchAddress("spin", spin);sim.SetBranchAddress("frequency", frequency);float **volume=new float *[NBINS_mass1];float **volume_first_shell=new float *[NBINS_mass1];float **radius=new float *[NBINS_mass1];float **error_volume=new float *[NBINS_mass1];float **error_volume_first_shell=new float *[NBINS_mass1];float **error_radius=new float *[NBINS_mass1];for(int i=0;i< NBINS_mass1;i++) { volume[i]=new float[NBINS_mass2];volume_first_shell[i]=new float[NBINS_mass2];radius[i]=new float[NBINS_mass2];error_volume[i]=new float[NBINS_mass2];error_volume_first_shell[i]=new float[NBINS_mass2];error_radius[i]=new float[NBINS_mass2];for(int j=0;j< NBINS_mass2;j++) { volume[i][j]=0.;volume_first_shell[i][j]=0.;radius[i][j]=0.;error_volume[i][j]=0.;error_volume_first_shell[i][j]=0.;error_radius[i][j]=0.;} } float **spin_mtot_volume=new float *[NBINS_MTOT+1];float **spin_mtot_radius=new float *[NBINS_MTOT+1];float **error_spin_mtot_volume=new float *[NBINS_MTOT+1];float **error_spin_mtot_radius=new float *[NBINS_MTOT+1];for(int i=0;i< NBINS_MTOT+1;i++) { spin_mtot_volume[i]=new float[NBINS_SPIN+1];spin_mtot_radius[i]=new float[NBINS_SPIN+1];error_spin_mtot_volume[i]=new float[NBINS_SPIN+1];error_spin_mtot_radius[i]=new float[NBINS_SPIN+1];for(int j=0;j< NBINS_SPIN+1;j++) { spin_mtot_volume[i][j]=0.;error_spin_mtot_volume[i][j]=0.;spin_mtot_radius[i][j]=0.;error_spin_mtot_radius[i][j]=0.;} } char fname[1024];sprintf(fname, "%s/recovered_signals.txt", netdir);ofstream fev;fev.open(fname, std::ofstream::out);sprintf(line, "#GPS@L1 FAR[Hz] eFAR[Hz] Pval " "ePval factor rho frequency iSNR sSNR \");fev<< line<< endl;ofstream *fev_single=new ofstream[nfactor];for(int l=1;l< nfactor+1;l++) { sprintf(fname, "%s/recovered_signals_%d.txt", netdir, l);fev_single[l - 1].open(fname, std::ofstream::out);fev_single[l - 1]<< line<< endl;} double Vrho[RHO_NBINS], eVrho[RHO_NBINS], Rrho[RHO_NBINS], eRrho[RHO_NBINS], Trho[RHO_NBINS];for(int i=0;i< RHO_NBINS;i++) { Vrho[i]=0.;eVrho[i]=0.;Rrho[i]=0.;eRrho[i]=0.;Trho[i]=RHO_MIN+i *RHO_BIN;} double dV, dV1, dV_spin_mtot, nevts, internal_volume;int nT;int countv=0;int cnt=0;int cnt2=0;int cntfreq=0;bool bcut=false;double liveTot=sim.GetMaximum("ifar");double BKG_LIVETIME_yr=liveTot/CYS;double BKG_LIVETIME_Myr=BKG_LIVETIME_yr/(1.e6);cout.precision(14);cout<< "Total live time ---> background
Float_t * netcc
effective correlated SNR
TString select7Train_non_es(TString ORIGINAL_FILE, std::vector< int > *choice, TString IDname)
if[["$OSTYPE"=~ "linux"]]
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)
void cwbANN_purity_SoB(int nTrain, int nTrainBg, TString option, TString TREE_FILE, int q, int p, double rm=0., double cm=0., int lm=5, Int_t nepoch=700)