#ifndef _MultiVect #define _MultiVect // // MultiVector // // Class handling files produced with fitreak (LabView program) // #include "TObject.h" #include "TH1.h" #include "TMath.h" #include "TArray.h" #include "TArrayI.h" #include "TArrayF.h" #include "TGraph.h" #include "TGraphErrors.h" #include #include #include "TClonesArray.h" #include "TPaveText.h" #include "TText.h" #include "TF1.h" class MultiVect : public TObject { private: Int_t NumX; Int_t NumY; Int_t NumETime; TArrayF mv; Float_t ETime[900]; public: Float_t FDVError; // FDV measurement error ; ussually ~1 Float_t TimeError; // Error made on time measurement ; ussually 0 TGraphErrors *cg; // CurrentGraph (FDV or Neff) TString GrafName; // current graph name Int_t Eqv; // Eqvivalent time calculation Eqv=1 ON Eqv=0 OFF; Float_t Ea; // Activation energy for time scale calculation (Reverse annealing 1.31, Current annealing 1.1; Float_t StartTime; // StartTime MultiVect(char *, Int_t=1000, Int_t=9); ~MultiVect(); Int_t GetNumX() {return NumX;}; //Returns number of entries in a row Int_t GetNumY() {return NumY;}; //Returns number of columns void AddVector(Int_t, Float_t *); //Add a vector in the memomory !! Int_t=column number , Floa_t *=vector void Read(FILE *,Int_t =0,Int_t =1); void ReadEqvTime(Char_t *); TGraph *FDV(Int_t start=0,Int_t=-1111,Float_t =3600,Int_t = 6, Float_t=-1111); TGraph *Neff(Float_t,Int_t=0,Int_t =-1111,Float_t =3600,Float_t=300); TF1 *Fit(char *,Double_t,Double_t,Double_t *par); TF1 *Slope(Float_t,Float_t); TGraph *Current(Int_t=0, Int_t =-1111, Float_t =3600, Float_t =0); TGraph *T(Int_t =0, Int_t =-1111, Float_t =3600); void Print(Int_t=1); Float_t GetTime(Int_t,Float_t=3600,Int_t=0); Float_t GetTime(Float_t *,Float_t=3600,Int_t=0); Float_t EqvTime(Float_t,Float_t,Float_t,Float_t=1.31); void ShiftPoints(Float_t,Float_t,Float_t,Float_t=-273, Float_t=400); void ScalePoints(Float_t,Float_t,Float_t,Float_t=-273, Float_t=400); inline Float_t GetT(Int_t i) {return(mv[i*NumX+8]);} inline Float_t GetI(Int_t i) {return(mv[i*NumX+7]);} inline Float_t GetFDV(Int_t i) {return(mv[i*NumX+6]);} inline void SetFDV(Int_t i,Float_t x) {mv[i*NumX+6]=x;} inline void SetI(Int_t i,Float_t x) {mv[i*NumX+7]=x;} inline void SetT(Int_t i,Float_t x) {mv[i*NumX+8]=x;} ClassDef(MultiVect,1) }; #endif