New class AliGenMUONCocktail for muon signal generation added (G. Martinez)
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 26 Jan 2004 11:24:38 +0000 (11:24 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 26 Jan 2004 11:24:38 +0000 (11:24 +0000)
EVGEN/AliGenParam.cxx
EVGEN/AliGenParam.h
EVGEN/EVGENLinkDef.h
EVGEN/libEVGEN.pkg

index 4fefe48e44d9ac0ab398de6449cb036d3cd3b289..0fad3ae8c77f26765801fa8f1d676d37e98ca937 100644 (file)
@@ -34,6 +34,7 @@
 #include <TF1.h>
 #include <TCanvas.h>
 #include <TH1.h>
+#include <TMath.h>
 #include "AliMC.h"
 
 ClassImp(AliGenParam)
@@ -46,7 +47,6 @@ ClassImp(AliGenParam)
   */
   //End_Html
 
-//____________________________________________________________
 //____________________________________________________________
 AliGenParam::AliGenParam()
 {
@@ -60,7 +60,7 @@ AliGenParam::AliGenParam()
 
 
 }
-
+//____________________________________________________________
 AliGenParam::AliGenParam(Int_t npart, AliGenLib * Library,  Int_t param, char* tname):AliGenMC(npart)
 {
 // Constructor using number of particles parameterisation id and library
@@ -78,15 +78,13 @@ AliGenParam::AliGenParam(Int_t npart, AliGenLib * Library,  Int_t param, char* t
     SetForceDecay();
     SetDeltaPt(); 
 }
-
 //____________________________________________________________
-
-AliGenParam::AliGenParam(Int_t npart, Int_t param, char* tname):AliGenMC(npart)
+AliGenParam::AliGenParam(Int_t npart, Int_t param, const char* tname, const char* name):AliGenMC(npart)
 {
 // Constructor using parameterisation id and number of particles
 //
-    fName = "Param";
-    fTitle= "Particle Generator using pT and y parameterisation";
+  fName = name;
+  fTitle= "Particle Generator using pT and y parameterisation";
       
     AliGenLib* pLibrary = new AliGenMUONlib();
  
@@ -108,6 +106,7 @@ AliGenParam::AliGenParam(Int_t npart, Int_t param, char* tname):AliGenMC(npart)
     SetChildThetaRange(); 
     SetDeltaPt(); 
 }
+//____________________________________________________________
 
 AliGenParam::AliGenParam(Int_t npart, Int_t param,
                          Double_t (*PtPara) (Double_t*, Double_t*),
@@ -169,6 +168,7 @@ void AliGenParam::Init()
     char name[256];
     sprintf(name, "pt-parameterisation for %s", GetName());
     
+    if (fPtPara) fPtPara->Delete();
     fPtPara = new TF1(name, fPtParaFunc, fPtMin, fPtMax,0);
 //  Set representation precision to 10 MeV
     Int_t npx= Int_t((fPtMax - fPtMin) / fDeltaPt);
@@ -176,6 +176,7 @@ void AliGenParam::Init()
     fPtPara->SetNpx(npx);
 
     sprintf(name, "y-parameterisation  for %s", GetName());
+    if (fYPara) fYPara->Delete();
     fYPara  = new TF1(name, fYParaFunc, fYMin, fYMax, 0);
     
     sprintf(name, "pt-for-%s", GetName());
@@ -228,7 +229,9 @@ void AliGenParam::Generate()
 //
 //
 //  Reinitialize decayer
-    fDecayer->Init();
+  fDecayer->SetForceDecay(fForceDecay);
+  fDecayer->Init();
+
 //
   Float_t polar[3]= {0,0,0};  // Polarisation of the parent particle (for GEANT tracking)
   Float_t origin0[3];         // Origin of the generated parent particle (for GEANT tracking)
@@ -261,7 +264,7 @@ void AliGenParam::Generate()
   while (ipa<fNpart) {
       while(1) {
 //
-// particle type
+// particle type 
          Int_t iPart = fIpParaFunc(fRandom);
          fChildWeight=(fDecayer->GetPartialBranchingRatio(iPart))*fParentWeight;          
          TParticlePDG *particle = pDataBase->GetParticle(iPart);
@@ -459,6 +462,20 @@ void AliGenParam::Generate()
   } // event loop
   SetHighWaterMark(nt);
 }
+//____________________________________________________________________________________
+Float_t AliGenParam::GetRelativeArea(Float_t ptMin, Float_t ptMax, Float_t yMin, Float_t yMax, Float_t phiMin, Float_t phiMax)
+{
+//
+// Normalisation for selected kinematic region
+//
+  Float_t ratio =  
+    fPtPara->Integral(ptMin,ptMax) / fPtPara->Integral( fPtPara->GetXmin(), fPtPara->GetXmax()) *
+    fYPara->Integral(yMin,yMax)/fYPara->Integral(fYPara->GetXmin(),fYPara->GetXmax())   *
+    (phiMax-phiMin)/360.;
+  return TMath::Abs(ratio);
+}
+
+//____________________________________________________________________________________
 
 void AliGenParam::Draw( const char * /*opt*/)
 {
index 4788a2c1d33595b41f3221d18d707366ab559211..8dea777a4a0700b567e6ba6c860460fc90a71a8c 100644 (file)
@@ -6,7 +6,7 @@
 /* $Id$ */
 
 //
-// Class to generate particles from using paramtrized pT and y distributions.
+// Class to generate particles from using parametrized pT and y distributions.
 // Distributions are obtained from pointer to object of type AliGenLib.
 // (For example AliGenMUONlib)
 //
@@ -27,7 +27,7 @@ class AliGenParam : public AliGenMC
  public:
     AliGenParam();
     AliGenParam(Int_t npart, AliGenLib * Library, Int_t param, char* tname = 0);
-    AliGenParam(Int_t npart, Int_t param, char* tname = 0);
+    AliGenParam(Int_t npart, Int_t param, const char* tname = 0, const char* name = 0);
     AliGenParam(Int_t npart, Int_t param,
                Double_t (*PtPara)(Double_t*, Double_t*),
                Double_t (*YPara )(Double_t*, Double_t*),
@@ -44,6 +44,10 @@ class AliGenParam : public AliGenMC
     virtual void SetDeltaPt(Float_t delta=0.01) {fDeltaPt = delta;}
     virtual void SetDecayer(AliDecayer* decayer) {fDecayer = decayer;}
     virtual void Draw(const char * opt);
+    TF1 *  GetPt() { return fPtPara;}
+    TF1 *  GetY() {return fYPara;}
+    Float_t GetRelativeArea(Float_t ptMin, Float_t ptMax, Float_t yMin, Float_t yMax, Float_t phiMin, Float_t phiMax);
+
     AliGenParam & operator=(const AliGenParam & rhs);
  protected:
     Double_t (*fPtParaFunc)(Double_t*, Double_t*); //! Pointer to Pt parametrisation function
index bf8239f81a6cdc6ce977d425c6a31c627276020d..f5c3e82d40d22d2c58691caf254a8146cd36d108 100644 (file)
@@ -52,6 +52,7 @@
 #pragma link C++ class  AliSlowNucleonModel+;
 #pragma link C++ class  AliSlowNucleonModelExp+;
 #pragma link C++ class  AliVertexGenFile+;
+#pragma link C++ class  AliGenMUONCocktail+;
 #endif
 
 
index d7fc700a758cc5bb014f9becced36698345541cd..29330e1b073bb78d65b21a15bfd6faa66ba6d169 100644 (file)
@@ -18,7 +18,7 @@ SRCS          = AliGenHIJINGpara.cxx AliGenBox.cxx AliGenFixed.cxx \
                AliStructFuncType.cxx AliGenSlowNucleons.cxx \
                AliGenGeVSimEventHeader.cxx\
                AliSlowNucleonModel.cxx AliSlowNucleonModelExp.cxx \
-               AliVertexGenFile.cxx
+               AliVertexGenFile.cxx AliGenMUONCocktail.cxx
 
 # Headerfiles for this particular package (Path respect to own directory)
 HDRS= $(SRCS:.cxx=.h)