Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-21 07:51:39

0001 #include <iostream>
0002 #include <fstream>
0003 #include <vector>
0004 #include <map>
0005 #include <utility>
0006 #include <ctype.h>
0007 #include <stdio.h>
0008 #include <stdlib.h>
0009 #include <unistd.h> // Add for use on Mac OS -> Same goes for Analyses.cc
0010 #include "TString.h"
0011 #include "TFile.h"
0012 #include "TTree.h"
0013 #include "TCanvas.h"
0014 #include "TF1.h"
0015 #include "TH1D.h"
0016 #include "TObjArray.h"
0017 #include "TObjString.h"
0018 
0019 #include "Setup.h"
0020 #include "Calib.h"
0021 #include "Event.h"
0022 #include "Tile.h"
0023 #include "HGCROC.h"
0024 #include "HGCROC_Waveform_Analysis.h"
0025 
0026 void PrintHelp(char* exe){
0027   std::cout<<"Usage:"<<std::endl;
0028   std::cout<<exe<<" [-option (arguments)]"<<std::endl;
0029   std::cout<<"Options:"<<std::endl;
0030   std::cout<<"-B lll   apply external bad channel map during transfer of calibs"<<std::endl;
0031   std::cout<<"-c ccc   set fixed Readout board channel"<<std::endl;
0032   std::cout<<"-d [0-n] switch on debug info with debug level 0 to n"<<std::endl;
0033   std::cout<<"-E [1-3] extended plotting set to whatever value you specify"<<std::endl;
0034   std::cout<<"-f       Force to write output if already exist"<<std::endl;
0035   std::cout<<"-F fff   set explicit plot extension explicitly, default is pdf "<<std::endl;
0036   std::cout<<"-i uuu   Input file in root format"<<std::endl;
0037   std::cout<<"-k kkk   enabling overwriting of calib file using external calib txt file"<<std::endl;
0038   std::cout<<"-L LLL   enable testing with only limited number of events"<<std::endl;
0039   std::cout<<"-o vvv   Output file name (mandatory)"<<std::endl;
0040   std::cout<<"-O kkk   Output directory name for plots (mandatory)"<<std::endl;
0041   std::cout<<"-w       Analyse waveform of HGCROC data"<<std::endl;
0042   std::cout<<"-s sss   Plot correlation plots TOA only for TOA sample sss "<<std::endl;
0043   std::cout<<"-t ttt   Use external ToA offset calib-file "<<std::endl;
0044   std::cout<<"-T       extract time walk "<<std::endl;
0045   std::cout<<"-w       perform extended waveform study "<<std::endl;
0046   std::cout<<"-x       study cross talk "<<std::endl;
0047   std::cout<<"-h       this help"<<std::endl<<std::endl;
0048   std::cout<<"Examples:"<<std::endl;
0049 }
0050   
0051 
0052 int main(int argc, char* argv[]){
0053   if(argc<4) {
0054     PrintHelp(argv[0]);
0055     return 0;
0056   }
0057   HGCROC_Waveform_Analysis AnAnalysis;
0058   int c;
0059   while((c=getopt(argc,argv,"B:c:d:E:fF:i:hk:L:o:O:r:s:t:Twx"))!=-1){
0060     switch(c){
0061     case 'B':
0062       std::cout<<"HGCROCStudy: read bad channel map from external file: "<<optarg<<std::endl;
0063       AnAnalysis.SetExternalBadChannelMap(Form("%s",optarg));
0064       break;
0065     case 'c':
0066       std::cout<<"HGCROCStudy: set fixed RO channel: "<<optarg<<std::endl;
0067       AnAnalysis.SetFixedROChannel(atoi(optarg));
0068       break;
0069     case 'd':
0070       std::cout<<"HGCROCStudy: enable debug " << optarg <<std::endl;
0071       AnAnalysis.EnableDebug(atoi(optarg));
0072       break;
0073     case 'E':
0074       std::cout<<"HGCROCStudy: enabling more extended plotting: "<< optarg<<std::endl;
0075       AnAnalysis.SetExtPlotting(atoi(optarg));
0076       break;
0077     case 'f':
0078       std::cout<<"HGCROCStudy: If output already exists it will be overwritten"<<std::endl;
0079       AnAnalysis.CanOverWrite(true);
0080       break;
0081     case 'F':
0082       std::cout<<"HGCROCStudy: Set Plot extension to: "<< optarg<<std::endl;
0083       AnAnalysis.SetPlotExtension(optarg);
0084       break;
0085     case 'i':
0086       std::cout<<"HGCROCStudy: Root input file is: "<<optarg<<std::endl;
0087       AnAnalysis.SetRootInput(Form("%s",optarg));
0088       break;
0089     case 'k':
0090       std::cout<<"HGCROCStudy: enable overwrite from external text file: "<< optarg <<std::endl;
0091       AnAnalysis.SetExternalCalibFile(optarg);
0092       AnAnalysis.SetOverWriteCalib(true);
0093       break;
0094     case 'L':
0095       std::cout<<"HGCROCStudy: SetMaxEvents processed:"<<optarg<<std::endl;
0096       AnAnalysis.SetMaxEvents(atoi(optarg));
0097       break;
0098     case 'o':
0099       std::cout<<"HGCROCStudy: Output to be saved in: "<<optarg<<std::endl;
0100       AnAnalysis.SetRootOutput(Form("%s",optarg));
0101       break;
0102     case 'O':
0103       std::cout<<"HGCROCStudy: Outputdir plots to be saved in: "<<optarg<<std::endl;
0104       AnAnalysis.SetPlotOutputDir(Form("%s",optarg));
0105       break;
0106     case 'r':
0107       std::cout<<"HGCROCStudy: run list file from: "<<optarg<<std::endl;
0108       AnAnalysis.SetRunListInput(Form("%s",optarg));
0109       break;
0110     case 's':
0111       std::cout<<"HGCROCStudy: sample number: "<<optarg<<std::endl;
0112       AnAnalysis.SetFixedTOASample(atoi(optarg));
0113       break;
0114     case 't':
0115       std::cout<<"HGCROCStudy: toa offset filename: "<<optarg<<std::endl;
0116       AnAnalysis.SetExternalToACalibOffSetFile(Form("%s",optarg));
0117       break;
0118     case 'T':
0119       std::cout<<"HGCROCStudy: extract time walk "<<std::endl;
0120       AnAnalysis.IsToExtractTimeWalk(true);
0121       break;
0122     case 'w':
0123       std::cout<<"HGCROCStudy: analyse HGCROC waveform"<<std::endl;
0124       AnAnalysis.IsToAnalysisWaveForm(true);
0125       break;
0126     case 'x':
0127       std::cout<<"HGCROCStudy: analyse cross talk"<<std::endl;
0128       AnAnalysis.IsToInvCrossTalk(true);
0129       break;
0130     case '?':
0131       std::cout<<"HGCROCStudy: Option "<<optarg <<" not supported, will be ignored "<<std::endl;
0132       break;
0133     case 'h':
0134       PrintHelp(argv[0]);
0135       return 0;
0136     }
0137   }
0138   if(!AnAnalysis.CheckAndOpenIO()){
0139     std::cout<<"Check input and configurations, inconsistency or error with I/O detected"<<std::endl;
0140     PrintHelp(argv[0]);
0141     return -1;
0142   }
0143 
0144   AnAnalysis.Process();
0145   std::cout<<"Exiting"<<std::endl;
0146   return 0;
0147 }