* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-Revision 1.10 2006/01/27 09:51:37 morsch
-Some small corrections to avoid infinite loops at high momenta.
-(A. de Falco)
-
-Revision 1.9 2004/02/03 16:45:20 morsch
-Unique name for functions (TF1).
-
-Revision 1.8 2004/01/27 18:02:38 hristov
-Removing some warning (Sun)
-
-Revision 1.7 2003/11/13 14:21:57 morsch
-Coding Rule violation corrections.
-
-Revision 1.6 2003/08/12 15:16:25 morsch
-Saver initialisation of fFitp array. (Lenaic COUEDEL)
-
-Revision 1.5 2003/08/05 16:14:20 morsch
-Some problems with too big fluctuations corrected. (A. de Falco)
-
-Revision 1.2 2003/01/08 10:29:33 morsch
-Path to data file changed.
-
-Revision 1.1 2003/01/06 10:13:33 morsch
-First commit.
-
-*/
+/* $Id$ */
//-------------------------------------------------------------------------
// Class AliMUONFastTracking
// AliFastMuonTrackingRes.
//-------------------------------------------------------------------------
-#include "AliMUONFastTracking.h"
-#include "AliMUONFastTrackingEntry.h"
-#include <TSpline.h>
-#include <TFile.h>
-#include <TH3.h>
-#include <TF1.h>
-#include <TRandom.h>
-#include <stdlib.h>
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
+
#include <Riostream.h>
+#include <TF1.h>
+#include <TFile.h>
+#include <TH3.h>
+#include <TMath.h>
+#include <TRandom.h>
+#include <TSpline.h>
+
+#include "AliMUONFastTracking.h"
+#include "AliMUONFastTrackingEntry.h"
ClassImp(AliMUONFastTracking)
AliMUONFastTracking* AliMUONFastTracking::fgMUONFastTracking=NULL;
static Double_t FitP(Double_t *x, Double_t *par){
+// Fit function
Double_t dx = x[0] - par[0];
Double_t dx2 = x[0] - par[4];
Double_t sigma = par[1] * ( 1 + par[2] * dx);
return TMath::Abs(value);
}
-AliMUONFastTracking::AliMUONFastTracking(const AliMUONFastTracking & ft):TObject()
+AliMUONFastTracking::AliMUONFastTracking(const AliMUONFastTracking & ft):
+ TObject(),
+ fNbinp(10),
+ fPmin(0.),
+ fPmax(200.),
+ fDeltaP((fPmax-fPmin)/fNbinp),
+ fNbintheta(10),
+ fThetamin(2.),
+ fThetamax(9.),
+ fDeltaTheta((fThetamax-fThetamin)/fNbintheta),
+ fNbinphi(10),
+ fPhimin(-180.),
+ fPhimax(180.),
+ fDeltaPhi((fPhimax-fPhimin)/fNbinphi),
+ fPrintLevel(1),
+ fBkg(0.),
+ fSpline(0),
+ fClusterFinder(kOld)
{
// Copy constructor
ft.Copy(*this);
}
}
-AliMUONFastTracking::AliMUONFastTracking()
+AliMUONFastTracking::AliMUONFastTracking():
+ fNbinp(10),
+ fPmin(0.),
+ fPmax(200.),
+ fDeltaP((fPmax-fPmin)/fNbinp),
+ fNbintheta(10),
+ fThetamin(2.),
+ fThetamax(9.),
+ fDeltaTheta((fThetamax-fThetamin)/fNbintheta),
+ fNbinphi(10),
+ fPhimin(-180.),
+ fPhimax(180.),
+ fDeltaPhi((fPhimax-fPhimin)/fNbinphi),
+ fPrintLevel(1),
+ fBkg(0.),
+ fSpline(0),
+ fClusterFinder(kOld)
{
//
// constructor
}
}
}
-
- fClusterFinder = kOld;
- fPrintLevel = 1;
- // read binning; temporarily put by hand
- Float_t pmin = 0, pmax = 200;
- Int_t nbinp = 10;
- Float_t thetamin = 2, thetamax = 9;
- Int_t nbintheta=10;
- Float_t phimin = -180, phimax =180;
- Int_t nbinphi=10;
- //--------------------------------------
-
- fNbinp = nbinp;
- fPmin = pmin;
- fPmax = pmax;
-
- fNbintheta = nbintheta;
- fThetamin = thetamin;
- fThetamax = thetamax;
-
- fNbinphi = nbinphi;
- fPhimin = phimin;
- fPhimax = phimax;
-
- fDeltaP = (fPmax-fPmin)/fNbinp;
- fDeltaTheta = (fThetamax-fThetamin)/fNbintheta;
- fDeltaPhi = (fPhimax-fPhimin)/fNbinphi;
}
void AliMUONFastTracking::Init(Float_t bkg)
}
char filename [100];
- if (fClusterFinder==kOld) sprintf (filename,"$(ALICE_ROOT)/FASTSIM/data/MUONtrackLUT.root");
- else sprintf (filename,"$(ALICE_ROOT)/FASTSIM/data/MUONtrackLUT-AZ.root");
+ if (fClusterFinder==kOld) snprintf (filename, 100, "$(ALICE_ROOT)/FASTSIM/data/MUONtrackLUT.root");
+ else snprintf (filename, 100, "$(ALICE_ROOT)/FASTSIM/data/MUONtrackLUT-AZ.root");
TFile *file = new TFile(filename);
ReadLUT(file);
const Float_t kBkg[4] = {0, 0.5, 1, 2};
for (Int_t ibkg=0; ibkg<4; ibkg++) {
- sprintf (tag,"BKG%g",kBkg[ibkg]);
+ snprintf (tag, 40, "BKG%g",kBkg[ibkg]);
file->cd(tag);
for (Int_t isplp = 0; isplp<kSplitP; isplp++) {
for (Int_t ispltheta = 0; ispltheta<kSplitTheta; ispltheta++) {
- sprintf (tag2,"heff[%d][%d]",isplp,ispltheta);
+ snprintf (tag2, 40, "heff[%d][%d]",isplp,ispltheta);
heff[isplp][ispltheta] = (TH3F*)gDirectory->Get(tag2);
- sprintf (tag2,"hacc[%d][%d]",isplp,ispltheta);
+ snprintf (tag2, 40, "hacc[%d][%d]",isplp,ispltheta);
hacc[isplp][ispltheta] = (TH3F*)gDirectory->Get(tag2);
}
}
ysigmaphi[ip] = fCurrentEntry[ip][itheta][iphi]->GetSigmaphi();
}
if (fPrintLevel>3) cout << " creating new spline " << splname << endl;
- sprintf (splname,"fSplineEff[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineEff[%d][%d]",ispline,ivar);
fSplineEff[ispline][ivar] = new TSpline3(splname,xsp2,yeff,5 * nbins[ivar]);
- sprintf (splname,"fSplineAcc[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineAcc[%d][%d]",ispline,ivar);
fSplineAcc[ispline][ivar] = new TSpline3(splname,xsp2,yacc,5 * nbins[ivar]);
- sprintf (splname,"fSplineSigmap[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineSigmap[%d][%d]",ispline,ivar);
fSplineSigmap[ispline][ivar] = new TSpline3(splname,xspl,ysigmap,nbins[ivar]);
- sprintf (splname,"fSplineSigma1p[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineSigma1p[%d][%d]",ispline,ivar);
fSplineSigma1p[ispline][ivar] = new TSpline3(splname,xspl,ysigma1p,nbins[ivar]);
- sprintf (splname,"fSplineSigmatheta[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineSigmatheta[%d][%d]",ispline,ivar);
fSplineSigmatheta[ispline][ivar] = new TSpline3(splname,xspl,ysigmatheta,nbins[ivar]);
- sprintf (splname,"fSplineSigmaphi[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineSigmaphi[%d][%d]",ispline,ivar);
fSplineSigmaphi[ispline][ivar] = new TSpline3(splname,xspl,ysigmaphi,nbins[ivar]);
ispline++;
}
ysigmaphi[itheta] = fCurrentEntry[ip][itheta][iphi]->GetSigmaphi();
}
if (fPrintLevel>3) cout << " creating new spline " << splname << endl;
- sprintf (splname,"fSplineEff[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineEff[%d][%d]",ispline,ivar);
fSplineEff[ispline][ivar] = new TSpline3(splname,xspl,yeff, nbins[ivar]);
- sprintf (splname,"fSplineAcc[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineAcc[%d][%d]",ispline,ivar);
fSplineAcc[ispline][ivar] = new TSpline3(splname,xspl,yacc, nbins[ivar]);
- sprintf (splname,"fSplineSigmap[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineSigmap[%d][%d]",ispline,ivar);
fSplineSigmap[ispline][ivar] = new TSpline3(splname,xspl,ysigmap,nbins[ivar]);
- sprintf (splname,"fSplineSigma1p[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineSigma1p[%d][%d]",ispline,ivar);
fSplineSigma1p[ispline][ivar] = new TSpline3(splname,xspl,ysigma1p,nbins[ivar]);
- sprintf (splname,"fSplineSigmatheta[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineSigmatheta[%d][%d]",ispline,ivar);
fSplineSigmatheta[ispline][ivar] = new TSpline3(splname,xspl,ysigmatheta,nbins[ivar]);
- sprintf (splname,"fSplineSigmaphi[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineSigmaphi[%d][%d]",ispline,ivar);
fSplineSigmaphi[ispline][ivar] = new TSpline3(splname,xspl,ysigmaphi,nbins[ivar]);
ispline++;
}
ysigmaphi[iphi] = fCurrentEntry[ip][itheta][iphi]->GetSigmaphi();
}
if (fPrintLevel>3) cout << " creating new spline " << splname << endl;
- sprintf (splname,"fSplineEff[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineEff[%d][%d]",ispline,ivar);
fSplineEff[ispline][ivar] = new TSpline3(splname,xspl,yeff, nbins[ivar]);
- sprintf (splname,"fSplineAcc[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineAcc[%d][%d]",ispline,ivar);
fSplineAcc[ispline][ivar] = new TSpline3(splname,xspl,yacc, nbins[ivar]);
- sprintf (splname,"fSplineSigmap[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineSigmap[%d][%d]",ispline,ivar);
fSplineSigmap[ispline][ivar] = new TSpline3(splname,xspl,ysigmap,nbins[ivar]);
- sprintf (splname,"fSplineSigma1p[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineSigma1p[%d][%d]",ispline,ivar);
fSplineSigma1p[ispline][ivar] = new TSpline3(splname,xspl,ysigma1p,nbins[ivar]);
- sprintf (splname,"fSplineSigmatheta[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineSigmatheta[%d][%d]",ispline,ivar);
fSplineSigmatheta[ispline][ivar] = new TSpline3(splname,xspl,ysigmatheta,nbins[ivar]);
- sprintf (splname,"fSplineSigmaphi[%d][%d]",ispline,ivar);
+ snprintf (splname, 40, "fSplineSigmaphi[%d][%d]",ispline,ivar);
fSplineSigmaphi[ispline][ivar] = new TSpline3(splname,xspl,ysigmaphi,nbins[ivar]);
ispline++;
}
// gets the correct prec-pgen distribution for a given LUT cell
if (!fFitp[ip][itheta][iphi]) {
char name[256];
- sprintf(name, "fit_%d_%d_%d", ip, itheta, iphi);
+ snprintf(name, 256, "fit_%d_%d_%d", ip, itheta, iphi);
fFitp[ip][itheta][iphi] = new TF1(name ,FitP,-20.,20.,6);
fFitp[ip][itheta][iphi]->SetNpx(500);
fFitp[ip][itheta][iphi]->SetParameters(0.,0.,0.,0.,0.,0.);