// Selection
//
-Bool_t AliDimuCombinator::Selected(TParticle* part) const
+Bool_t AliDimuCombinator::Selected(const TParticle* part) const
{
// Selection cut for single muon
//
}
}
-Bool_t AliDimuCombinator::Selected(TParticle* part1, TParticle* part2) const
+Bool_t AliDimuCombinator::Selected(const TParticle* part1, const TParticle* part2) const
{
// Selection cut for dimuons
//
//
// Kinematics
//
-Float_t AliDimuCombinator::Mass(TParticle* part1, TParticle* part2) const
+Float_t AliDimuCombinator::Mass(const TParticle* part1, const TParticle* part2) const
{
// Invariant mass
//
}
}
-Float_t AliDimuCombinator::PT(TParticle* part1, TParticle* part2) const
+Float_t AliDimuCombinator::PT(const TParticle* part1, const TParticle* part2) const
{
// Transverse momentum of dimuons
//
return TMath::Sqrt(px*px+py*py);
}
-Float_t AliDimuCombinator::Pz(TParticle* part1, TParticle* part2) const
+Float_t AliDimuCombinator::Pz(const TParticle* part1, const TParticle* part2) const
{
// Pz of dimuon system
//
return part1->Pz()+part2->Pz();
}
-Float_t AliDimuCombinator::Y(TParticle* part1, TParticle* part2) const
+Float_t AliDimuCombinator::Y(const TParticle* part1, const TParticle* part2) const
{
// Rapidity of dimuon system
//
// Weighting
//
-Float_t AliDimuCombinator::DecayProbability(TParticle* part) const
+Float_t AliDimuCombinator::DecayProbability(const TParticle* part) const
{
// Calculate decay probability for muons from pion and kaon decays
//
//End_Html
-Float_t AliDimuCombinator::Weight(TParticle* part1, TParticle* part2) const
+Float_t AliDimuCombinator::Weight(const TParticle* part1, const TParticle* part2) const
{
// Dimuon weight
//End_Html
-Float_t AliDimuCombinator::Weight(TParticle* part) const
+Float_t AliDimuCombinator::Weight(const TParticle* part) const
{
// Single muon weight
return (part->GetWeight())*(Parent(part)->GetWeight())*fRate1;
}
-Bool_t AliDimuCombinator::Correlated(TParticle* part1, TParticle* part2) const
+Bool_t AliDimuCombinator::Correlated(const TParticle* part1, const TParticle* part2) const
{
// Check if muons are correlated
//
}
}
-TParticle* AliDimuCombinator::Parent(TParticle* part) const
+TParticle* AliDimuCombinator::Parent(const TParticle* part) const
{
// Return pointer to parent
//
return Particle(part->GetFirstMother());
}
-Int_t AliDimuCombinator::Origin(TParticle* part) const
+Int_t AliDimuCombinator::Origin(const TParticle* part) const
{
// Return pointer to primary particle
//
return iparent;
}
-Int_t AliDimuCombinator::Type(TParticle *part) const
+Int_t AliDimuCombinator::Type(const TParticle *part) const
{
// Return particle type for
return part->GetPdgCode();
void SetPtMin(Float_t ptmin) {fPtMin=ptmin;}
void SetEtaCut(Float_t etamin, Float_t etamax)
{fEtaMin=etamin; fEtaMax=etamax;}
- Bool_t Selected(TParticle* part) const;
- Bool_t Selected(TParticle* part1, TParticle* part2) const;
+ Bool_t Selected(const TParticle* part) const;
+ Bool_t Selected(const TParticle* part1, const TParticle* part2) const;
// Kinematics
- Float_t Mass(TParticle* part1, TParticle* part) const;
- Float_t PT(TParticle* part1, TParticle* part) const;
- Float_t Pz(TParticle* part1, TParticle* part) const;
- Float_t Y(TParticle* part1, TParticle* part) const;
+ Float_t Mass(const TParticle* part1, const TParticle* part) const;
+ Float_t PT(const TParticle* part1, const TParticle* part) const;
+ Float_t Pz(const TParticle* part1, const TParticle* part) const;
+ Float_t Y(const TParticle* part1, const TParticle* part) const;
// Response
void SmearGauss(Float_t width, Float_t & value) const;
// Weight
- Bool_t Correlated(TParticle* part1, TParticle* part2) const;
+ Bool_t Correlated(const TParticle* part1, const TParticle* part2) const;
void SetRate(Float_t rate) {fRate1=rate;}
void SetRate(Float_t rate1, Float_t rate2 ) {fRate1=rate1; fRate2=rate2;}
- Float_t Weight(TParticle* part) const;
- Float_t Weight(TParticle* part1, TParticle* part) const;
- Float_t DecayProbability(TParticle* part) const;
+ Float_t Weight(const TParticle* part) const;
+ Float_t Weight(const TParticle* part1, const TParticle* part) const;
+ Float_t DecayProbability(const TParticle* part) const;
private:
void FirstPartner();
void NextPartner();
void FirstPartnerSelected();
void NextPartnerSelected();
- Int_t Origin(TParticle* part) const;
- TParticle* Parent(TParticle* part) const;
+ Int_t Origin(const TParticle* part) const;
+ TParticle* Parent(const TParticle* part) const;
TParticle* Partner() const;
- Int_t Type(TParticle *part) const;
+ Int_t Type(const TParticle *part) const;
AliDimuCombinator(const AliDimuCombinator &combinator);
AliDimuCombinator & operator=(const AliDimuCombinator & rhs);
#include "AliGenAfterBurnerFlow.h"
#include "AliGenCocktailAfterBurner.h"
#include "AliMC.h"
+#include "AliRun.h"
#include "AliCollisionGeometry.h"
#include "AliGenCocktailEntry.h"
////////////////////////////////////////////////////////////////////////////////////////////////////
-Float_t AliGenAfterBurnerFlow::GetNpNorm(Int_t npart)
+Float_t AliGenAfterBurnerFlow::GetNpNorm(Int_t npart) const
{
//
// Calculate npart norm.
////////////////////////////////////////////////////////////////////////////////////////////////////
-Bool_t AliGenAfterBurnerFlow::IsPrimary(Int_t pdg)
+Bool_t AliGenAfterBurnerFlow::IsPrimary(Int_t pdg) const
{
if(pdg>=fgkPDG) return kFALSE;
return fIsPrim[pdg];
Double_t CalcAngle(Double_t phi, Double_t phi0, Double_t phiRP, Double_t v2, Double_t v1=0.)
{
+ // Calculate relative angle
Double_t phi1 = phi-(phi+2*v1*TMath::Sin(phi-phiRP)+v2*TMath::Sin(2*(phi-phiRP))-phi0)/
(1.+2*v1*TMath::Cos(phi-phiRP)+ 2*v2*TMath::Cos(2*(phi-phiRP)));
if(TMath::Abs(phi/phi1-1.)<0.00001) return phi1;
void AliGenAfterBurnerFlow::InitPrimaries()
{
+ // Init the primary particle list
for(Int_t i=0; i<fgkPDG; i++) fIsPrim[i]=kFALSE;
//mesons
void AliGenAfterBurnerFlow::Rotate(Int_t i, Double_t phi, Bool_t IsPrim)
{
+ // Rotation
TParticle* particle = fStack->Particle(i);
TLorentzVector momentum;
void SetEllipticParam(Int_t pdg, Float_t v00, Float_t v10, Float_t v11, Float_t v22);
void SetNpParams(Int_t order=-1, Float_t p0=-1, Float_t p1=-1, Float_t p2=-1, Float_t p3=-1);
void SetNpDefault() { SetNpParams(2,1,-5e-8,-5e-6); }
- Bool_t IsPrimary(Int_t pdg);
+ Bool_t IsPrimary(Int_t pdg) const;
void Init();
void Generate();
void NeglectFlow(Int_t pdg) {fIsPrim[pdg]=kFALSE;}
AliStack *fStack; //!
Float_t GetCoefficient(Int_t pdg, Int_t n, Float_t Pt, Float_t Y) const;
- Float_t GetNpNorm(Int_t npart);
+ Float_t GetNpNorm(Int_t npart) const;
void InitPrimaries();
void Rotate(Int_t i, Double_t phi, Bool_t IsPrim=kTRUE);
void SetFlowParameters(Int_t pdg, Int_t order, Int_t type, Float_t v1, Float_t v2, Float_t v3, Float_t v4);
// Author: andreas.morsch@cern.ch
#include "AliGenBeamGas.h"
+#include "AliGenReader.h"
#include <TParticle.h>
#include "AliCollisionGeometry.h"
#include "AliStack.h"
#include "AliMC.h"
+#include "AliRun.h"
ClassImp(AliGenCocktailAfterBurner)
AliGenCocktailAfterBurner::AliGenCocktailAfterBurner():
fNAfterBurners(0),
- fAfterBurnerEntries(new TList()),
+ fAfterBurnerEntries(0),
fGenerationDone(kFALSE),
fInternalStacks(0),
fCollisionGeometries(0),
AliGenCocktailEntry *entry =
new AliGenCocktailEntry(AfterBurner, Name, RateExp);
+ if (!fAfterBurnerEntries) fAfterBurnerEntries = new TList();
+
fAfterBurnerEntries->Add(entry);
fNAfterBurners++;
//
#include <TMCProcess.h>
#include "AliGenCocktail.h"
-#include "AliRun.h"
+#include "AliRunLoader.h"
class AliGenCocktailEntry;
class AliStack;
}
-void AliGenCocktailEntry::PrintInfo()
+void AliGenCocktailEntry::PrintInfo() const
{
// Print out information about generator entry
printf("\n Generator: %s Generated Events: %d First: %d Last: %d",
Int_t GetFirst() const {return fFirst;}
Int_t GetLast () const {return fLast;}
Float_t Rate() const {return fRate;}
- void PrintInfo();
+ void PrintInfo() const;
AliGenCocktailEntry & operator =(const AliGenCocktailEntry & rhs);
protected:
AliGenerator *fGenerator; // Pointer to generator
#include "TList.h"\r
#include "TVector3.h"\r
#include "AliMC.h"\r
+#include "AliRun.h"\r
#include "TArrayF.h"\r
#include "AliGenCocktailEventHeader.h"\r
\r
// create the freeze-out nucleon distribution around the collision vertex\r
void AliGenDeuteron::FixProductionVertex(TParticle* i)\r
{\r
+ // Fix for the production vertex\r
Double_t x,y,z;\r
\r
if(fModel == kThermal) // homogeneous volume\r
\r
private:\r
\r
- const Double_t fDeuteronMass;\r
+ const Double_t fDeuteronMass; // Deuteron mass\r
Double_t fPmax; // Maximum p-n momentum difference (GeV/c)\r
Double_t fRmax; // Maximum p-n distance (cm)\r
Double_t fRsrc; // Emitting source radius (cm)\r
#include "AliHeader.h"
#include "AliStack.h"
#include "AliGenEventHeader.h"
+#include "AliGenReader.h"
#include <TParticle.h>
#include <TFile.h>
// Author: andreas.morsch@cern.ch
#include "AliGenMC.h"
-#include "AliGenReader.h"
+class AliGenReader;
+
class TTree;
//_____________________________________________________________________________
-static Double_t ptpi(Double_t *px, Double_t *)
+static Double_t ptpi(const Double_t *px, const Double_t *)
{
//
// PT-PARAMETERIZATION CDF, PRL 61(88) 1819
ClassImp(AliGenHIJINGparaBa)
-static Double_t ptpi(Double_t *px, Double_t *)
+static Double_t ptpi(const Double_t *px, const Double_t *)
{
//
// PT-PARAMETERIZATION CDF, PRL 61(88) 1819
}
void AliGenHalo::CountEvents()
{
+ // Count total number of events
Int_t nev = 0;
Int_t oldID = -1;
Int_t nc = 1;
#include "AliGenMC.h"
#include "AliRun.h"
#include "AliGeometry.h"
+#include "AliDecayer.h"
ClassImp(AliGenMC)
return kFALSE;
}
-Bool_t AliGenMC::KinematicSelection(TParticle *particle, Int_t flag) const
+Bool_t AliGenMC::KinematicSelection(const TParticle *particle, Int_t flag) const
{
// Perform kinematic selection
Double_t pz = particle->Pz();
class AliGeometry;
class AliGenEventHeader;
-#include "AliDecayer.h"
#include "AliGenerator.h"
+#include "AliDecayer.h"
class AliGenMC : public AliGenerator
{
// check if particle is selected as child particle
Bool_t ChildSelected(Int_t ip) const;
// all kinematic selection cuts go here
- Bool_t KinematicSelection(TParticle *particle, Int_t flag) const;
+ Bool_t KinematicSelection(const TParticle *particle, Int_t flag) const;
Int_t CheckPDGCode(Int_t pdgcode) const;
protected:
//-----------------------------------------------------------
-Double_t AliGenMUONLMR::YDistr(Double_t *px, Double_t *par){
+Double_t AliGenMUONLMR::YDistr(const Double_t *px, const Double_t *par){
// function for rapidity distribution: plateau at par[0] +
// gaussian tails centered at par[1] and with par[2]=sigma
Double_t x = TMath::Abs(px[0]);
//-----------------------------------------------------------
-Double_t AliGenMUONLMR::PtDistr(Double_t *px, Double_t *par){
+Double_t AliGenMUONLMR::PtDistr(const Double_t *px, const Double_t *par){
// pt distribution: power law
Double_t x = px[0];
Double_t func = par[0] * x / TMath::Power((1+(x/par[1])*(x/par[1])),par[2]);
//------------------------------------------------------------------
-void AliGenMUONLMR::Decay2Body(TParticle *mother){
+void AliGenMUONLMR::Decay2Body(const TParticle *mother){
// performs decay in two muons of the low mass resonances
Double_t md1 = fMu[0]->GetMass();
Int_t pdg = mother->GetPdgCode();
//-------------------------------------------------------------------
-void AliGenMUONLMR::DalitzDecay(TParticle *mother){
+void AliGenMUONLMR::DalitzDecay(const TParticle *mother){
//
// perform dalitz decays of eta, omega and etaprime
//
//____________________________________________________________
-Double_t AliGenMUONLMR::RhoLineShapeNew(Double_t *x, Double_t* /*para*/){
+Double_t AliGenMUONLMR::RhoLineShapeNew(const Double_t *x, const Double_t* /*para*/){
//new parameterization implemented by Hiroyuki Sako (GSI)
Double_t mass = *x;
double r, GammaTot;
enum parttype_t {kPionLMR, kKaonLMR, kEtaLMR, kRhoLMR, kOmegaLMR, kPhiLMR, kEtaPrimeLMR};
AliGenMUONLMR();
~AliGenMUONLMR();
- static Double_t PtDistr(Double_t *x, Double_t *par);
- static Double_t YDistr(Double_t *x, Double_t *par);
- virtual void Decay2Body(TParticle *mother);
- virtual void DalitzDecay(TParticle *mother);
+ static Double_t PtDistr(const Double_t *x, const Double_t *par);
+ static Double_t YDistr(const Double_t *x, const Double_t *par);
+ virtual void Decay2Body(const TParticle *mother);
+ virtual void DalitzDecay(const TParticle *mother);
virtual void DecayPiK(TParticle *mother, Bool_t &hadDecayed);
virtual Double_t FormFactor(Double_t q2, Int_t decay);
virtual void Generate();
virtual void SetNMuMin(Int_t nmin) {fNMuMin = nmin; }
virtual void GenerateSingleProcess(Int_t whichproc) { fGenSingleProc = whichproc;}
virtual void SetScaleMultiplicity(Int_t ipart, Double_t scale) { fScaleMult[ipart] = scale; }
- static Double_t RhoLineShapeNew(Double_t *, Double_t *);
+ static Double_t RhoLineShapeNew(const Double_t *, const Double_t *);
virtual void FinishRun();
private:
AliGenMUONLMR(const AliGenMUONLMR &lmr);
//_____________________________________________________________________________
void AliGenPromptPhotons::Init()
{
-
+ // Initialisation
fgDataPt = new TF1("fgDataPt",FitData,fPtMin,fPtMax,1);
fgDataPt->SetParameter(0,fEnergyCMS);
}
//**********************************************************************************
-Double_t AliGenPromptPhotons::FitData(Double_t* x, Double_t* par) {
+Double_t AliGenPromptPhotons::FitData(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - p_t (GeV).
}
//**********************************************************************************
-Double_t AliGenPromptPhotons::WSforNorm(Double_t* x, Double_t* par) {
+Double_t AliGenPromptPhotons::WSforNorm(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - r (fm)
}
//**********************************************************************************
-Double_t AliGenPromptPhotons::WSz(Double_t* x, Double_t* par) {
+Double_t AliGenPromptPhotons::WSz(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - z (fm)
}
//**********************************************************************************
-Double_t AliGenPromptPhotons::TA(Double_t* x, Double_t* par) {
+Double_t AliGenPromptPhotons::TA(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - b (fm), impact parameter
}
//**********************************************************************************
-Double_t AliGenPromptPhotons::TB(Double_t* x, Double_t* par) {
+Double_t AliGenPromptPhotons::TB(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - phi (rad)
}
//**********************************************************************************
-Double_t AliGenPromptPhotons::TAxTB(Double_t* x, Double_t* par) {
+Double_t AliGenPromptPhotons::TAxTB(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - s (fm)
}
// ---------------------------------------------------------------------------------
-Double_t AliGenPromptPhotons::TAB(Double_t* x, Double_t* par) {
+Double_t AliGenPromptPhotons::TAB(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - b (fm), impact parameter
Float_t fMinImpactParam; // minimum impact parameter
Float_t fMaxImpactParam; // maximum impact parameter
- static Double_t FitData (Double_t *xx, Double_t *par);
- static Double_t WSforNorm (Double_t *xx, Double_t *par);
- static Double_t WSz (Double_t *xx, Double_t *par);
- static Double_t TA (Double_t *xx, Double_t *par);
- static Double_t TB (Double_t *xx, Double_t *par);
- static Double_t TAxTB (Double_t *xx, Double_t *par);
- static Double_t TAB (Double_t *xx, Double_t *par);
+ static Double_t FitData (const Double_t *xx, const Double_t *par);
+ static Double_t WSforNorm (const Double_t *xx, const Double_t *par);
+ static Double_t WSz (const Double_t *xx, const Double_t *par);
+ static Double_t TA (const Double_t *xx, const Double_t *par);
+ static Double_t TB (const Double_t *xx, const Double_t *par);
+ static Double_t TAxTB (const Double_t *xx, const Double_t *par);
+ static Double_t TAB (const Double_t *xx, const Double_t *par);
static TF1 *fgDataPt; // d^{2}#sigma^{pp}/(dp_t dy) from data fit
static TF1 *fgWSzA; // Wood Saxon parameterisation for nucleus A
TParticle* AliGenReaderCwn::NextParticle()
{
-//
+// Read next particle
//
Float_t prwn;
Float_t p[4];
// NEW
#include "AliRun.h"
+#include "AliLog.h"
#include "AliGenEventHeader.h"
//
//_______________________________________________________________________
void AliGenTHnSparse::Generate()
{
- Int_t naccepted =0;
-
// Generate Npart of id Ipart
+ Int_t naccepted =0;
Double_t rand[4]; // z, ptot, r, theta
Float_t pos[3], phi, ptot, theta, pt, z, r;
// the root file (path and name to be set via the SetTHnSparse method).
// This class is similar to AliGenFunction.
-#include "AliLog.h"
#include "AliGenerator.h"
#include "THnSparse.h"
ClassImp(AliGenThermalPhotons)
// -----------------------------------------------------------------------------------------------------
-static Double_t rateQGP(Double_t *x, Double_t *par) {
+static Double_t rateQGP(const Double_t *x, const Double_t *par) {
//---------------------------------------------------
// input:
// x[0] - tau (fm), proper time
}
// -----------------------------------------------------------------------------------------------------
-static Double_t fromQGP(Double_t *x, Double_t *par) {
+static Double_t fromQGP(const Double_t *x, const Double_t *par) {
//---------------------------------------------------
// input:
// x[0] - p_T (GeV), photon p_T
}
// -----------------------------------------------------------------------------------------------------
-static Double_t rateMixQ(Double_t *x, Double_t *par) {
+static Double_t rateMixQ(const Double_t *x, const Double_t *par) {
//---------------------------------------------------
// input:
// x[0] - yprime, space rapidity
}
// -----------------------------------------------------------------------------------------------------
-static Double_t fromMixQ(Double_t *x, Double_t *par) {
+static Double_t fromMixQ(const Double_t *x, const Double_t *par) {
//---------------------------------------------------
// input:
// x[0] - p_T (GeV), photon p_T
}
// -----------------------------------------------------------------------------------------------------
-static Double_t rateMixH(Double_t *x, Double_t *par) {
+static Double_t rateMixH(const Double_t *x, const Double_t *par) {
//---------------------------------------------------
// input:
// x[0] - yprime, space rapidity
}
// -----------------------------------------------------------------------------------------------------
-static Double_t fromMixH(Double_t *x, Double_t *par) {
+static Double_t fromMixH(const Double_t *x, const Double_t *par) {
//---------------------------------------------------
// input:
// x[0] - p_T (GeV), photon p_T
}
// -----------------------------------------------------------------------------------------------------
-static Double_t rateHHG(Double_t *x, Double_t *par) {
+static Double_t rateHHG(const Double_t *x, const Double_t *par) {
//---------------------------------------------------
// input:
// x[0] - tau (fm), proper time
}
// -----------------------------------------------------------------------------------------------------
-static Double_t fromHHG(Double_t *x, Double_t *par) {
+static Double_t fromHHG(const Double_t *x, const Double_t *par) {
// Thermal photon spectrum from Hot Hadron Gas (HHG)
// F.D.Steffen, nucl-th/9909035
// T.Peitzmann and M.H.Thoma, Phys.Rep., 364, 175 (2002), section 2.2.2
}
// -----------------------------------------------------------------------------------------------------
-static Double_t fOverlapAB(Double_t *x, Double_t *par)
+static Double_t fOverlapAB(const Double_t *x, const Double_t *par)
{
//-------------------------------------------------------------------------
// overlap area at the impact parameter b
//_____________________________________________________________________________
void AliGenThermalPhotons::Init()
{
-
+ // Initialisation
const Double_t step=0.1;
Int_t nPt=Int_t((fPtMax-fPtMin)/step);