]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCRF1D.cxx
Added "Save Viewers" button and functionality to alihlteve
[u/mrichter/AliRoot.git] / TPC / AliTPCRF1D.cxx
index dd1c4c249eecd291af063fe94325caabcd647967..9b12840833f250a6ec2cce299cff3545b42b96bd 100644 (file)
 
 //
 
-#include "TMath.h"
-#include "AliTPCRF1D.h"
-#include "TF2.h"
 #include <Riostream.h>
-#include "TCanvas.h"
-#include "TPad.h"
-#include "TStyle.h"
-#include "TH1.h"
+#include <TCanvas.h>
+#include <TClass.h>
+#include <TF2.h>
+#include <TH1.h>
+#include <TMath.h>
+#include <TPad.h>
 #include <TString.h>
+#include <TStyle.h>
+
+#include "AliTPCRF1D.h"
 
 extern TStyle * gStyle; 
 
@@ -76,6 +78,19 @@ ClassImp(AliTPCRF1D)
 
 
 AliTPCRF1D::AliTPCRF1D(Bool_t direct,Int_t np,Float_t step)
+           :TObject(),
+           fNRF(0),
+            fDSTEPM1(0.),
+            fcharge(0),
+            forigsigma(0.),
+            fpadWidth(3.5),
+            fkNorm(0.5),
+            fInteg(0.),
+            fGRF(0),
+            fSigma(0.),
+            fOffset(0.),
+            fDirect(kFALSE),
+            fPadDistance(0.)
 {
   //default constructor for response function object
   fDirect=direct;
@@ -84,15 +99,22 @@ AliTPCRF1D::AliTPCRF1D(Bool_t direct,Int_t np,Float_t step)
   fcharge = new Float_t[fNRF];
   if (step>0) fDSTEPM1=1./step;
   else fDSTEPM1 = 1./fgRFDSTEP;
-  fSigma = 0;
-  fGRF = 0;
-  fkNorm = 0.5;
-  fpadWidth = 3.5;
-  forigsigma=0.;
-  fOffset = 0.;
 }
 
-AliTPCRF1D::AliTPCRF1D(const AliTPCRF1D &prf):TObject(prf)
+AliTPCRF1D::AliTPCRF1D(const AliTPCRF1D &prf)
+           :TObject(prf),
+           fNRF(0),
+            fDSTEPM1(0.),
+            fcharge(0),
+            forigsigma(0.),
+            fpadWidth(3.5),
+            fkNorm(0.5),
+            fInteg(0.),
+            fGRF(0),
+            fSigma(0.),
+            fOffset(0.),
+            fDirect(kFALSE),
+            fPadDistance(0.)
 {
   
   //
@@ -136,11 +158,11 @@ Float_t AliTPCRF1D::GetRF(Float_t xin)
   //function which return response
   //for the charge in distance xin 
   //return linear aproximation of RF
-  Float_t x = TMath::Abs((xin-fOffset)*fDSTEPM1)+fNRF/2;
+  Float_t x = (xin-fOffset)*fDSTEPM1+fNRF/2;
   Int_t i1=Int_t(x);
   if (x<0) i1-=1;
   Float_t res=0;
-  if (i1+1<fNRF)
+  if (i1+1<fNRF &&i1>0)
     res = fcharge[i1]*(Float_t(i1+1)-x)+fcharge[i1+1]*(x-Float_t(i1));    
   return res;
 }
@@ -227,6 +249,8 @@ void AliTPCRF1D::SetGati(Float_t K3, Float_t padDistance, Float_t padWidth,
   sprintf(fType,"Gati");
 }
 
+
+
 void AliTPCRF1D::DrawRF(Float_t x1,Float_t x2,Int_t N)
 { 
   //
@@ -328,4 +352,15 @@ void AliTPCRF1D::Streamer(TBuffer &R__b)
       AliTPCRF1D::Class()->WriteBuffer(R__b, this);
    }
 }
+
+
+Double_t  AliTPCRF1D::Gamma4(Double_t x, Double_t p0, Double_t p1){
+  //
+  // Gamma 4 Time response function of ALTRO
+  //
+  if (x<0) return 0;
+  Double_t g1 = TMath::Exp(-4.*x/p1);
+  Double_t g2 = TMath::Power(x/p1,4);
+  return p0*g1*g2;
+}