ROOT logo
#ifndef _MultiWF
#define _MultiWF

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// MultiWF                                                              //
//                                                                      //
// Managing Multi waveform                                              //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TObject.h"
#include "TH1.h"
#include "TMath.h"
#include "TArray.h"
#include "TArrayI.h"
#include "TArrayF.h"
#include "TGraph.h"
#include <stdio.h>
#include <stdlib.h>
#include "TClonesArray.h"
#include "TPaveText.h"
#include "TText.h"
#include "Elec.h"
#include "TF1.h"
#include "MeasureWF.h"
//#define HeaderSize 44

Double_t langaufun(Double_t *, Double_t *);

class  MultiWF : public TObject {

private:
  FILE	 	 *in;	 	//Stream
  Int_t          HeaderSize;    //Size of the header
  Int_t          Events;        //Number of Events
  Int_t 	 Points;	//Number of points per event
  Float_t 	 t0;		//Starting point
  Float_t	 deltat;       	//distance between two points
  Int_t          NumU;
  Int_t          NumUAver;
  Int_t          NumCh;
  TArrayF 	 Date;		//Date of the Measurement (or simulation)
  TArrayF        Voltage;      //Array of Voltages  
  TArrayF	 Current; 	//Array of Currents
  TArrayF	 Temperature;	//Array of Temperatures
  Char_t         Comment[2000]; //Comment
  Int_t          SelPlot;       //Select plot
  
  void swoo(char *,char *);
  void swooip(float *, int);
  Int_t i2a(Char_t *,Float_t,Int_t=1);

 public:
  Float_t        **Ebuf;        //Event Buffer
  TH1F        **hisa;        //histogram array
  Float_t Weight;
  TPaveText *pt;
  Int_t cevent;
  TH1F *chis;
  Float_t cm_mint;
  Float_t cm_maxt;
  Int_t CCmode;
  // horizontal correction 
  Int_t TimeC;
  Float_t TimeThr; 
  // end of horizontal correction
  Float_t cmode; //select exclusion =1 (cut region) =0 (except region)
  Float_t *Cmode;
  Int_t cmcut;  
  Float_t cmcut_low;
  Float_t cmcut_hi;
  //////////////////////////////////////////////////
  // Filtering variables
  Bool_t FOnOff;
  Float_t Fxlow;
  Float_t Fxhi; 
  Float_t Fylow; 
  Float_t Fyhi;
  Float_t FIntPass;
  Float_t FIntPassHi;
  Float_t Fmaxhi;
  Float_t Fmaxlo;
  Int_t Fmode;

  ///////////////////////////////////////////////////

MultiWF(Char_t *,Float_t=-1111.,Int_t=0);
~MultiWF();
Int_t CheckSize();
void GetNextEvent();
 void DrawNextEvent();
Int_t GetPoints() {return(Points);};
Float_t Gett0() {return(t0);};
Float_t GetDeltat() {return(deltat);};
Int_t GetEvents() {return(Events);};
 Float_t GetU(int ind=0) {return(Voltage[ind]); }
 Int_t GetNU() {return (NumU);} 
 Float_t GetT(int ind=0) {return(Temperature[ind]); }
 Float_t GetI(int ind=0) {return(Current[ind]); }

void Sett0(Float_t x) {t0=x; delete chis; chis=new TH1F("Event View","Event View",Points,t0*1e9,(t0+Points*deltat)*1e9);};
void CommonMode();
Float_t Integral(Float_t=-1111,Float_t=-1111);
void EShaping(Elec *,TH1F *,Int_t=1);
void SetNewFile(char *);
void Rewind(Int_t=0); // {rewind(i;for(int i=0;i<};
TH1F *Average(Int_t , Int_t);
 TH1F *AverPlot(Int_t, Int_t=0, Int_t=-1,Int_t=-1,Int_t=-1);
 void Persistance(Int_t, Int_t, Int_t = -1111);
 MeasureWF *AverTime(Int_t,Int_t);

TH1F *Add(Int_t=0, Int_t end=0);
void Info();
 void SelectPlot(Int_t=0);
 void PlotEvent(Int_t);
inline TH1F *operator()(Int_t index) { Rewind(index); return chis;};

TH1F *Time(Float_t=1,Float_t=0, Float_t=-1111,Int_t =1,Float_t=0);
 TH1F *Specter(Float_t=0, Float_t=-1111,Float_t=1,Int_t=100,Float_t=-0.5,Float_t=5,Int_t=-1,Int_t=-1);
 TH1F *PHSpecter(Float_t=10, Int_t=180,Float_t=0,Float_t=6,Float_t=-1e6,Float_t=-1e6,Int_t mode=0,Int_t=-1,Int_t=-1);
 TH1F *CMHisto();
TH1F *WaveHisto(Float_t, Int_t ,Float_t ,Float_t,Int_t=-1,Int_t=-1 );
void FitShape(Int_t, Float_t );
inline void SetPoints(Int_t x) {Points=x;};
///////
 MeasureWF *GetWF();
 Bool_t Filter();
 void SetNumAver(Int_t x) {NumUAver=x;}; 
///////
void WF(Int_t,Int_t,Int_t,Float_t=-5,Float_t=30,Int_t=0);
void Legend(TH1F *, Int_t, Int_t,Int_t=1);

/////////////////
 void CorrectTime(Int_t , Float_t );
///////////////////////////
// MULTI PLOT FUNCTION ////
// void PHSpecterMulti(Int_t, Int

ClassDef(MultiWF,1) 
};


#endif


















 MultiWF.h:1
 MultiWF.h:2
 MultiWF.h:3
 MultiWF.h:4
 MultiWF.h:5
 MultiWF.h:6
 MultiWF.h:7
 MultiWF.h:8
 MultiWF.h:9
 MultiWF.h:10
 MultiWF.h:11
 MultiWF.h:12
 MultiWF.h:13
 MultiWF.h:14
 MultiWF.h:15
 MultiWF.h:16
 MultiWF.h:17
 MultiWF.h:18
 MultiWF.h:19
 MultiWF.h:20
 MultiWF.h:21
 MultiWF.h:22
 MultiWF.h:23
 MultiWF.h:24
 MultiWF.h:25
 MultiWF.h:26
 MultiWF.h:27
 MultiWF.h:28
 MultiWF.h:29
 MultiWF.h:30
 MultiWF.h:31
 MultiWF.h:32
 MultiWF.h:33
 MultiWF.h:34
 MultiWF.h:35
 MultiWF.h:36
 MultiWF.h:37
 MultiWF.h:38
 MultiWF.h:39
 MultiWF.h:40
 MultiWF.h:41
 MultiWF.h:42
 MultiWF.h:43
 MultiWF.h:44
 MultiWF.h:45
 MultiWF.h:46
 MultiWF.h:47
 MultiWF.h:48
 MultiWF.h:49
 MultiWF.h:50
 MultiWF.h:51
 MultiWF.h:52
 MultiWF.h:53
 MultiWF.h:54
 MultiWF.h:55
 MultiWF.h:56
 MultiWF.h:57
 MultiWF.h:58
 MultiWF.h:59
 MultiWF.h:60
 MultiWF.h:61
 MultiWF.h:62
 MultiWF.h:63
 MultiWF.h:64
 MultiWF.h:65
 MultiWF.h:66
 MultiWF.h:67
 MultiWF.h:68
 MultiWF.h:69
 MultiWF.h:70
 MultiWF.h:71
 MultiWF.h:72
 MultiWF.h:73
 MultiWF.h:74
 MultiWF.h:75
 MultiWF.h:76
 MultiWF.h:77
 MultiWF.h:78
 MultiWF.h:79
 MultiWF.h:80
 MultiWF.h:81
 MultiWF.h:82
 MultiWF.h:83
 MultiWF.h:84
 MultiWF.h:85
 MultiWF.h:86
 MultiWF.h:87
 MultiWF.h:88
 MultiWF.h:89
 MultiWF.h:90
 MultiWF.h:91
 MultiWF.h:92
 MultiWF.h:93
 MultiWF.h:94
 MultiWF.h:95
 MultiWF.h:96
 MultiWF.h:97
 MultiWF.h:98
 MultiWF.h:99
 MultiWF.h:100
 MultiWF.h:101
 MultiWF.h:102
 MultiWF.h:103
 MultiWF.h:104
 MultiWF.h:105
 MultiWF.h:106
 MultiWF.h:107
 MultiWF.h:108
 MultiWF.h:109
 MultiWF.h:110
 MultiWF.h:111
 MultiWF.h:112
 MultiWF.h:113
 MultiWF.h:114
 MultiWF.h:115
 MultiWF.h:116
 MultiWF.h:117
 MultiWF.h:118
 MultiWF.h:119
 MultiWF.h:120
 MultiWF.h:121
 MultiWF.h:122
 MultiWF.h:123
 MultiWF.h:124
 MultiWF.h:125
 MultiWF.h:126
 MultiWF.h:127
 MultiWF.h:128
 MultiWF.h:129
 MultiWF.h:130
 MultiWF.h:131
 MultiWF.h:132
 MultiWF.h:133
 MultiWF.h:134
 MultiWF.h:135
 MultiWF.h:136
 MultiWF.h:137
 MultiWF.h:138
 MultiWF.h:139
 MultiWF.h:140
 MultiWF.h:141
 MultiWF.h:142
 MultiWF.h:143
 MultiWF.h:144
 MultiWF.h:145
 MultiWF.h:146
 MultiWF.h:147
 MultiWF.h:148
 MultiWF.h:149
 MultiWF.h:150
 MultiWF.h:151
 MultiWF.h:152
 MultiWF.h:153
 MultiWF.h:154
 MultiWF.h:155
 MultiWF.h:156
 MultiWF.h:157
 MultiWF.h:158
 MultiWF.h:159
 MultiWF.h:160
 MultiWF.h:161
 MultiWF.h:162