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 }