/*
$Log$
+Revision 1.1 2000/09/06 14:22:45 morsch
+Particle decayer virtual base class.
+
*/
+// This is an abstract base class !
+// No
+// implemenataion
+// needed.
+// andreas.morsch@cern.ch
#include "AliDecayer.h"
ClassImp(AliDecayer)
* See cxx source for full Copyright notice */
/* $Id$ */
+
+// Abstract base class for particle decays.
+// Clients are the transport code and the primary particle generators
+// Author: andreas.morsch@cern.ch
+
#include "GenTypeDefs.h"
#include <TObject.h>
class TClonesArray;
{
public:
//
+ virtual ~AliDecayer(){;}
virtual void Init() =0;
virtual void Decay(Int_t idpart, TLorentzVector* p) =0;
virtual Int_t ImportParticles(TClonesArray *particles) =0;
/*
$Log$
+Revision 1.2 2000/09/12 13:58:45 morsch
+SetForceDcay(..) sets the member data storing the forced decay information.
+ForceDecay() executes the change of the decay table.
+
Revision 1.1 2000/09/06 14:23:43 morsch
Realisation of AliDecayer using Pythia6
*/
+// Implementation of AliDecayer using Pythia
+// Method forwarding to the AliPythia instance.
+// Muonic and electronic decay modes can be forced
+// for heavy flavor hadrons.
+// Author: andreas.morsch@cern.ch
+
+
#include "AliDecayerPythia.h"
+#include "AliPythia.h"
#include <TLorentzVector.h>
ClassImp(AliDecayerPythia)
void AliDecayerPythia::Decay(Int_t idpart, TLorentzVector* p)
{
+// Decay a particle
+//
Float_t energy = p->Energy();
Float_t theta = p->Theta();
Float_t phi = p->Phi();
fPythia->GetPrimaries();
}
+Int_t AliDecayerPythia::ImportParticles(TClonesArray *particles)
+{
+// Import the decay products
+//
+ return fPythia->ImportParticles(particles, "All");
+}
+
+
void AliDecayerPythia::ForceDecay()
{
// Force a particle decay mode
void AliDecayerPythia::DefineParticles()
{
- Float_t mass;
- Float_t tlife;
- Int_t kc, nkc, i;
//
//
// Some particles cloned for rare decays
//
// phi-> mu+mu- and phi -> e+e-
// clone the original phi
+
+ Float_t mass;
+ Float_t tlife;
+ Int_t kc, nkc, i;
+
kc = fPythia->Pycomp(333);
nkc = 41;
R__b.WriteArray(fBraPart, 501);
}
}
+
+
+void AliDecayerPythia::Copy(AliDecayerPythia &decayer) const
+{
+ //
+ // Copy *this onto AliDecayerPythia -- not implemented
+ //
+ Fatal("Copy","Not implemented!\n");
+}
+
+
/*
Particle/parton data table
1386 1 42 0.105000 nu_mubar mu- c specflav
1387 1 42 0.040000 nu_taubar tau- c specflav
1388 1 42 0.500000 ubar d c specflav
- 1389 1 42 0.080000 ubar c d specflav
+ 1389 1 i42 0.080000 ubar c d specflav
1390 1 42 0.140000 cbar s c specflav
1391 1 42 0.010000 cbar c s specflav
1392 1 42 0.015000 ubar d u specflav
/* $Id$ */
+// Implementation of AliDecayer using Pythia
+// Method forwarding to the AliPythia instance.
+// Author: andreas.morsch@cern.ch
+
#include "AliDecayer.h"
-#include "AliPythia.h"
+class AliPythia;
class AliDecayerPythia :
public AliDecayer
{
public:
-//
AliDecayerPythia();
+ void Copy(AliDecayerPythia &decayer) const;
+
+//
+ virtual ~AliDecayerPythia();
virtual void Init();
virtual void Decay(Int_t idpart, TLorentzVector *p);
- virtual Int_t ImportParticles(TClonesArray *particles)
- {return fPythia->ImportParticles(particles, "All");}
+ virtual Int_t ImportParticles(TClonesArray *particles);
virtual void SetForceDecay(Decay_t decay) {fDecay=decay;}
virtual void ForceDecay();
virtual Float_t GetPartialBranchingRatio(Int_t ipart);
+
private:
void DefineParticles();
void Lu1Ent(Int_t flag, Int_t idpart,
void ForceHadronicD();
void AllowAllDecays();
Float_t GetBraPart(Int_t kf);
+
+ AliDecayerPythia(const AliDecayerPythia &decayer) {;}
+ virtual AliDecayerPythia &operator=(const AliDecayerPythia &decayer)
+ {decayer.Copy(*this);return(*this);}
private:
- AliPythia* fPythia; // Pointer to AliPythia
- Decay_t fDecay; // Forced decay mode
- Float_t fBraPart[501]; // Branching ratios
+ AliPythia* fPythia; // ! Pointer to AliPythia
+ Decay_t fDecay; // Forced decay mode
+ Float_t fBraPart[501]; // Branching ratios
ClassDef(AliDecayerPythia,1) // AliDecayer implementation using Pythia
};
/*
$Log$
+Revision 1.7 2000/10/02 15:16:37 morsch
+Correct coding rule violation for member data names of type fi -> fI.
+
Revision 1.6 2000/06/14 15:19:47 morsch
Include clean-up (IH)
*/
-//
-//
-//
-//
+/*
+ Class for dimuon analysis and fast dimuon simulation.
+ It provides single and dimuon iterators, cuts, weighting, kinematic
+ It uses the AliRun particle tree.
+ Comments and suggestions to
+ andreas.morsch@cern.ch
+*/
+
+
#include "AliDimuCombinator.h"
#include "AliPDG.h"
#include <TRandom.h>
AliDimuCombinator::AliDimuCombinator(const AliDimuCombinator & combinator)
{
-// copy constructor
+// Dummy copy constructor
}
}
-
+void AliDimuCombinator::Copy(AliDimuCombinator &combi) const
+{
+ //
+ // Copy *this onto lego -- not implemented
+ //
+ Fatal("Copy","Not implemented!\n");
+}
* See cxx source for full Copyright notice */
/* $Id$ */
+
+
+// Class for dimuon analysis and fast dimuon simulation.
+// It uses the AliRun particle tree.
+// Comments and suggestions to andreas.morsch@cern.ch
+
+
#include <TObject.h>
-#include <TParticle.h>
class TClonesArray;
class TParticle;
{
public:
AliDimuCombinator(TClonesArray* Partarray);
- AliDimuCombinator(const AliDimuCombinator &combinator);
+ void Copy(AliDimuCombinator &combi) const;
//
// Iterators
// Single muons
Float_t Weight(TParticle* part);
Float_t Weight(TParticle* part1, TParticle* part);
Float_t DecayProbability(TParticle* part);
- AliDimuCombinator & operator=(const AliDimuCombinator & rhs);
private:
void FirstPartner();
TParticle* Parent(TParticle* part);
TParticle* Partner();
Int_t Type(TParticle *part);
+ AliDimuCombinator(const AliDimuCombinator &combinator);
+ AliDimuCombinator & operator=(const AliDimuCombinator & rhs);
+
private:
TClonesArray *fPartArray; // MC Event
Int_t fNParticle; // Number of particles
/*
$Log$
+Revision 1.4 2000/11/30 07:12:49 alibrary
+Introducing new Rndm and QA classes
+
Revision 1.3 2000/10/02 21:28:06 fca
Removal of useless dependecies via forward declarations
*/
-/*
-Old Log:
-Revision 1.8 2000/06/08 13:34:50 fca
-Better control of momentum range in GenBox
-
-Revision 1.7 2000/06/07 16:29:58 fca
-Adding check for pt range in AliGenBox
-
-Revision 1.6 1999/11/03 17:43:20 fca
-New version from G.Martinez & A.Morsch
-Revision 1.5 1999/09/29 09:24:14 fca
-Introduction of the Copyright and cvs Log
-*/
-///////////////////////////////////////////////////////////////////
-// //
-// Generate the final state of the interaction as the input //
-// to the MonteCarlo //
+// Generator for particles in a preset
+// kinematic range (flat distribution)
+// Note that for a given theta pt and p are not independent
+// Range for only one variable (pt or p) should be given.
+//
+// Comments and suggestions: andreas.morsch@cern.ch
//
//Begin_Html
/*
/* $Id$ */
+/*
+ Generator for particles in a preset
+ kinematic range (flat distribution)
+ Comments and suggestions: andreas.morsch@cern.ch
+*/
+
#include "AliGenerator.h"
class AliGenBox : public AliGenerator
{
/*
$Log$
+Revision 1.8 2000/10/27 13:53:29 morsch
+AddGenerator: check testbit before setting the pT and momentum range
+(D.Y. Peressounko)
+
Revision 1.7 2000/10/02 15:15:41 morsch
Use default streamer for AliGenCocktail
*/
+// Container class for AliGenerator through recursion.
+// Container is itself an AliGenerator.
+// What is stored are not the pointers to the generators directly but to objects of type
+// AliGenCocktail entry.
+// The class provides also iterator functionality.
+// Author: andreas.morsch@cern.ch
+//
+
#include "AliGenCocktail.h"
#include "AliGenCocktailEntry.h"
#include "AliRun.h"
+#include <TList.h>
ClassImp(AliGenCocktail)
/* $Id$ */
+// Container class for AliGenerator through recursion.
+// (Container is itself an AliGenerator)
+// Author: andreas.morsch@cern.ch
+//
+
#include "AliGenerator.h"
-#include <TList.h>
class AliGenCocktailEntry;
$Log $
*/
+// Entry for AliGenCocktail container class.
+// See also comments there.
+// In addition to the pointer to the generator the class provides some
+// bookkeeping functionality (weights, links to particle list, ...)
+// Author: andreas.morsch@cern.ch
+
+#include <TString.h>
#include "AliGenCocktailEntry.h"
#include "AliGenerator.h"
/* $Id$ */
+// Entry for AleGenCocktail container class.
+// See also comments there
+// Author: andreas.morsch@cern.ch
#include <TNamed.h>
-#include <TString.h>
class AliGenerator;
/*
$Log$
+Revision 1.5 2000/12/06 15:11:38 morsch
+Correct double declared data members.
+
Revision 1.4 2000/11/30 07:12:50 alibrary
Introducing new Rndm and QA classes
*/
+// As AliGenScan, generation of particles on a 3-dim grid
+// but here double hits with a predefined distance are generated.
+// The second particle is generated at a constant distance but with random phi.
+// Generator can be used to evaluate double hit resolutions.
+// Author: andreas.morsch@cern.ch
+
#include "AliGenDoubleScan.h"
#include "AliRun.h"
/* $Id$ */
+// As AliGenScan, generation of particles on a 3-dim grid
+// but here double hits with a predefined distance are generated.
+// Author: andreas.morsch@cern.ch
+
#include "AliGenScan.h"
class AliGenDoubleScan : public AliGenScan
/*
$Log$
+Revision 1.1 2000/06/15 15:47:48 morsch
+Proposal for an event header class for generated events.
+
*/
+// Event header base class for generator.
+// Stores as a minimum the date, run number, event number,
+// number of particles produced
+// and the impact parameter.
+//
+// Author: andreas.morsch@cern.ch
+
#include "AliGenEventHeader.h"
ClassImp(AliGenEventHeader)
fNProduced=-1;
fImpactParameter=-1.;
}
+
+
+
+
#include <TNamed.h>
#include <TDatime.h>
+// Event header base class for generator.
+// Stores as a minimum the date, run number, event number, number of particles produced
+// and the impact parameter
+// Author: andreas.morsch@cern.ch
+
class AliGenEventHeader : public TNamed
{
public:
/*
$Log$
+Revision 1.13 2000/11/30 07:12:50 alibrary
+Introducing new Rndm and QA classes
+
Revision 1.12 2000/10/27 13:54:45 morsch
Remove explicite reference to input file from constuctor.
*/
+
+// Event generator that can read the old ALICE event format based on CW-ntuples
+// http://consult.cern.ch/alice/Internal_Notes/1995/32/abstract
+// .cwn file have to be converted to .root using h2root
+// Use SetFileName(file) to read from "file"
+// Author: andreas.morsch@cern.ch
+
#include <iostream.h>
#include "AliGenExtFile.h"
#include <TDirectory.h>
#include <TDatabasePDG.h>
#include <TFile.h>
+#include "TTree.h"
#include <stdlib.h>
ClassImp(AliGenExtFile)
/* $Id$ */
+// Event generator that can read the old ALICE event format based on CW-ntuples
+// http://consult.cern.ch/alice/Internal_Notes/1995/32/abstract
+// Author: andreas.morsch@cern.ch
#include "AliGenerator.h"
-#include "TTree.h"
-
-// Read background particles from a FLUKA boundary source file
+class TTree;
class AliGenExtFile : public AliGenerator
{
/*
$Log$
+Revision 1.12 2000/11/30 07:12:50 alibrary
+Introducing new Rndm and QA classes
+
Revision 1.11 2000/06/14 15:20:40 morsch
Include clean-up (IH)
*/
+
+
+// Read background particles from a FLUKA boundary source file
+// This is a very special generator that works for background studies for the muon-spectrometer.
+// The input files come from FLUKA simulations.
+// Files can be chained.
+// Author: andreas.morsch@cern.ch
+
#include "AliGenFLUKAsource.h"
#include "AliMC.h"
#include "AliRun.h"
:AliGenerator(npart)
{
// Constructor
- fName="FLUKA";
- fTitle="FLUKA Boundary Source";
+ fName = "FLUKA";
+ fTitle = "FLUKA Boundary Source";
// Read in all particle types by default
fIkine=6;
// Set maximum admitted age of particles to 1.e-05 by default
/* $Id$ */
+// Read background particles from a FLUKA boundary source file
+// This is a very special generator that works for background studies for the muon-spectrometer
+// Ask: andreas.morsch@cern.ch
+
#include "AliGenerator.h"
class TChain;
-
class TTree;
-
-
-// Read background particles from a FLUKA boundary source file
-
class AliGenFLUKAsource : public AliGenerator
+
{
public:
AliGenFLUKAsource();
/*
$Log$
+Revision 1.3 2000/11/30 07:12:50 alibrary
+Introducing new Rndm and QA classes
+
Revision 1.2 2000/10/02 15:17:54 morsch
Unused includes removed.
*/
-///////////////////////////////////////////////////////////////////
-// //
-// Generate the final state of the interaction as the input //
-// to the MonteCarlo //
-//
+
+
+// Simple particle gun.
+// Momentum, phi and theta of the partice as well as the particle type can be set.
+// andreas.morsch@cern.ch
//Begin_Html
/*
<img src="picts/AliGeneratorClass.gif">
/* $Id$ */
+// Simple particle gun.
+// Momentum, phi and theta of the partice as well as the particle type can be set.
+// andreas.morsch@cern.ch
+
+
#include "AliGenerator.h"
class AliGenFixed : public AliGenerator
/*
$Log$
+Revision 1.2 2000/11/30 07:12:50 alibrary
+Introducing new Rndm and QA classes
+
Revision 1.1 2000/06/15 08:48:43 morsch
AliGenGSIlib with parametersations for GSI physics simulation added (YF, MI)
*/
+// Implementation of AliGenLib
+// using GSI specific parameterisations.
+// So far for Upsilon resonances only.
+// Different paramterisations of y and pt can be chosen.
+// Responsible: Andres.Sandoval@cern.ch
+
#include "TMath.h"
#include "TString.h"
/* $Id$ */
+// Implementation of AliGenLib
+// using GSI specific parameterisations.
+// Responsible: Andres.Sandoval@cern.ch
+
#include "AliGenLib.h"
class TRandom;
/*
$Log$
+Revision 1.4 2000/11/30 07:12:50 alibrary
+Introducing new Rndm and QA classes
+
Revision 1.3 2000/10/02 21:28:06 fca
Removal of useless dependecies via forward declarations
All coding rule violations except RS3 corrected (AM)
*/
-///////////////////////////////////////////////////////////////////
-// //
-// Generate the final state of the interaction as the input //
-// to the MonteCarlo //
-//
+
+// Parameterisation of pi and K, eta and pt distributions
+// used for the ALICE TDRs.
+// eta: according to HIJING (shadowing + quenching)
+// pT : according to CDF measurement at 1.8 TeV
+// Author: andreas.morsch@cern.ch
+
+
//Begin_Html
/*
<img src="picts/AliGeneratorClass.gif">
/* $Id$ */
+// Parameterisation of pi and K, eta and pt distributions
+// used for the ALICE TDRs.
+// Author: andreas.morsch@cern.ch
+
#include "AliGenerator.h"
class TF1;
/*
$Log$
+Revision 1.9 2000/11/30 07:12:50 alibrary
+Introducing new Rndm and QA classes
+
Revision 1.8 2000/10/02 15:20:40 morsch
Direct reference to default input file removed.
*/
+// Read background particles from a boundary source
+// Very specialized generator to simulate background from beam halo.
+// The input file is a text file specially prepared
+// for this purpose.
+// Author: andreas.morsch@cern.ch
+
#include "AliGenHalo.h"
#include "AliRun.h"
#include "AliPDG.h"
#include "AliGenerator.h"
#include <TString.h>
-// Read background particles from a FLUKA boundary source file
+
+// Read background particles from a boundary source
+// Very specialized generator to simulate background from beam halo.
+// Author: andreas.morsch@cern.ch
class AliGenHalo : public AliGenerator
{
/*
$Log$
+Revision 1.18 2000/12/06 17:46:30 morsch
+Avoid random numbers 1 and 0.
+
Revision 1.17 2000/12/04 11:22:03 morsch
Init of sRandom as in 1.15
*/
+
+
+// Generator using HIJING as an external generator
+// The main HIJING options are accessable for the user through this interface.
+// Uses the THijing implementation of TGenerator.
+//
+// andreas.morsch@cern.ch
+
#include "AliGenHijing.h"
#include "AliGenHijingEventHeader.h"
#include "AliRun.h"
Bool_t AliGenHijing::Stable(TParticle* particle)
{
+// Return true for a stable particle
+//
Int_t kf = TMath::Abs(particle->GetPdgCode());
if ( (particle->GetFirstDaughter() < 0 ) || (kf == 1000*fFlavor+122))
/* $Id$ */
+// Generator using HIJING as an external generator
+// The main HIJING options are accessable for the user through this interface.
+// andreas.morsch@cern.ch
#include "AliGenerator.h"
#include "GenTypeDefs.h"
{
public:
//
+ virtual ~AliGenLib(){}
typedef Double_t (*GenFunc) (Double_t *, Double_t *);
typedef Int_t (*GenFuncIp)(TRandom *);
virtual GenFunc GetPt(Param_t param, const char *tname) = 0;
/*
$Log$
+Revision 1.25 2000/11/30 07:12:50 alibrary
+Introducing new Rndm and QA classes
+
Revision 1.24 2000/10/18 19:11:27 hristov
Division by zero fixed
SetChildPhiRange();
SetChildThetaRange();
SetDeltaPt();
+//
+// Set random number generator
+ sRandom = fRandom;
}
AliGenParam::AliGenParam(Int_t npart, AliGenLib * Library, Param_t param, char* tname):AliGenerator(npart)
SetChildPhiRange();
SetChildThetaRange();
SetDeltaPt();
+//
+// Set random number generator
+ sRandom = fRandom;
}
//____________________________________________________________
{
// Constructor using parameterisation id and number of particles
//
- AliGenLib* Library = new AliGenMUONlib();
+ AliGenLib* pLibrary = new AliGenMUONlib();
- fPtParaFunc = Library->GetPt(param, tname);
- fYParaFunc = Library->GetY (param, tname);
- fIpParaFunc = Library->GetIp(param, tname);
+ fPtParaFunc = pLibrary->GetPt(param, tname);
+ fYParaFunc = pLibrary->GetY (param, tname);
+ fIpParaFunc = pLibrary->GetIp(param, tname);
fPtPara = 0;
fYPara = 0;
case katomu:
fChildSelect[0]=13;
break;
+ case hadronicD:
+// Implement me !!
+ break;
case nodecay:
break;
case all:
//
if(!particles) particles=new TClonesArray("TParticle",1000);
- static TDatabasePDG *DataBase = new TDatabasePDG();
- if(!DataBase) DataBase = new TDatabasePDG();
+ static TDatabasePDG *pDataBase = new TDatabasePDG();
+ if(!pDataBase) pDataBase = new TDatabasePDG();
//
Float_t random[6];
// particle type
Int_t iPart = fIpParaFunc(fRandom);
fChildWeight=(fDecayer->GetPartialBranchingRatio(iPart))*fParentWeight;
- TParticlePDG *particle = DataBase->GetParticle(iPart);
+ TParticlePDG *particle = pDataBase->GetParticle(iPart);
Float_t am = particle->Mass();
Rndm(random,2);
Int_t fNucA1; // mass number nucleus side 1
Int_t fNucA2; // mass number nucleus side 2
- AliDecayer *fDecayer;
+ AliDecayer *fDecayer; // pointer to the decayer instance
private:
// check if particle is selected as parent particle
Bool_t ParentSelected(Int_t ip);
#pragma link C++ class AliGenCocktail;
#pragma link C++ class AliGenCocktailEntry;
#pragma link C++ class AliGenExtFile;
+#pragma link C++ class AliGenExtFileCH;
#pragma link C++ class AliGenScan;
#pragma link C++ class AliGenDoubleScan;
#pragma link C++ class AliPythia;
#pragma link C++ class AliGenHijing;
#pragma link C++ class AliDecayer;
#pragma link C++ class AliDecayerPythia-;
+#pragma link C++ class AliGenMuonHits;
#endif