* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-Revision 1.8 2002/02/12 16:07:43 kowal2
-coreccted bug in SetGauss
+/* $Id$ */
-Revision 1.7 2001/01/26 19:57:22 hristov
-Major upgrade of AliRoot code
-
-Revision 1.6 2000/06/30 12:07:50 kowal2
-Updated from the TPC-PreRelease branch
-
-Revision 1.5.4.3 2000/06/26 07:39:42 kowal2
-Changes to obey the coding rules
-
-Revision 1.5.4.2 2000/06/25 08:38:41 kowal2
-Splitted from AliTPCtracking
-
-Revision 1.5.4.1 2000/06/14 16:48:24 kowal2
-Parameter setting improved. Removed compiler warnings
-
-Revision 1.5 2000/04/17 09:37:33 kowal2
-removed obsolete AliTPCDigitsDisplay.C
-
-Revision 1.4.8.2 2000/04/10 08:53:09 kowal2
-
-Updates by M. Ivanov
-
-
-Revision 1.4 1999/09/29 09:24:34 fca
-Introduction of the Copyright and cvs Log
-
-*/
//-----------------------------------------------------------------------------
//
//
-#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;
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;
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),
+ 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.)
{
+
//
memcpy(this, &prf, sizeof(prf));
fcharge = new Float_t[fNRF];
memcpy(fcharge,prf.fcharge, fNRF);
- fGRF = new TF1(*(prf.fGRF));
+ fGRF = new TF1(*(prf.fGRF));
+ //PH Change the name (add 0 to the end)
+ TString s(fGRF->GetName());
+ s+="0";
+ fGRF->SetName(s.Data());
}
AliTPCRF1D & AliTPCRF1D::operator = (const AliTPCRF1D &prf)
fcharge = new Float_t[fNRF];
memcpy(fcharge,prf.fcharge, fNRF);
fGRF = new TF1(*(prf.fGRF));
+ //PH Change the name (add 0 to the end)
+ TString s(fGRF->GetName());
+ s+="0";
+ fGRF->SetName(s.Data());
return (*this);
}
//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;
}
fpadWidth = padWidth;
fkNorm = kNorm;
if (fGRF !=0 ) fGRF->Delete();
- fGRF = new TF1("fun",funGauss,-5,5,1);
+ fGRF = new TF1("funGauss",funGauss,-5,5,1);
funParam[0]=sigma;
forigsigma=sigma;
fGRF->SetParameters(funParam);
fpadWidth = padWidth;
fkNorm = kNorm;
if (fGRF !=0 ) fGRF->Delete();
- fGRF = new TF1("fun", funCosh, -5.,5.,2);
+ fGRF = new TF1("funCosh", funCosh, -5.,5.,2);
funParam[0]=sigma;
fGRF->SetParameters(funParam);
forigsigma=sigma;
fpadWidth = padWidth;
fkNorm = kNorm;
if (fGRF !=0 ) fGRF->Delete();
- fGRF = new TF1("fun", funGati, -5.,5.,2);
+ fGRF = new TF1("funGati", funGati, -5.,5.,2);
funParam[0]=padDistance;
funParam[1]=K3;
fGRF->SetParameters(funParam);
sprintf(fType,"Gati");
}
+
+
void AliTPCRF1D::DrawRF(Float_t x1,Float_t x2,Int_t N)
{
//
AliTPCRF1D::Class()->ReadBuffer(R__b, this);
//read functions
- if (strncmp(fType,"Gauss",3)==0) {delete fGRF; fGRF = new TF1("fun",funGauss,-5.,5.,4);}
- if (strncmp(fType,"Cosh",3)==0) {delete fGRF; fGRF = new TF1("fun",funCosh,-5.,5.,4);}
- if (strncmp(fType,"Gati",3)==0) {delete fGRF; fGRF = new TF1("fun",funGati,-5.,5.,4);}
+ if (strncmp(fType,"Gauss",3)==0) {delete fGRF; fGRF = new TF1("funGauss",funGauss,-5.,5.,4);}
+ if (strncmp(fType,"Cosh",3)==0) {delete fGRF; fGRF = new TF1("funCosh",funCosh,-5.,5.,4);}
+ if (strncmp(fType,"Gati",3)==0) {delete fGRF; fGRF = new TF1("funGati",funGati,-5.,5.,4);}
if (fGRF) fGRF->SetParameters(funParam);
} else {
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;
+}