#ifndef __UPS_EVT__ #define __UPS_EVT__ #include "TROOT.h" #include "TObject.h" #include "TClonesArray.h" #include "TDirectory.h" #include "TF1.h" #include "TH1.h" #include "TH1D.h" #include "TH1F.h" #include "TH2F.h" #include "TMath.h" #include "TVector3.h" #include "TMatrixD.h" #include "TVectorD.h" #include #include class ASYrawEvent; class ASYrawFadcSignal; double RC4DEXP2TR1(Double_t *xx, Double_t *par); double RC4DEXP2TR(Double_t *xx, Double_t *par); class ASYrawFadcSignal : public TObject{ public: Short_t module; // FADC module Short_t channel; // FADC channel Int_t size; // number of channels in time spectrum Int_t *data; //[size] raw time spectrum //Short_t *data; //[size] raw time spectrum Float_t G1;// gates Float_t G2; Float_t G3; Float_t G4; Float_t G5; Float_t G6; ASYrawFadcSignal(); ASYrawFadcSignal(Int_t ssize); virtual ~ASYrawFadcSignal(){Clear();} void SetEvent(ASYrawEvent *evt0){evt = evt0;} ASYrawEvent *GetEvent() const {return evt;} void Clear(Option_t *option=""); TH1D *GetHraw(){return hraw;} TH1D *GetHist(){return hist;} TH1D *GetHaux(){return haux;} void SetHraw(); //put raw data Int_to histogram void SetHist(Float_t pds); void SetHaux(); float FindPds16(); float FindPds(); float FindT0(); void SmooGa(TH1D* hin, TH1D* hout, const char* hout_title, const double sigma, const double nsig); //Gaussin smoothing void SmooSinc(); //Sinc smoothing (antialias) void SmooMed1(TH1D* hin, TH1D* hout, const char* hout_title); //Median smoothing K=1 void SmooMed(TH1D* hin, TH1D* hout, const char* hout_title, const int K); //Median smoothing void SavGol(); //SavGol smoothing TH1D *hraw;//! //raw data put Int_to histogram TH1D *hist;//! //raw data with subtracted pedestal TH1D *haux;//! //aux histogram (e.g. smoothed data, derivative etc) Float_t pds;//! // pedestal Float_t pdsrms;//! // sigma Float_t t0;//! // t0 ASYrawEvent *evt; //! private: ClassDef(ASYrawFadcSignal,1) //A raw signal segment }; /////////////////////////////////////////////////////////////////////////////// class ASYrawEvent : public TObject{ public: Int_t number; // event number Int_t nsignal; // total number of FADC channels // Int_t ncamac; // total number of camac channels Short_t camac[56]; // TClonesArray *signal; //-> // TClonesArray *camac; //-> ASYrawEvent(); virtual ~ASYrawEvent(); void Clear(Option_t *opt=""); ASYrawFadcSignal* AddSignal(Int_t ssize){return new((*signal)[nsignal++]) ASYrawFadcSignal(ssize);} // Setup signal ASYrawFadcSignal* Signal(Int_t n){ ASYrawFadcSignal *sig = (ASYrawFadcSignal*)((*signal)[n]); sig->hraw=0; sig->hist=0; sig->haux=0; sig->SetEvent(this); sig->SetHraw(); return sig; } // Get signal ASYrawFadcSignal* ProcessedSignal(Int_t n); // Get signal // ASYrawCamac* AddCamac(Int_t ssize){return new((*camac)[ncamac++]) ASYrawCamac(ssize);} // Setup signal // ASYrawCamac* Camac(Int_t n){ // ASYrawCamac *cam = (ASYrawCamac*)((*camac)[n]); // cam->SetEvent(this); // return cam; // } // Get camac[n] private: ClassDef(ASYrawEvent,1) //Event structure }; #endif ///////////////////////////////////////////////////////////////////////////////