]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FASTSIM/AliMUONFastTracking.cxx
Added possibility to request SPD kFirst for candidates below a certain pt (Zaida...
[u/mrichter/AliRoot.git] / FASTSIM / AliMUONFastTracking.cxx
index c97cf3fd4b4d9b2ff41be83d78aff1b785ae1ed3..64c1ff2227429d617f1f0dd438c3a846a9935b1a 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-Revision 1.12  2006/08/28 10:31:17  morsch
-Coding rule violations corrected (A. de Falco)
-
-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 
@@ -56,17 +26,20 @@ First commit.
 //  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)
 
@@ -74,6 +47,7 @@ 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);
@@ -170,8 +144,8 @@ 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);
@@ -194,13 +168,13 @@ void AliMUONFastTracking::ReadLUT(TFile* 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);
       }
     }    
@@ -645,17 +619,17 @@ void AliMUONFastTracking::SetSpline(){
        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++;
     }
@@ -674,17 +648,17 @@ void AliMUONFastTracking::SetSpline(){
        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++;
     }
@@ -703,17 +677,17 @@ void AliMUONFastTracking::SetSpline(){
        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++;
     }
@@ -800,7 +774,7 @@ TF1* AliMUONFastTracking::GetFitP(Int_t ip,Int_t itheta,Int_t iphi) {
   // 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.);