From: morsch Date: Tue, 15 Jul 2003 09:55:26 +0000 (+0000) Subject: Random number service class added. X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=6ceb0b460f94558ed452ca6e93a6080ec21d6524;p=u%2Fmrichter%2FAliRoot.git Random number service class added. --- diff --git a/DPMJET/AliDpmJetRndm.cxx b/DPMJET/AliDpmJetRndm.cxx new file mode 100644 index 00000000000..bf5de78a4ea --- /dev/null +++ b/DPMJET/AliDpmJetRndm.cxx @@ -0,0 +1,118 @@ +/************************************************************************** + * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +/* $Id$ */ + +//----------------------------------------------------------------------------- +// Class: AliDpmJetRndm +// Random Number Interface to Fortran +// Since AliGenDpmJet belongs to another module (TDPMjet) one cannot +// pass the ponter to the generator via static variable +//----------------------------------------------------------------------------- + +#include + +#include "AliDpmJetRndm.h" + +TRandom * AliDpmJetRndm::fgDpmJetRandom=0; + +ClassImp(AliDpmJetRndm) + +//_______________________________________________________________________ +AliDpmJetRndm::AliDpmJetRndm() +{ + // + // Default ctor + // +} + +//_______________________________________________________________________ +AliDpmJetRndm::AliDpmJetRndm(const AliDpmJetRndm& rn) +{ + // + // Copy constructor + // + rn.Copy(*this); +} + +//_______________________________________________________________________ +AliDpmJetRndm::~AliDpmJetRndm() { + // + // Destructor + // + fgDpmJetRandom=0; +} + +//_______________________________________________________________________ +void AliDpmJetRndm::Copy(AliDpmJetRndm&) const +{ + // + // No copy is allowed + // + ::Fatal("Copy","Not implemented\n"); +} + +//_______________________________________________________________________ +void AliDpmJetRndm::SetDpmJetRandom(TRandom *ran) { + // + // Sets the pointer to an existing random numbers generator + // + if(ran) fgDpmJetRandom=ran; + else fgDpmJetRandom=gRandom; +} + +//_______________________________________________________________________ +TRandom * AliDpmJetRndm::GetDpmJetRandom() { + // + // Retrieves the pointer to the random numbers generator + // + return fgDpmJetRandom; +} + +#ifndef WIN32 +# define dt_rndm_dpmjet dt_rndm_dpmjet_ +# define dt_rndmst_dpmjet dt_rndmst_dpmjet_ +# define dt_rndmin_dpmjet dt_rndmin_dpmjet_ +# define dt_rndmou_dpmjet dt_rndmou_dpmjet_ +# define type_of_call +#else +# define dt_rndm_dpmjet DT_RNDM_DPMJET_ +# define dt_rndmst_dpmjet DT_RNDMST_DPMJET +# define dt_rndmin_dpmjet DT_RNDMIN_DPMJET +# define dt_rndmou_dpmjet DT_RNDMOU_DPMJET +# define type_of_call _stdcall +#endif + + +extern "C" { + void type_of_call dt_rndmst_dpmjet(Int_t &, Int_t &, Int_t &, Int_t &) + {printf("Dummy version of dt_rndmst reached\n");} + + void type_of_call dt_rndmin_dpmjet(Int_t &, Int_t &, Int_t &, Int_t &, Int_t &, Int_t &) + {printf("Dummy version of dt_rndmin reached\n");} + + void type_of_call dt_rndmou_dpmjet(Int_t &, Int_t &, Int_t &, Int_t &, Int_t &, Int_t &) + {printf("Dummy version of dt_rndmou reached\n");} + + Double_t type_of_call dt_rndm_dpmjet(Int_t &) + { + Float_t r; + do r = AliDpmJetRndm::GetDpmJetRandom()->Rndm(); + while(0 >= r || r >= 1); + return r; + } +} + + diff --git a/DPMJET/AliDpmJetRndm.h b/DPMJET/AliDpmJetRndm.h new file mode 100644 index 00000000000..79b8e4348c9 --- /dev/null +++ b/DPMJET/AliDpmJetRndm.h @@ -0,0 +1,30 @@ +#ifndef ALIDPMJETRNDM_H +#define ALIDPMJETRNDM_H +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ + +/* $Id$ */ + +#include "TRandom.h" + +class AliDpmJetRndm { + public: + AliDpmJetRndm(); + AliDpmJetRndm(const AliDpmJetRndm &rnd); + virtual ~AliDpmJetRndm(); + AliDpmJetRndm & operator=(const AliDpmJetRndm& rn) + {rn.Copy(*this); return (*this);} + + static void SetDpmJetRandom(TRandom *ran=0); + static TRandom * GetDpmJetRandom(); + +private: + void Copy(AliDpmJetRndm &rn) const; + + static TRandom * fgDpmJetRandom; //! pointer to the random number generator + + ClassDef(AliDpmJetRndm,0) //Random Number generator wrapper (non persistent) +}; + +#endif + diff --git a/DPMJET/dpmjetLinkDef.h b/DPMJET/dpmjetLinkDef.h new file mode 100644 index 00000000000..8d7b4a2949f --- /dev/null +++ b/DPMJET/dpmjetLinkDef.h @@ -0,0 +1,8 @@ +#ifdef __CINT__ + +#pragma link off all globals; +#pragma link off all classes; +#pragma link off all functions; + +#pragma link C++ class AliDpmJetRndm+; +#endif diff --git a/DPMJET/libdpmjet.pkg b/DPMJET/libdpmjet.pkg index 88e1815b29e..1e01996af46 100644 --- a/DPMJET/libdpmjet.pkg +++ b/DPMJET/libdpmjet.pkg @@ -1,3 +1,9 @@ +SRCS:=AliDpmJetRndm.cxx + +HDRS= $(SRCS:.cxx=.h) + +DHDR:=dpmjetLinkDef.h + FSRCS:= \ dpmjet3.0-4.f \ phojet1.12-35c.f \