ROOT logo
AliRoot » EVGEN » AliGenHBTosl

class AliGenHBTosl: public AliGenerator



class AliGenHBTosl

Genarator simulating particle correlations

The main idea of the generator is to produce particles
according to some distribution of two particle
property. In HBT they are qout,qsie and qlong.
In order to be able to generate signal that produces
given two particle correlation background must be
known before in order to produce the shape of signal
to randomize given distribution from.

The generator works as follows:
1. Coarse Background (fQCoarseBackground) is generated
ade  from the particles
given by the external generator (variable
fGenerator) by the mixing technique.
2. Coarse signal is prduced by multiplying Coarse
background by a required function
See method FillCoarseSignal
3. Signal is randomized out of the coarse signal
histogram (two particle property). First particle
is taken from the external generator, and the
second one is CALCULATED on the basis of the first
     one and the two particle property (qout,qside,qlong)
Background is made by the mixing out of the
genereted signal events.
This step is cotinued up to the moment signal
histogram has enough statistics (data member
fMinFill)
See method StartSignalPass1()
4. chi is calculated for each bin (chiarray variqable)
(not the chi2 because sign is important)
Two particle prioperty
(qout,qside,qlong) is chosen at the points that
chi is the smallest. First particle is taken from
the the external generator (fGenerator) and second's
momenta are caclulated out of their momenta and
(qout,qside,qlong). Background is updated
continuesely for all the events. This step is
continued until stability conditions are fullfiled
or maximum number of iteration is reached.
5. The same as step 4 but events are stored.


Function Members (Methods)

public:
AliGenHBTosl()
AliGenHBTosl(const AliGenHBTosl& hbt)
AliGenHBTosl(Int_t n, Int_t pid = 211)
virtual~AliGenHBTosl()
voidTObject::AbstractMethod(const char* method) const
virtual voidAliGenerator::AddHeader(AliGenEventHeader*)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual AliCollisionGeometry*AliGenerator::CollisionGeometry() const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual voidAliGenerator::FinishRun()
virtual voidGenerate()
virtual voidAliGenerator::GenerateN(Int_t ntimes)
Int_tGetDebug() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual Float_tAliGenerator::GetEnergyCMS() const
virtual const char*TObject::GetIconName() const
virtual TGenerator*AliGenerator::GetMC() const
virtual const char*TNamed::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual voidAliGenerator::GetOrigin(TLorentzVector& o) const
virtual voidAliGenerator::GetOrigin(Float_t& ox, Float_t& oy, Float_t& oz) const
virtual voidAliGenerator::GetProjectile(TString& tar, Int_t& a, Int_t& z) const
virtual TRandom*AliRndm::GetRandom() const
AliStack*AliGenerator::GetStack()
virtual voidAliGenerator::GetTarget(TString& tar, Int_t& a, Int_t& z) const
Int_tGetThreeD(TParticle* first, TParticle* second, Double_t qout, Double_t qside, Double_t qlong)
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidInit()
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tAliGenerator::NeedsCollisionGeometry() const
virtual Bool_tTObject::Notify()
virtual Int_tAliGenerator::NumberParticles() const
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
virtual Bool_tAliGenerator::ProvidesCollisionGeometry() const
virtual Int_tTObject::Read(const char* name)
virtual voidAliRndm::ReadRandom(const char* filename)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual Float_tAliRndm::Rndm() const
virtual voidAliRndm::Rndm(Float_t* array, Int_t size) const
voidRotate(TVector3& relvector, TVector3& vector)
Double_tRotate(Double_t x, Double_t y, Double_t z)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
virtual voidAliGenerator::SetAnalog(Int_t flag = 1)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidAliGenerator::SetChildWeight(Float_t wgt)
virtual voidAliGenerator::SetCollisionGeometry(AliCollisionGeometry* geom)
virtual voidAliGenerator::SetContainer(AliGenerator* container)
virtual voidAliGenerator::SetCutVertexZ(Float_t cut = 999999.)
voidSetDebug(Int_t debug)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidAliGenerator::SetEnergyCMS(Float_t energy = 0)
virtual voidAliGenerator::SetEventPlane(Float_t evPlane)
voidSetGenerator(AliGenerator* gen)
virtual voidAliGenerator::SetMC(TGenerator* theMC)
virtual voidAliGenerator::SetMomentumRange(Float_t pmin = 0, Float_t pmax = 1.e10)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
virtual voidAliGenerator::SetNumberParticles(Int_t npart = 100)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidAliGenerator::SetOrigin(const TLorentzVector& o)
virtual voidAliGenerator::SetOrigin(Float_t ox, Float_t oy, Float_t oz)
virtual voidAliGenerator::SetParentWeight(Float_t wgt)
virtual voidAliGenerator::SetPhiRange(Float_t phimin = 0., Float_t phimax = 360.)
voidAliGenerator::SetPileUpTimeWindow(Float_t pileUpTimeW)
virtual voidAliGenerator::SetProjectile(TString proj = "", Int_t a = 0, Int_t z = 0)
virtual voidAliGenerator::SetPtRange(Float_t ptmin = 0, Float_t ptmax = 1.e10)
virtual voidAliRndm::SetRandom(TRandom* ran = 0)
voidSetSamplePhiRange(Float_t min, Float_t max)
virtual voidAliGenerator::SetSigma(Float_t sx, Float_t sy, Float_t sz)
virtual voidAliGenerator::SetSigmaZ(Float_t sz)
voidAliGenerator::SetStack(AliStack* stack)
virtual voidAliGenerator::SetTarget(TString tar = "", Int_t a = 0, Int_t z = 0)
virtual voidAliGenerator::SetThetaRange(Float_t thetamin = 0, Float_t thetamax = 180)
virtual voidAliGenerator::SetTime(Float_t time)
virtual voidAliGenerator::SetTimeOrigin(Float_t timeorig)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidAliGenerator::SetTrackingFlag(Int_t flag = 1)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidAliGenerator::SetVertex(Float_t vx, Float_t vy, Float_t vz, Float_t t = 0)
voidAliGenerator::SetVertexGenerator(AliVertexGenerator* vertexGenerator)
virtual voidAliGenerator::SetVertexSmear(VertexSmear_t smear)
virtual voidAliGenerator::SetVertexSource(VertexSource_t source = kInternal)
virtual voidAliGenerator::SetVRange(Float_t vxmin, Float_t vxmax, Float_t vymin, Float_t vymax, Float_t vzmin, Float_t vzmax)
virtual voidAliGenerator::SetYRange(Float_t ymin = -100, Float_t ymax = 100)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
voidAliGenerator::Vertex()
voidAliGenerator::VertexExternal()
virtual voidAliGenerator::VertexInternal()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
virtual voidAliRndm::WriteRandom(const char* filename) const
protected:
Bool_tCheckParticle(TParticle* p, TParticle* aupair, AliStack* stack)
virtual voidCopy(TObject&) const
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidFillCoarse()
voidFillCoarseSignal()
voidGetOneD(TParticle* first, TParticle* second, Double_t qinv)
Double_tGetQInv(TParticle* f, TParticle* s)
Double_tGetQInvCorrTheorValue(Double_t qinv) const
voidGetQOutQSideQLong(TParticle* f, TParticle* s, Double_t& out, Double_t& side, Double_t& lon)
Double_tGetQOutQSideQLongCorrTheorValue(Double_t& out, Double_t& side, Double_t& lon) const
virtual voidAliGenerator::KeepTrack(Int_t itrack)
voidTObject::MakeZombie()
voidMix(TList* eventbuffer, TH3D* denominator, TH3D* denominator2)
voidMix(AliStack* stack, TH3D* numerator, TH3D* numerator2)
AliGenHBTosl&operator=(const AliGenHBTosl& rhs)
virtual voidAliGenerator::PushTrack(Int_t done, Int_t parent, Int_t pdg, Float_t* pmom, Float_t* vpos, Float_t* polar, Float_t tof, TMCProcess mech, Int_t& ntr, Float_t weight = 1, Int_t is = 0)
virtual voidAliGenerator::PushTrack(Int_t done, Int_t parent, Int_t pdg, Double_t px, Double_t py, Double_t pz, Double_t e, Double_t vx, Double_t vy, Double_t vz, Double_t tof, Double_t polx, Double_t poly, Double_t polz, TMCProcess mech, Int_t& ntr, Float_t weight = 1, Int_t is = 0)
AliStack*RotateStack()
Double_tScale(TH3D* num, TH3D* den)
virtual voidAliGenerator::SetHighWaterMark(Int_t nt)
voidSetTrack(TParticle* p, Int_t& ntr)
voidSetTrack(TParticle* p, Int_t& ntr, AliStack* stack) const
voidStartSignal()
voidStartSignalPass1()
voidSwapGeneratingHistograms()
voidTestCoarseSignal()

Data Members

protected:
Int_tAliGenerator::fAProjectileProjectile A
Int_tAliGenerator::fATargetTarget A
Int_tAliGenerator::fAnalogFlag for anolog or pt-weighted generation
Float_tAliGenerator::fChildWeightChildWeight
AliCollisionGeometry*AliGenerator::fCollisionGeometry!Collision geometry
AliGenerator*AliGenerator::fContainer! Local pointer to container
Float_tAliGenerator::fCutVertexZVertex cut in units of sigma_z
Float_tAliGenerator::fEnergyCMSCentre of mass energy
Float_tAliGenerator::fEvPlanethe event plane
TGenerator*AliGenerator::fMCEvGen!Pointer to the generator
TStringTNamed::fNameobject identifier
Int_tAliGenerator::fNpartMaximum number of particles per event
TArrayFAliGenerator::fOriginOrigin of event
TArrayFAliGenerator::fOsigmaSigma of the Origin of event
Float_tAliGenerator::fPMaxMinimum momentum of generation in GeV/c
Float_tAliGenerator::fPMinMinimum momentum of generation in GeV/c
Float_tAliGenerator::fParentWeightParent Weight
Float_tAliGenerator::fPhiMaxMaximum phi of generation in radians
Float_tAliGenerator::fPhiMinMinimum phi of generation in radians
Float_tAliGenerator::fPileUpTimeWindowTime window for pile-up events
TStringAliGenerator::fProjectileProjectile
Float_tAliGenerator::fPtMaxMaximum transverse momentum
Float_tAliGenerator::fPtMinMinimum transverse momentum
TRandom*AliRndm::fRandom! Pointer to the random number generator
AliStack*AliGenerator::fStack! Local pointer to stack
TStringAliGenerator::fTargetTarget
Float_tAliGenerator::fThetaMaxMaximum theta of generation in radians
Float_tAliGenerator::fThetaMinMinimum theta of generation in radians
Float_tAliGenerator::fTimeEvent time smeared around time0 origin using sigma vertex
Float_tAliGenerator::fTimeOriginTime0 origin in a run or event sample
TStringTNamed::fTitleobject title
Int_tAliGenerator::fTrackItif 1, Track final state particles
TArrayFAliGenerator::fVMaxMinimum Decaylength
TArrayFAliGenerator::fVMinMinimum Decaylength
TArrayFAliGenerator::fVertex! Vertex of current event
AliVertexGenerator*AliGenerator::fVertexGenerator! Generator for the vertex
VertexSmear_tAliGenerator::fVertexSmearVertex Smearing mode
VertexSource_tAliGenerator::fVertexSourceVertex source (internal/external)
Float_tAliGenerator::fYMaxMaximum rapidity
Float_tAliGenerator::fYMinMinimum rapidity
Int_tAliGenerator::fZProjectileProjectile Z
Int_tAliGenerator::fZTargetTarget Z
private:
Int_tfBufferSizedefines number of events used for background mixing
Int_tfDebugdebug flag
AliGenerator*fGeneratorinput generator
ofstream*fLogFile! File where logs are stored
Float_tfMaxChiSquereChangevalue of ChiSqr change in %, when sturtup process in stable
Float_tfMaxChiSquerePerNDFvalue of the chi2 where generating histograms are considered as good
Int_tfMaxIterationsmaximal nuber of iterations on startup
Int_tfMinFillMinimal allowed fill in background histograms - fill is continued until all bins have more than this
Int_tfNBinsToScaledefines how many bins are used to calculate scaling factor
Int_tfPIDpid of particle
TH3D*fQBackgroundgenerating background histogram
TH3D*fQCoarseBackgroundInitial Background
TH3D*fQCoarseSignalsignal calculated by multiplying coarse background and model function
Int_tfQNBinsnumber of bins of generating histograms
Double_tfQRadiussimulated radius
Float_tfQRangerange of generating histograms
TH3D*fQSecondBackgroundseconf background histogram
TH3D*fQSecondSignalsecond signal histogram
TH3D*fQSignalgenerating signal histogram
Float_tfSamplePhiMaxmax phi
Float_tfSamplePhiMinmin phi
Float_tfSignalRegionDefines signal region
Bool_tfSignalShapeCreatedflag indicating that generating histograms are ready
TList*fStackBufferList with stacks
Bool_tfSwappedindicates if generating histograms were already swapped

Class Charts

Inheritance Chart:
TNamed
AliRndm
AliGenerator
AliGenHBTosl

Function documentation

AliGenHBTosl()
default constructor
AliGenHBTosl(Int_t n, Int_t pid = 211)
default constructor
AliGenHBTosl(const AliGenHBTosl& hbt)
 Copy constructor
~AliGenHBTosl()
destructor
void Init()
Initializes generator
void Generate()
the main method
void GetOneD(TParticle* first, TParticle* second, Double_t qinv)
deprecated method that caclulates momenta of the second particle
 out of qinv and the first particle
first particle is rotated that only X is non-zero
Int_t GetThreeD(TParticle* first, TParticle* second, Double_t qout, Double_t qside, Double_t qlong)
deprecated method that caclulates momenta of the second particle
out of  qout qside and qlong and the first particle
void StartSignal()
Starts the signal histograms
void StartSignalPass1()
This method makes first part of the initialization of working histograms
It randomizes qout, qside and qlong from the coarse signal histogram
void FillCoarseSignal()
Makes coarse signal by multiplying the coarse background and required function
void FillCoarse()
creates the statistical background histogram on the base of input from
fGenerator
void Mix(TList* eventbuffer, TH3D* denominator, TH3D* denominator2)
Fills denominators
Mixes events stored in the eventbuffer and fills the background histograms
void Mix(AliStack* stack, TH3D* numerator, TH3D* numerator2)
fils numerator with particles from stack
Double_t GetQInv(TParticle* f, TParticle* s)
calculates qinv
 cout<<f->Px()<<"   "<<s->Px()<<endl;
void GetQOutQSideQLong(TParticle* f, TParticle* s, Double_t& out, Double_t& side, Double_t& lon)
returns qout,qside and qlong of the pair of particles
Double_t Scale(TH3D* num, TH3D* den)
Calculates the factor that should be used to scale
quatience of num and den to 1 at tail
void TestCoarseSignal()
Tests how works filling from generated histogram shape
void SetTrack(TParticle* p, Int_t& ntr)
Shortcut to PushTrack(bla,bla,bla,bla.............)
void SetTrack(TParticle* p, Int_t& ntr, AliStack* stack) const
Shortcut to SetTrack(bla,bla,bla,bla.............)
void Rotate(TVector3& relvector, TVector3& vector)
This method rotates vector about the angeles that are needed to rotate
relvector from postion (firstPx,0,0) to its actual positon
In other words: To make equations easier
Double_t Rotate(Double_t x, Double_t y, Double_t z)
Rotates vector to base where only x - coordinate is no-zero, and returns that
AliStack* RotateStack()
swaps to next stack last goes to first and is reseted
Double_t GetQInvCorrTheorValue(Double_t qinv) const
Function (deprecated)
Double_t GetQOutQSideQLongCorrTheorValue(Double_t& out, Double_t& side, Double_t& lon) const
Theoretical function. Wa want to get correlation of the shape of this function
Bool_t CheckParticle(TParticle* p, TParticle* aupair, AliStack* stack)
Checks if a given particle is falling into signal region with any other particle
already existing on stack
PH return kFALSE;
void SwapGeneratingHistograms()
Checks if it is time to swap signal and background histograms
if yes it swaps them
AliGenHBTosl& operator=(const AliGenHBTosl& rhs)
 Assignment operator
void Copy(TObject& ) const
void SetGenerator(AliGenerator* gen)
{fGenerator = gen;}
void SetDebug(Int_t debug)
{fDebug = debug;}
Int_t GetDebug() const
{return fDebug;}
void SetSamplePhiRange(Float_t min, Float_t max)