#include "hitreader.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "TStopwatch.h" #include "Math/MinimizerOptions.h" #include "TVirtualFitter.h" #include "TMatrixD.h" #include "TApplication.h" #include "TRint.h" #include "TSystem.h" #include "TMultiGraph.h" #include "TObject.h" //function declarations int analyse(int argc, char **argv); int opendatafiles(int argc, char ** argv); void histograms(int argc, char ** argv); int closedatafiles(); int set_background_v2(int start_frame, int frames); //////global variables //opendatafiles long int fileframesize; char * filename; ifstream file; TFile *rootFile; //output root file TTree *rootTree; char * rootfilename; char * offsetfilename; ifstream offsetfile; struct bpm_frame_v2 { double channel_amp[320]; double channel_position[320]; double avg_position; double avg_width; double integratedsignalamp; int maxchannel; double maxchannel_amp; }; bpm_frame_v2 board_b[4]; bpm_frame_v2 board_b_bkg[4]; bpm_frame_v2 readboard(Fullframe frame, int boardnumber); int framestart = 0; struct beamRecon { double Position; double Focus; double Peak; double Rsqr; double Skew; double Kurtosis; double Sum; int n_channels; }; beamRecon beamreconstruction(bpm_frame_v2 frametoanalyse, double threshold); beamRecon BPMbeamrecon_0,BPMbeamrecon_1,BPMbeamrecon_2,BPMbeamrecon_3; beamRecon BPMbeamrecon_Zeroed; TGraph * board_graph = new TGraph(320); TF1 * beamrecon_function1 = new TF1("beamrecon_function1", "gaus(0)",0.,320.); class Channel{ public: double amplitude;; double position; int chnumber; int last_neighbour; int next_neighbour; }; bool CompareChannels(Channel A, Channel B); double avg ( vector v ); double variance ( vector v , double mean ); bool visualize = false; int eventID; ////histograms TH2D * TH2D_b0_signal_vs_channel; TH2D * TH2D_b1_signal_vs_channel; TH2D * TH2D_b2_signal_vs_channel; TH2D * TH2D_b3_signal_vs_channel;