| 30 | 
 // | 
 // | 
| 31 | 
 using namespace std; | 
 using namespace std; | 
| 32 | 
 // | 
 // | 
| 33 | 
  | 
 GL_TABLES *glt = NULL; | 
| 34 | 
 // | 
 // | 
| 35 | 
 // | 
 // | 
| 36 | 
 #include <DarthVaderVerl2.h> | 
 #include <DarthVaderVerl2.h> | 
| 47 | 
   printf(" -s || --silent    print nothing on STDOUT\n"); | 
   printf(" -s || --silent    print nothing on STDOUT\n"); | 
| 48 | 
   printf(" -c || --clean     remove file if exiting with errors\n"); | 
   printf(" -c || --clean     remove file if exiting with errors\n"); | 
| 49 | 
   printf(" -b || --benchmark perform and print a benchmark test\n"); | 
   printf(" -b || --benchmark perform and print a benchmark test\n"); | 
| 50 | 
   printf(" -auto || -AUTO    exclude from processing detector which are NOT in the acquisition [default]\n"); | 
   printf(" -r || --reprocess force running on existing file [default: exit with error, NB: DEFAULT CHANGED since 10RED!!]\n"); | 
| 51 | 
  | 
   printf(" -n || --new-fit   use new fitting algorithm [default]\n"); | 
| 52 | 
  | 
   printf(" --no-new-fit      use standard (up to 9RED) fitting algorithm\n"); | 
| 53 | 
  | 
   printf(" -auto || -AUTO    exclude from processing detector which are NOT in the acquisition\n"); | 
| 54 | 
   printf(" -zerofill         if a detector is not in the acquisition the routine is called anyway \n"); | 
   printf(" -zerofill         if a detector is not in the acquisition the routine is called anyway \n"); | 
| 55 | 
   printf("                   but all detector's data will be marked as bad\n"); | 
   printf("                   but all detector's data will be marked as bad [default]\n"); | 
| 56 | 
   printf(" -tedious          exit with error if a detector is not in the acquisition and \n"); | 
   printf(" -tedious          exit with error if a detector is not in the acquisition and \n"); | 
| 57 | 
   printf("                   it has not been excluded from processing\n"); | 
   printf("                   it has not been excluded from processing\n"); | 
| 58 | 
   printf(" -host             name of the DB host [default = $PAM_DBHOST or mysql://localhost/pamelaprod]\n"); | 
   printf(" -host             name of the DB host [default = $PAM_DBHOST or mysql://localhost/pamelaprod]\n"); | 
| 70 | 
   printf(" Standard call:\n            DarthVader -idRun 1085 \n"); | 
   printf(" Standard call:\n            DarthVader -idRun 1085 \n"); | 
| 71 | 
   printf(" Process only RunInfo and Tracker (be verbose for tracker):\n            DarthVader -idRun 1085 -all +RUN +TRK [ --verbose ] \n"); | 
   printf(" Process only RunInfo and Tracker (be verbose for tracker):\n            DarthVader -idRun 1085 -all +RUN +TRK [ --verbose ] \n"); | 
| 72 | 
   printf(" Process all and be verbose for calorimeter:\n            DarthVader -idRun 1085 +CAL [ --verbose ] \n\n"); | 
   printf(" Process all and be verbose for calorimeter:\n            DarthVader -idRun 1085 +CAL [ --verbose ] \n\n"); | 
| 73 | 
  | 
   printf(" Set Tracker to work with simulated data:\n            DarthVader -idRun 1085 +TRK [ --simu ] \n\n"); | 
| 74 | 
 }; | 
 }; | 
| 75 | 
  | 
  | 
| 76 | 
 // | 
 // | 
| 94 | 
   Double_t ctrktime = 0.; | 
   Double_t ctrktime = 0.; | 
| 95 | 
   Double_t caltime = 0.; | 
   Double_t caltime = 0.; | 
| 96 | 
   Double_t ccaltime = 0.; | 
   Double_t ccaltime = 0.; | 
| 97 | 
  | 
   Double_t caltime1 = 0.; | 
| 98 | 
  | 
   Double_t ccaltime1 = 0.; | 
| 99 | 
   Double_t toftime = 0.; | 
   Double_t toftime = 0.; | 
| 100 | 
   Double_t ctoftime = 0.; | 
   Double_t ctoftime = 0.; | 
| 101 | 
  | 
   Double_t toftime1 = 0.; | 
| 102 | 
  | 
   Double_t ctoftime1 = 0.; | 
| 103 | 
   Double_t trgtime = 0.; | 
   Double_t trgtime = 0.; | 
| 104 | 
   Double_t ctrgtime = 0.; | 
   Double_t ctrgtime = 0.; | 
| 105 | 
   Double_t actime = 0.; | 
   Double_t actime = 0.; | 
| 118 | 
   Int_t error = 0; | 
   Int_t error = 0; | 
| 119 | 
   // | 
   // | 
| 120 | 
   Int_t CALSGN = 0; | 
   Int_t CALSGN = 0; | 
| 121 | 
  | 
   Int_t CALSGN1 = 0; | 
| 122 | 
   Int_t TRKSGN = 0; | 
   Int_t TRKSGN = 0; | 
| 123 | 
   Int_t TRGSGN = 0; | 
   Int_t TRGSGN = 0; | 
| 124 | 
   Int_t TOFSGN = 0; | 
   Int_t TOFSGN = 0; | 
| 125 | 
  | 
   Int_t TOFSGN1 = 0; | 
| 126 | 
   Int_t RUNSGN = 0; | 
   Int_t RUNSGN = 0; | 
| 127 | 
   Int_t ORBSGN = 0; | 
   Int_t ORBSGN = 0; | 
| 128 | 
   Int_t ACSGN = 0; | 
   Int_t ACSGN = 0; | 
| 133 | 
   UInt_t NQRUN = 0; | 
   UInt_t NQRUN = 0; | 
| 134 | 
   UInt_t NQTRK = 0; | 
   UInt_t NQTRK = 0; | 
| 135 | 
   UInt_t NQCAL = 0; | 
   UInt_t NQCAL = 0; | 
| 136 | 
  | 
   UInt_t NQCAL1 = 0; | 
| 137 | 
   UInt_t NQTOF = 0; | 
   UInt_t NQTOF = 0; | 
| 138 | 
  | 
   UInt_t NQTOF1 = 0; | 
| 139 | 
   UInt_t NQORB = 0; | 
   UInt_t NQORB = 0; | 
| 140 | 
   UInt_t NQTRG = 0; | 
   UInt_t NQTRG = 0; | 
| 141 | 
   UInt_t NQAC = 0; | 
   UInt_t NQAC = 0; | 
| 143 | 
   UInt_t NQS4 = 0; | 
   UInt_t NQS4 = 0; | 
| 144 | 
   UInt_t NQTOT = 0; | 
   UInt_t NQTOT = 0; | 
| 145 | 
   // | 
   // | 
| 146 | 
   Bool_t autom = true; | 
   Bool_t autom = false; | 
| 147 | 
   Bool_t zerofill = false; | 
   Bool_t zerofill = true; | 
| 148 | 
   Bool_t tedious = false; | 
   Bool_t tedious = false; | 
| 149 | 
   Bool_t remfile = false; | 
   Bool_t remfile = false; | 
| 150 | 
   Bool_t debug = false; | 
   Bool_t debug = false; | 
| 151 | 
   Bool_t beverbose = true; | 
   Bool_t beverbose = true; | 
| 152 | 
   Bool_t givenid = false; | 
   Bool_t givenid = false; | 
| 153 | 
   Bool_t bench = false; | 
   Bool_t bench = false; | 
| 154 | 
  | 
   Bool_t reprocess = false; | 
| 155 | 
  | 
   Bool_t newfit = true; | 
| 156 | 
   Bool_t CAL = true; | 
   Bool_t CAL = true; | 
| 157 | 
   Bool_t TRK = true; | 
   Bool_t TRK = true; | 
| 158 | 
   Bool_t TRG = true; | 
   Bool_t TRG = true; | 
| 298 | 
           bench = true; | 
           bench = true; | 
| 299 | 
           found = true; | 
           found = true; | 
| 300 | 
         }; | 
         }; | 
| 301 | 
  | 
         if ( !strcmp(inps[i],"-r") || !strcmp(inps[i],"--reprocess") ){ | 
| 302 | 
  | 
           reprocess = true; | 
| 303 | 
  | 
           found = true; | 
| 304 | 
  | 
         }; | 
| 305 | 
  | 
         if ( !strcmp(inps[i],"-n") || !strcmp(inps[i],"--new-fit") ){ | 
| 306 | 
  | 
           newfit = true; | 
| 307 | 
  | 
           found = true; | 
| 308 | 
  | 
         }; | 
| 309 | 
  | 
         if ( !strcmp(inps[i],"--no-new-fit") ){ | 
| 310 | 
  | 
           newfit = false; | 
| 311 | 
  | 
           found = true; | 
| 312 | 
  | 
         }; | 
| 313 | 
         if ( !strcmp(inps[i],"-auto") || !strcmp(inps[i],"-AUTO") ){ | 
         if ( !strcmp(inps[i],"-auto") || !strcmp(inps[i],"-AUTO") ){ | 
| 314 | 
           autom = true; | 
           autom = true; | 
| 315 | 
           tedious = false; | 
           tedious = false; | 
| 573 | 
     // If not in verbose mode redirect to /dev/null the stdout and stderr | 
     // If not in verbose mode redirect to /dev/null the stdout and stderr | 
| 574 | 
     // | 
     // | 
| 575 | 
     if ( !beverbose ){ | 
     if ( !beverbose ){ | 
| 576 | 
       nul = open("/dev/null", O_CREAT | O_RDWR,S_IREAD | S_IWRITE); | 
       nul = open("/dev/null", O_CREAT | O_RDWR,S_IRUSR | S_IWUSR); | 
| 577 | 
       dup2(nul,1); | 
       dup2(nul,1); | 
| 578 | 
       dup2(nul,2); | 
       dup2(nul,2); | 
| 579 | 
     }; | 
     }; | 
| 602 | 
     // | 
     // | 
| 603 | 
     if ( debug ) printf("...connected! \n\n"); | 
     if ( debug ) printf("...connected! \n\n"); | 
| 604 | 
     // | 
     // | 
| 605 | 
     GL_TABLES *glt = new GL_TABLES(host,user,psw); | 
     glt = new GL_TABLES(host,user,psw); | 
| 606 | 
  | 
     //GL_TABLES *glt = new GL_TABLES(host,user,psw); | 
| 607 | 
     // | 
     // | 
| 608 | 
     if ( debug ) printf("\n DB INFORMATIONS:\n SQL: %s Version: %s Host %s Port %i \n\n",dbc->GetDBMS(),dbc->ServerInfo(),dbc->GetHost(),dbc->GetPort()); | 
     if ( debug ) printf("\n DB INFORMATIONS:\n SQL: %s Version: %s Host %s Port %i \n\n",dbc->GetDBMS(),dbc->ServerInfo(),dbc->GetHost(),dbc->GetPort()); | 
| 609 | 
     // | 
     // | 
| 629 | 
       filename += strun.str(); | 
       filename += strun.str(); | 
| 630 | 
       filename += ".Level2.root"; | 
       filename += ".Level2.root"; | 
| 631 | 
     }; | 
     }; | 
| 632 | 
  | 
     // | 
| 633 | 
  | 
     // check if file exists and check reprocess flag | 
| 634 | 
  | 
     // | 
| 635 | 
  | 
     if ( !reprocess ){ | 
| 636 | 
  | 
       if ( !gSystem->GetPathInfo(filename.Data(),NULL,(Long_t*)NULL,NULL,NULL) ) { | 
| 637 | 
  | 
         if ( beverbose ) printf(" File %s already exists!\n",filename.Data()); | 
| 638 | 
  | 
         throw -37; | 
| 639 | 
  | 
       } | 
| 640 | 
  | 
     }  | 
| 641 | 
  | 
      | 
| 642 | 
     processFile = new TFile(filename.Data(),"UPDATE"); | 
     processFile = new TFile(filename.Data(),"UPDATE"); | 
| 643 | 
     if ( !processFile->IsOpen() ) throw -15;     | 
     if ( !processFile->IsOpen() ) throw -15;     | 
| 644 | 
     // | 
     // | 
| 737 | 
     }; | 
     }; | 
| 738 | 
     if ( debug ) printf("\n End pre-processing \n\n"); | 
     if ( debug ) printf("\n End pre-processing \n\n"); | 
| 739 | 
     // | 
     // | 
| 740 | 
  | 
     dbc->Close(); | 
| 741 | 
  | 
     // | 
| 742 | 
  | 
     // | 
| 743 | 
  | 
     timer.Start(kTRUE); | 
| 744 | 
  | 
     if ( TRG ) { | 
| 745 | 
  | 
       glt->ResetCounters(); | 
| 746 | 
  | 
       printf(" TriggerLevel2 called\n"); | 
| 747 | 
  | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start TrigCore STDOUT |<<<<<<<<<<<<<<<<<<<\n"); | 
| 748 | 
  | 
       TRGSGN = TrigCore(run,processFile,glt,trgargc,trgargv); | 
| 749 | 
  | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end TrigCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
| 750 | 
  | 
       NQTRG = glt->GetNqueries(); | 
| 751 | 
  | 
     }; | 
| 752 | 
  | 
     timer.Stop(); | 
| 753 | 
  | 
     trgtime = timer.RealTime(); | 
| 754 | 
  | 
     ctrgtime = timer.CpuTime(); | 
| 755 | 
  | 
     // | 
| 756 | 
  | 
     // | 
| 757 | 
  | 
     // new fitting algorithm require calorimeter level1 and tof XXX to be processed first | 
| 758 | 
  | 
     // | 
| 759 | 
  | 
     if ( newfit ) { | 
| 760 | 
  | 
       timer.Start(kTRUE); | 
| 761 | 
  | 
       if ( TOF && false) { | 
| 762 | 
  | 
         glt->ResetCounters(); | 
| 763 | 
  | 
         printf(" ToFLevel2 called, 1st call\n"); | 
| 764 | 
  | 
         if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start ToFCore STDOUT |<<<<<<<<<<<<<<<<<<<\n"); | 
| 765 | 
  | 
         TOFSGN1 = ToFCore(run,processFile,glt,tofargc,tofargv); | 
| 766 | 
  | 
         if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end ToFCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
| 767 | 
  | 
         NQTOF1 = glt->GetNqueries(); | 
| 768 | 
  | 
       }; | 
| 769 | 
  | 
       timer.Stop(); | 
| 770 | 
  | 
       toftime1 = timer.RealTime(); | 
| 771 | 
  | 
       ctoftime1 = timer.CpuTime(); | 
| 772 | 
  | 
       // | 
| 773 | 
  | 
       timer.Start(kTRUE); | 
| 774 | 
  | 
       if ( CAL ) { | 
| 775 | 
  | 
         glt->ResetCounters(); | 
| 776 | 
  | 
         printf(" CalorimeterLevel2 called, 1st call\n"); | 
| 777 | 
  | 
         if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start CaloCore STDOUT |<<<<<<<<<<<<<<<<<<<\n"); | 
| 778 | 
  | 
         string cstring = "--level1-only"; | 
| 779 | 
  | 
         calargv[calargc] = (char *)cstring.c_str(); | 
| 780 | 
  | 
         calargc++; | 
| 781 | 
  | 
         CALSGN1 = CaloCore(run,processFile,glt,calargc,calargv); | 
| 782 | 
  | 
         if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end CaloCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
| 783 | 
  | 
         NQCAL1 = glt->GetNqueries(); | 
| 784 | 
  | 
       }; | 
| 785 | 
  | 
       timer.Stop(); | 
| 786 | 
  | 
       caltime1 = timer.RealTime(); | 
| 787 | 
  | 
       ccaltime1 = timer.CpuTime();     | 
| 788 | 
  | 
     } | 
| 789 | 
  | 
     // | 
| 790 | 
  | 
     // | 
| 791 | 
     timer.Start(kTRUE); | 
     timer.Start(kTRUE); | 
| 792 | 
     if ( TRK ) { | 
     if ( TRK ) { | 
| 793 | 
       glt->ResetCounters(); | 
       glt->ResetCounters(); | 
| 794 | 
       printf(" TrackerLevel2 called\n");                 | 
       printf(" TrackerLevel2 called\n");                 | 
| 795 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start TrkCore STDOUT |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start TrkCore STDOUT |<<<<<<<<<<<<<<<<<<<\n"); | 
| 796 | 
       TRKSGN = TrkCore(run,processFile,dbc,trkargc,trkargv); | 
       TRKSGN = TrkCore(run,processFile,glt,trkargc,trkargv); | 
| 797 | 
       gSystem->Unlink("TrackerFolder"); //patch | 
       gSystem->Unlink("TrackerFolder"); //patch | 
| 798 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end TrkCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end TrkCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
| 799 | 
       NQTRK = glt->GetNqueries(); | 
       NQTRK = glt->GetNqueries(); | 
| 807 | 
       glt->ResetCounters(); | 
       glt->ResetCounters(); | 
| 808 | 
       printf(" ToFLevel2 called\n"); | 
       printf(" ToFLevel2 called\n"); | 
| 809 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start ToFCore STDOUT |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start ToFCore STDOUT |<<<<<<<<<<<<<<<<<<<\n"); | 
| 810 | 
       TOFSGN = ToFCore(run,processFile,dbc,tofargc,tofargv); | 
       TOFSGN = ToFCore(run,processFile,glt,tofargc,tofargv); | 
| 811 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end ToFCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end ToFCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
| 812 | 
       NQTOF = glt->GetNqueries(); | 
       NQTOF = glt->GetNqueries(); | 
| 813 | 
     }; | 
     }; | 
| 820 | 
       glt->ResetCounters(); | 
       glt->ResetCounters(); | 
| 821 | 
       printf(" CalorimeterLevel2 called\n"); | 
       printf(" CalorimeterLevel2 called\n"); | 
| 822 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start CaloCore STDOUT |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start CaloCore STDOUT |<<<<<<<<<<<<<<<<<<<\n"); | 
| 823 | 
       CALSGN = CaloCore(run,processFile,dbc,calargc,calargv); | 
       if ( !reprocess ){ | 
| 824 | 
  | 
         string cstring = "--delete-calo-tree"; | 
| 825 | 
  | 
         calargv[calargc] = (char *)cstring.c_str(); | 
| 826 | 
  | 
       } else { | 
| 827 | 
  | 
         calargc--; | 
| 828 | 
  | 
       } | 
| 829 | 
  | 
       CALSGN = CaloCore(run,processFile,glt,calargc,calargv); | 
| 830 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end CaloCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end CaloCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
| 831 | 
       NQCAL = glt->GetNqueries(); | 
       NQCAL = glt->GetNqueries(); | 
| 832 | 
     }; | 
     }; | 
| 835 | 
     ccaltime = timer.CpuTime(); | 
     ccaltime = timer.CpuTime(); | 
| 836 | 
     // | 
     // | 
| 837 | 
     timer.Start(kTRUE); | 
     timer.Start(kTRUE); | 
 | 
     if ( TRG ) { | 
  | 
 | 
       glt->ResetCounters(); | 
  | 
 | 
       printf(" TriggerLevel2 called\n"); | 
  | 
 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start TrigCore STDOUT |<<<<<<<<<<<<<<<<<<<\n"); | 
  | 
 | 
       TRGSGN = TrigCore(run,processFile,dbc,trgargc,trgargv); | 
  | 
 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end TrigCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
  | 
 | 
       NQTRG = glt->GetNqueries(); | 
  | 
 | 
     }; | 
  | 
 | 
     timer.Stop(); | 
  | 
 | 
     trgtime = timer.RealTime(); | 
  | 
 | 
     ctrgtime = timer.CpuTime(); | 
  | 
 | 
     // | 
  | 
 | 
     timer.Start(kTRUE); | 
  | 
| 838 | 
     if ( AC ) { | 
     if ( AC ) { | 
| 839 | 
       glt->ResetCounters(); | 
       glt->ResetCounters(); | 
| 840 | 
       printf(" AnticounterLevel2 called\n"); | 
       printf(" AnticounterLevel2 called\n"); | 
| 841 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start AcCore STDOUT |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start AcCore STDOUT |<<<<<<<<<<<<<<<<<<<\n"); | 
| 842 | 
       ACSGN = AcCore(run,processFile,dbc,acargc,acargv); | 
       ACSGN = AcCore(run,processFile,glt,acargc,acargv); | 
| 843 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end AcCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end AcCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
| 844 | 
       NQAC = glt->GetNqueries(); | 
       NQAC = glt->GetNqueries(); | 
| 845 | 
     }; | 
     }; | 
| 852 | 
       glt->ResetCounters(); | 
       glt->ResetCounters(); | 
| 853 | 
       printf(" S4Level2 called\n"); | 
       printf(" S4Level2 called\n"); | 
| 854 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start S4Core STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start S4Core STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
| 855 | 
       S4SGN = S4Core(run,processFile,dbc,s4argc,s4argv); | 
       S4SGN = S4Core(run,processFile,glt,s4argc,s4argv); | 
| 856 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end S4Core STDOUT   |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end S4Core STDOUT   |<<<<<<<<<<<<<<<<<<<\n"); | 
| 857 | 
       NQS4 = glt->GetNqueries(); | 
       NQS4 = glt->GetNqueries(); | 
| 858 | 
     }; | 
     }; | 
| 865 | 
       glt->ResetCounters(); | 
       glt->ResetCounters(); | 
| 866 | 
       printf(" NDLevel2 called\n"); | 
       printf(" NDLevel2 called\n"); | 
| 867 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start NDCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start NDCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
| 868 | 
       NDSGN = NDCore(run,processFile,dbc,ndargc,ndargv); | 
       NDSGN = NDCore(run,processFile,glt,ndargc,ndargv); | 
| 869 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end NDCore STDOUT   |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end NDCore STDOUT   |<<<<<<<<<<<<<<<<<<<\n"); | 
| 870 | 
       NQND = glt->GetNqueries(); | 
       NQND = glt->GetNqueries(); | 
| 871 | 
     }; | 
     }; | 
| 878 | 
       glt->ResetCounters(); | 
       glt->ResetCounters(); | 
| 879 | 
       printf(" OrbitalInfo called\n"); | 
       printf(" OrbitalInfo called\n"); | 
| 880 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start OrbitalInfoCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>| start OrbitalInfoCore STDOUT  |<<<<<<<<<<<<<<<<<<<\n"); | 
| 881 | 
       ORBSGN = OrbitalInfoCore(run,processFile,dbc,orbargc,orbargv); | 
       ORBSGN = OrbitalInfoCore(run,processFile,glt,orbargc,orbargv); | 
| 882 | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end OrbitalInfoCore STDOUT   |<<<<<<<<<<<<<<<<<<<\n"); | 
       if ( debug ) printf("                      >>>>>>>>>>>>>>>>>>>|  end OrbitalInfoCore STDOUT   |<<<<<<<<<<<<<<<<<<<\n"); | 
| 883 | 
       NQORB = glt->GetNqueries(); | 
       NQORB = glt->GetNqueries(); | 
| 884 | 
     };     | 
     };     | 
| 886 | 
     orbtime = timer.RealTime(); | 
     orbtime = timer.RealTime(); | 
| 887 | 
     corbtime = timer.CpuTime(); | 
     corbtime = timer.CpuTime(); | 
| 888 | 
     // | 
     // | 
| 889 | 
     NQTOT = 2 + NQRUN + NQTRK + NQCAL + NQND + NQS4 + NQAC + NQTRG + NQTOF + NQORB;  | 
     NQTOT = 2 + NQRUN + NQTRK + NQCAL + NQND + NQS4 + NQAC + NQTRG + NQTOF + NQORB + NQCAL1 + NQTOF1;  | 
| 890 | 
     // | 
     // | 
| 891 | 
     delete glt; | 
     delete glt; | 
| 892 | 
     delete runinfo; | 
     delete runinfo; | 
| 899 | 
     case -2:   message += " DB connection failure"; break; | 
     case -2:   message += " DB connection failure"; break; | 
| 900 | 
     case -3:   message += " Error in input parameters (check format)"; break; | 
     case -3:   message += " Error in input parameters (check format)"; break; | 
| 901 | 
     case -4:   message += " Request reprocessing of all runs (idRun = 0) but processFile is missing"; break; | 
     case -4:   message += " Request reprocessing of all runs (idRun = 0) but processFile is missing"; break; | 
| 902 | 
  | 
     case -5:   message += " RUNINFO - ERROR: no run with this ID_RUN (ID_RUN mismatch?) "; break; | 
| 903 | 
     case -6:   message += " No LEVEL0 file "; break; | 
     case -6:   message += " No LEVEL0 file "; break; | 
| 904 | 
     case -7:   message += " No Physics tree in LEVEL0 file"; break; | 
     case -7:   message += " No Physics tree in LEVEL0 file"; break; | 
| 905 | 
     case -8:   message += " No Header branch in LEVEL0 Physics tree"; break; | 
     case -8:   message += " No Header branch in LEVEL0 Physics tree"; break; | 
| 917 | 
     case -33:  message += " No AC in the acquisition"; break; | 
     case -33:  message += " No AC in the acquisition"; break; | 
| 918 | 
     case -34:  message += " No S4 in the acquisition"; break; | 
     case -34:  message += " No S4 in the acquisition"; break; | 
| 919 | 
     case -35:  message += " No ND in the acquisition"; break; | 
     case -35:  message += " No ND in the acquisition"; break; | 
| 920 | 
  | 
     case -36:  message += " I/O error or missing entry"; break; | 
| 921 | 
  | 
     case -37:  message += " Cannot override output file, see help and use -r option"; break; | 
| 922 | 
  | 
     | 
| 923 | 
       // | 
       // | 
| 924 | 
     case -50:  message += " GLTABLES - No entries matching GL_RUN query"; break; | 
     case -50:  message += " GLTABLES - No entries matching GL_RUN query"; break; | 
| 925 | 
     case -51:  message += " GLTABLES - No entries matching GL_ROOT query"; break; | 
     case -51:  message += " GLTABLES - No entries matching GL_ROOT query"; break; | 
| 926 | 
     case -52:  message += " GLTABLES - No entries matching GL_PARAM query"; break; | 
     case -52:  message += " GLTABLES - No entries matching GL_PARAM query"; break; | 
| 927 | 
     case -53:  message += " GLTABLES - No entries matching GL_TRK_CALIB query"; break; | 
     case -53:  message += " GLTABLES - No entries matching GL_TRK_CALIB query"; break; | 
| 928 | 
     case -54:  message += " GLTABLES - No entries matching GL_CALO_CALIB query"; break; | 
     case -54:  message += " GLTABLES - No entries matching GL_CALO_CALIB query"; break; | 
| 929 | 
     case -55:  message += " GLTABLES - No entries matching GL_CALO_CALIB query"; break; | 
     case -55:  message += " GLTABLES - No entries matching GL_S4_CALIB query"; break; | 
| 930 | 
     case -56:  message += " GLTABLES - No entries matching GL_TLE query"; break; | 
     case -56:  message += " GLTABLES - No entries matching GL_TLE query"; break; | 
| 931 | 
     case -57:  message += " GLTABLES - DB connection gone and not able to reconnect"; break; | 
     case -57:  message += " GLTABLES - DB connection gone and not able to reconnect"; break; | 
| 932 | 
       //       | 
       //       | 
| 949 | 
     case -116: message += " CALORIMETERLEVEL2 -  DB connection problems"; break; | 
     case -116: message += " CALORIMETERLEVEL2 -  DB connection problems"; break; | 
| 950 | 
     case -117: message += " CALORIMETERLEVEL2 -  Cannot reprocess file with Level1 data without calling Level1 routine"; break; | 
     case -117: message += " CALORIMETERLEVEL2 -  Cannot reprocess file with Level1 data without calling Level1 routine"; break; | 
| 951 | 
     case -118: message += " CALORIMETERLEVEL2 -  Cannot reprocess file without Level1 data calling Level1 routine"; break; | 
     case -118: message += " CALORIMETERLEVEL2 -  Cannot reprocess file without Level1 data calling Level1 routine"; break; | 
| 952 | 
  | 
     case -119: message += " CALORIMETERLEVEL2 -  No CalibCalPulse2 TTree in Level0 file needed for the calibration"; break; | 
| 953 | 
  | 
     case -120: message += " CALORIMETERLEVEL2 -  No CalibCalPulse1 TTree in Level0 file needed for the calibration"; break; | 
| 954 | 
  | 
     case -121: message += " CALORIMETERLEVEL2 -  Cannot open calorimeter neighbour crosstalk correction table file"; break; | 
| 955 | 
  | 
     case -122: message += " CALORIMETERLEVEL2 -  Cannot open calorimeter second neighbour crosstalk correction table file"; break; | 
| 956 | 
  | 
     case -123: message += " CALORIMETERLEVEL2 -  Cannot open calorimeter special calibration file"; break; | 
| 957 | 
  | 
     case -124: message += " CALORIMETERLEVEL2 -  Cannot open calorimeter max rms file"; break; | 
| 958 | 
  | 
     case -125: message += " CALORIMETERLEVEL2 -  Cannot open calorimeter silicon crosstalk correction table file"; break; | 
| 959 | 
       // | 
       // | 
| 960 | 
     case -200: message += " TRACKERLEVEL2 - LEVEL1 framework unknown (HBOOK/ROOT)"; break; | 
     case -200: message += " TRACKERLEVEL2 - LEVEL1 framework unknown (HBOOK/ROOT)"; break; | 
| 961 | 
     case -201: message += " TRACKERLEVEL2 - LEVEL2 framework unknown (HBOOK/ROOT)"; break; | 
     case -201: message += " TRACKERLEVEL2 - LEVEL2 framework unknown (HBOOK/ROOT)"; break; | 
| 977 | 
     case -301: message += " TOFLEVEL2 - Cannot open file for writing"; break; | 
     case -301: message += " TOFLEVEL2 - Cannot open file for writing"; break; | 
| 978 | 
     case -302: message += " TOFLEVEL2 - No tracker tree in Level2 file"; break; | 
     case -302: message += " TOFLEVEL2 - No tracker tree in Level2 file"; break; | 
| 979 | 
     case -303: message += " TOFLEVEL2 - No Tof branch in Level0 file"; break; | 
     case -303: message += " TOFLEVEL2 - No Tof branch in Level0 file"; break; | 
| 980 | 
  | 
     case -304: message += " TOFLEVEL2 - No trigger tree in Level2 file"; break; | 
| 981 | 
     case -313: message += " TOFLEVEL2 - No more tracker events in Level2 file"; break; | 
     case -313: message += " TOFLEVEL2 - No more tracker events in Level2 file"; break; | 
| 982 | 
     case -314: message += " TOFLEVEL2 - DB connection problems"; break;  | 
     case -314: message += " TOFLEVEL2 - DB connection problems"; break;  | 
| 983 | 
  | 
     case -315: message += " TOFLEVEL2 - Problems with dE/dx II order correction file parameter"; break;  | 
| 984 | 
  | 
     case -316: message += " TOFLEVEL2 - Problems with dE/dx II order correction, dividing by zero!"; break;  | 
| 985 | 
  | 
     case -317: message += " TOFLEVEL2 - Problems with dE/dx II order correction, outside time limits!"; break;  | 
| 986 | 
  | 
     case -318: message += " TOFLEVEL2 - Problems with dE/dx II order correction, too many time intervals!"; break;  | 
| 987 | 
  | 
     case -319: message += " TOFLEVEL2 - No more trigger events in Level2 file"; break; | 
| 988 | 
       // | 
       // | 
| 989 | 
     case -401: message += " TRIGGERLEVEL2 - Cannot open file for writing"; break; | 
     case -401: message += " TRIGGERLEVEL2 - Cannot open file for writing"; break; | 
| 990 | 
     case -402: message += " TRIGGERLEVEL2 - No Trigger branch in Level0 tree"; break; | 
     case -402: message += " TRIGGERLEVEL2 - No Trigger branch in Level0 tree"; break; | 
| 1013 | 
     case -805: message += " RUNINFO - Reprocessing data but no RunInfo tree in Level2 file"; break; | 
     case -805: message += " RUNINFO - Reprocessing data but no RunInfo tree in Level2 file"; break; | 
| 1014 | 
     case -806: message += " RUNINFO - Can not handle more than 500 runs"; break; | 
     case -806: message += " RUNINFO - Can not handle more than 500 runs"; break; | 
| 1015 | 
     case -807: message += " RUNINFO - DB connection problems"; break; | 
     case -807: message += " RUNINFO - DB connection problems"; break; | 
| 1016 | 
  | 
       // | 
| 1017 | 
  | 
     case -900: message += " OrbitalInfo - no ToF tree"; break; | 
| 1018 | 
      // | 
      // | 
| 1019 | 
     default: message += "Unidentified error or warning"; break; | 
     default: message += "Unidentified error or warning"; break; | 
| 1020 | 
     }; | 
     }; | 
| 1033 | 
   if ( DVSGN & (1 << 4) ) printf(" - No S4 in the acquisition\n");  | 
   if ( DVSGN & (1 << 4) ) printf(" - No S4 in the acquisition\n");  | 
| 1034 | 
   if ( DVSGN & (1 << 5) ) printf(" - No neutron detector in the acquisition\n");  | 
   if ( DVSGN & (1 << 5) ) printf(" - No neutron detector in the acquisition\n");  | 
| 1035 | 
   // | 
   // | 
| 1036 | 
  | 
   // CaloCore, first call: | 
| 1037 | 
  | 
   // | 
| 1038 | 
  | 
   switch(CALSGN1){ | 
| 1039 | 
  | 
   case 100: printf("\n WARNING CALORIMETER - Data with no associated calibration\n"); | 
| 1040 | 
  | 
   case 101: printf("\n WARNING CALORIMETER - No tracks or good events in this run\n"); | 
| 1041 | 
  | 
   } | 
| 1042 | 
  | 
   // | 
| 1043 | 
   // CaloCore: | 
   // CaloCore: | 
| 1044 | 
   // | 
   // | 
| 1045 | 
   switch(CALSGN){ | 
   switch(CALSGN){ | 
| 1047 | 
   case 101: printf("\n WARNING CALORIMETER - No tracks or good events in this run\n"); | 
   case 101: printf("\n WARNING CALORIMETER - No tracks or good events in this run\n"); | 
| 1048 | 
   }; | 
   }; | 
| 1049 | 
   // | 
   // | 
| 1050 | 
  | 
   // OrbitalInfoCore: | 
| 1051 | 
  | 
   // | 
| 1052 | 
  | 
   switch(ORBSGN){ | 
| 1053 | 
  | 
   case 900: printf("\n WARNING ORBITALINFO - No inclination MCMDs\n"); | 
| 1054 | 
  | 
   }; | 
| 1055 | 
  | 
   // | 
| 1056 | 
   // no other at the moment | 
   // no other at the moment | 
| 1057 | 
   // | 
   // | 
| 1058 | 
   // | 
   // | 
| 1066 | 
   if ( processFile ){ | 
   if ( processFile ){ | 
| 1067 | 
     processFile->cd(); | 
     processFile->cd(); | 
| 1068 | 
     processFile->WriteStreamerInfo(); | 
     processFile->WriteStreamerInfo(); | 
| 1069 | 
  | 
     if ( debug ) processFile->ls(); | 
| 1070 | 
     processFile->Close(); | 
     processFile->Close(); | 
| 1071 | 
   }; | 
   }; | 
| 1072 | 
   // | 
   // | 
| 1080 | 
     Float_t trkrt = 0.; | 
     Float_t trkrt = 0.; | 
| 1081 | 
     Float_t calrt = 0.; | 
     Float_t calrt = 0.; | 
| 1082 | 
     Float_t tofrt = 0.; | 
     Float_t tofrt = 0.; | 
| 1083 | 
  | 
     Float_t calrt1 = 0.; | 
| 1084 | 
  | 
     Float_t tofrt1 = 0.; | 
| 1085 | 
     Float_t trgrt = 0.; | 
     Float_t trgrt = 0.; | 
| 1086 | 
     Float_t acrt = 0.; | 
     Float_t acrt = 0.; | 
| 1087 | 
     Float_t s4rt = 0.; | 
     Float_t s4rt = 0.; | 
| 1088 | 
     Float_t ndrt = 0.; | 
     Float_t ndrt = 0.; | 
| 1089 | 
     Float_t orbrt = 0.; | 
     Float_t orbrt = 0.; | 
| 1090 | 
     Float_t dvrt = nevents/dvtime; | 
     Float_t dvrt = (nevents+1)/dvtime; | 
| 1091 | 
     if ( RUN ) runrt = nruns/runtime; | 
     if ( RUN ) runrt = nruns/runtime; | 
| 1092 | 
     if ( TRK ) trkrt = nevents/trktime; | 
     if ( TRK ) trkrt = (nevents+1)/trktime; | 
| 1093 | 
     if ( CAL ) calrt = nevents/caltime; | 
     if ( CAL ) calrt = (nevents+1)/caltime; | 
| 1094 | 
     if ( TOF ) tofrt = nevents/toftime; | 
     if ( TOF && newfit ) tofrt1 = (nevents+1)/toftime1; | 
| 1095 | 
     if ( TRG ) trgrt = nevents/trgtime; | 
     if ( CAL && newfit ) calrt1 = (nevents+1)/caltime1; | 
| 1096 | 
     if ( AC ) acrt = nevents/actime; | 
     if ( TOF ) tofrt = (nevents+1)/toftime; | 
| 1097 | 
     if ( S4 ) s4rt = nevents/s4time; | 
     if ( TRG ) trgrt = (nevents+1)/trgtime; | 
| 1098 | 
     if ( ND ) ndrt = nevents/ndtime; | 
     if ( AC ) acrt = (nevents+1)/actime; | 
| 1099 | 
     if ( ORB ) orbrt = nevents/orbtime; | 
     if ( S4 ) s4rt = (nevents+1)/s4time; | 
| 1100 | 
  | 
     if ( ND ) ndrt = (nevents+1)/ndtime; | 
| 1101 | 
  | 
     if ( ORB ) orbrt = (nevents+1)/orbtime; | 
| 1102 | 
     // | 
     // | 
| 1103 | 
     printf("\n\n###########################################################################################\n"); | 
     printf("\n\n###########################################################################################\n"); | 
| 1104 | 
     printf("#              Benchmark results:      nevents = %10u     runs = %3u                #\n",nevents,nruns); | 
     printf("#              Benchmark results:      nevents = %10u     runs = %3u                #\n",(nevents+1),nruns); | 
| 1105 | 
     printf("###########################################################################################\n"); | 
     printf("###########################################################################################\n"); | 
| 1106 | 
     printf("# Detector # Core routine called # Queries  #     Real Time   #   CPU time   #  Events/s  #\n"); | 
     printf("# Detector # Core routine called # Queries  #     Real Time   #   CPU time   #  Events/s  #\n"); | 
| 1107 | 
     printf("###########################################################################################\n"); | 
     printf("###########################################################################################\n"); | 
| 1108 | 
     printf("# RUN      #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",RUN,NQRUN,fabs(runtime),fabs(cruntime),runrt); | 
     printf("# RUN      #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",RUN,NQRUN,fabs(runtime),fabs(cruntime),runrt); | 
| 1109 | 
  | 
     printf("# TRG      #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",TRG,NQTRG,fabs(trgtime),fabs(ctrgtime),trgrt); | 
| 1110 | 
  | 
     if ( newfit ){ | 
| 1111 | 
  | 
     printf("# TOF L1   #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",TOF,NQTOF1,fabs(toftime1),fabs(ctoftime1),tofrt1);     | 
| 1112 | 
  | 
     printf("# CAL L1   #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",CAL,NQCAL1,fabs(caltime1),fabs(ccaltime1),calrt1); | 
| 1113 | 
  | 
     } | 
| 1114 | 
     printf("# TRK      #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",TRK,NQTRK,fabs(trktime),fabs(ctrktime),trkrt); | 
     printf("# TRK      #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",TRK,NQTRK,fabs(trktime),fabs(ctrktime),trkrt); | 
 | 
     printf("# CAL      #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",CAL,NQCAL,fabs(caltime),fabs(ccaltime),calrt); | 
  | 
| 1115 | 
     printf("# TOF      #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",TOF,NQTOF,fabs(toftime),fabs(ctoftime),tofrt); | 
     printf("# TOF      #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",TOF,NQTOF,fabs(toftime),fabs(ctoftime),tofrt); | 
| 1116 | 
     printf("# TRG      #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",TRG,NQTRG,fabs(trgtime),fabs(ctrgtime),trgrt); | 
     printf("# CAL      #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",CAL,NQCAL,fabs(caltime),fabs(ccaltime),calrt); | 
| 1117 | 
     printf("# AC       #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",AC,NQAC,fabs(actime),fabs(cactime),acrt); | 
     printf("# AC       #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",AC,NQAC,fabs(actime),fabs(cactime),acrt); | 
| 1118 | 
     printf("# S4       #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",S4,NQS4,fabs(s4time),fabs(cs4time),s4rt); | 
     printf("# S4       #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",S4,NQS4,fabs(s4time),fabs(cs4time),s4rt); | 
| 1119 | 
     printf("# ND       #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",ND,NQND,fabs(ndtime),fabs(cndtime),ndrt); | 
     printf("# ND       #         %i           #   %3u    #      %8.2f   #    %8.2f  #  %8.2f  #\n",ND,NQND,fabs(ndtime),fabs(cndtime),ndrt); | 
| 1133 | 
     gSystem->Unlink(filename.Data());  | 
     gSystem->Unlink(filename.Data());  | 
| 1134 | 
   }; | 
   }; | 
| 1135 | 
   // | 
   // | 
| 1136 | 
  | 
   if ( !error && (CALSGN1 || TOFSGN1 || CALSGN || TRKSGN || TRGSGN || TOFSGN || RUNSGN || ORBSGN || ACSGN || S4SGN || NDSGN || DVSGN) ) error = 1; | 
| 1137 | 
  | 
   // | 
| 1138 | 
   printf("\n Finished, exiting...\n\n"); | 
   printf("\n Finished, exiting...\n\n"); | 
| 1139 | 
   // | 
   // | 
| 1140 | 
   // Close redirection if the case. | 
   // Close redirection if the case. | 
| 1142 | 
   if ( !beverbose ) close(nul); | 
   if ( !beverbose ) close(nul); | 
| 1143 | 
   // | 
   // | 
| 1144 | 
   // | 
   // | 
| 1145 | 
   exit(error); | 
   if ( !error ) exit(0);       // no errors | 
| 1146 | 
  | 
   if ( error == 1 ) exit(255);  // warnings | 
| 1147 | 
  | 
   exit(1);                     // errors | 
| 1148 | 
 } | 
 } |