Fix coding convention violation
authoralibrary <alibrary@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 23 Jan 2004 15:10:52 +0000 (15:10 +0000)
committeralibrary <alibrary@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 23 Jan 2004 15:10:52 +0000 (15:10 +0000)
ALIFAST/AliFTrackMaker.cxx
ALIFAST/AliFTrackMaker.h
ALIFAST/AliFast.cxx
ALIFAST/AliFast.h

index 67617fb..0a06374 100644 (file)
 # pragma optimize( "", off )
 #endif
 
-#include <TParticle.h>
 #include <TFile.h>
-#include <TSystem.h>
-#include <TRandom.h>
-#include <TROOT.h>
-#include <TMath.h>
 #include <TH1.h>
-#include <TH2.h>
-#include <TH3.h>
+#include <TMath.h>
+#include <TParticle.h>
+#include <TRandom.h>
 
-#include "AliFast.h"
-//#include "AliFMCMaker.h"
-#include "AliFTrackMaker.h"
-#include "AliFTrack.h"
 #include "AliFDet.h"
+#include "AliFTrack.h"
+#include "AliFTrackMaker.h"
+#include "AliFast.h"
 #include "AliMC.h"
 
-const Double_t kPi       = TMath::Pi();
-const Double_t k2Pi      = 2*kPi;
-const Double_t kPiHalf   = kPi/2.;
+static const Double_t kPi       = TMath::Pi();
+static const Double_t k2Pi      = 2*kPi;
+static const Double_t kPiHalf   = kPi/2.;
 extern  AliFast * gAliFast;
 ClassImp(AliFTrackMaker)
 
 //_____________________________________________________________________________
 AliFTrackMaker::AliFTrackMaker()
 {
-   fNTracks = 0;
-   fResID1Test = 0;
-   fResID2Test = 0;
-   fResID3Test = 0;
-   fResID4Test = 0;
-   fResID5Test = 0;
+  //
+  // Default constructor
+  //
+  fNTracks = 0;
+  fResID1Test = 0;
+  fResID2Test = 0;
+  fResID3Test = 0;
+  fResID4Test = 0;
+  fResID5Test = 0;
 }
 
 //_____________________________________________________________________________
 AliFTrackMaker::AliFTrackMaker(const char *name, const char *title)
                  :AliFMaker(name,title)
 {
-//    Default Setters for tracks
-
+  //
+  // Standard Setters for tracks
+  //
    fFruits     = new TClonesArray("AliFTrack",100, kFALSE);
    fBranchName = "Tracks";
    fNTracks    = 0;
@@ -92,10 +91,22 @@ AliFTrackMaker::AliFTrackMaker(const char *name, const char *title)
    Save();
 }
 
+//_______________________________________________________________________
+AliFTrackMaker::AliFTrackMaker(const AliFTrackMaker& aftmk):
+  AliFMaker(aftmk)
+{
+  //
+  // Copy constructor for AliRun
+  //
+  aftmk.Copy(*this);
+}
+
 //_____________________________________________________________________________
 AliFTrackMaker::~AliFTrackMaker()
 {
-   //dummy
+  //
+  // Dummy constructor
+  //
 }
 
 //_____________________________________________________________________________
@@ -180,11 +191,11 @@ void AliFTrackMaker::Init()
 
 }
 
-//_____________________________________________________________________________
-// Calculate track and its resolution
-//_____________________________________________________________________________
 void AliFTrackMaker::Make()
 {
+  //
+  // Calculate track and its resolution
+  //
   Double_t v11, v22, v33, v12, v13, v23;
   Int_t iFlag;
 
@@ -303,6 +314,12 @@ void AliFTrackMaker::Make()
   }
 }
 
+//_______________________________________________________________________
+void AliFTrackMaker::Copy(TObject &) const
+{
+  Fatal("Copy","Not implemented!\n");
+}
+
 //_____________________________________________________________________________
 void AliFTrackMaker::Finish()
 {
@@ -720,11 +737,12 @@ void AliFTrackMaker::TPCResolution(Double_t pTransv, Double_t radiPad, Double_t
   
 }
 
-//_____________________________________________________________________________
-// returns the mass given particle ID 
 //-----------------------------------------------------------------------------
-Double_t AliFTrackMaker::ParticleMass(Int_t idTrack)
+Double_t AliFTrackMaker::ParticleMass(Int_t idTrack) const
 {
+  //
+  // returns the mass given particle ID 
+  //
   Double_t mass = 0.0;
 
        if(idTrack == 2){ mass = fPionMass;}
@@ -736,12 +754,12 @@ Double_t AliFTrackMaker::ParticleMass(Int_t idTrack)
 
 }
 
-//_____________________________________________________________________________
-// returns the rapidity given particle pT, pz 
-//-----------------------------------------------------------------------------
+//____________________________________________________________________________
 Double_t AliFTrackMaker::Rapidity(Double_t pt, Double_t pz)
 {
-//   Compute rapidity
+  //
+  // returns the rapidity given particle pT, pz 
+  //   Compute rapidity
 
    Double_t etalog = TMath::Log((TMath::Sqrt(pt*pt + pz*pz) + TMath::Abs(pz))/pt);
    if (pz < 0 ) return -TMath::Abs(etalog);
@@ -930,11 +948,12 @@ Int_t AliFTrackMaker::Compress(Int_t kf)
     return ret;
 }
 
-//_____________________________________________________________________________
-// TEST JOB: Calculate tracks resolution
 //_____________________________________________________________________________
 void AliFTrackMaker::MakeTest(Int_t n)
 {
+  //
+  // TEST JOB: Calculate tracks resolution
+  //
   Double_t v11, v22, v33, v12, v13, v23;
   Int_t iFlag;
   Int_t idTrack;
index 7214961..467ff6d 100644 (file)
@@ -8,59 +8,22 @@
 //                                                                      //
 //////////////////////////////////////////////////////////////////////////
 
-#ifndef AliFMaker_H
-#include "AliFMaker.h"
-#endif
-#ifndef ROOT_TMatrix
-#include <TMatrix.h>
-#endif
-#ifndef ROOT_TH1
-#include <TH1.h>
-#endif
+class TH1D; 
 
-class AliFTrack;
 #include "AliFDet.h"
+#include "AliFMaker.h"
 
+class AliFTrack;
 
 class AliFTrackMaker : public AliFMaker {
-
-protected:
-   Int_t           fNTracks;          //Number of tracks
-   Int_t           fRecTrack;        //Tracks reconstruction  on/off
-   //masses
-   Double_t        fPionMass;
-   Double_t        fKaonMass;
-   Double_t        fElectronMass;
-   Double_t        fProtonMass;
-   //matrices
-   Double_t        fHH[kNMaxDet2][kNMaxDet2];   
-   Double_t        fHHI[kNMaxDet2][kNMaxDet2];
-   //TPC resolution
-   Double_t        fSigmaRPhiSQ;   
-   Double_t        fSigmaZSQ;   
-   //     Tracks histograms (control)
-   TH1D          *fResID11;          //histogram ID11 Elec: delta(1/pTot)/pTot
-   TH1D          *fResID12;          //histogram ID12 Elec: delta(lambda)/lambda
-   TH1D          *fResID13;          //histogram ID13 Elec: delta(phi)/phi
-   TH1D          *fResID21;          //histogram ID21 Pion: delta(1/pTot)/pTot
-   TH1D          *fResID22;          //histogram ID22 Pion: delta(lambda)/lambda
-   TH1D          *fResID23;          //histogram ID23 Pion: delta(phi)/phi
-   TH1D          *fResID31;          //histogram ID31 Kaon: delta(1/pTot)/pTot
-   TH1D          *fResID32;          //histogram ID32 Kaon: delta(lambda)/lambda
-   TH1D          *fResID33;          //histogram ID33 Kaon: delta(phi)/phi
-   TH1D          *fResID41;          //histogram ID41 Proton: delta(1/pTot)/pTot
-   TH1D          *fResID42;          //histogram ID42 Proton: delta(lambda)/lambda
-   TH1D          *fResID43;          //histogram ID43 Proton: delta(phi)/phi
-   //     Tracks histograms (Test job)
-   TH1D          *fResID1Test;       //histogram ID1 in res.f 
-   TH1D          *fResID2Test;       //histogram ID2 in res.f 
-   TH1D          *fResID3Test;       //histogram ID3 in res.f 
-   TH1D          *fResID4Test;       //histogram ID4 in res.f 
-   TH1D          *fResID5Test;       //histogram ID5 in res.f 
-
 public:
                   AliFTrackMaker();
                   AliFTrackMaker(const char *name, const char *title);
+                 AliFTrackMaker(const AliFTrackMaker &aftmk);
+
+   AliFTrackMaker& operator = (const AliFTrackMaker &aftmk) 
+     {aftmk.Copy(*this); return (*this);}
+
    virtual       ~AliFTrackMaker();
    virtual void   Clear(Option_t *option="");
    virtual void   Draw(Option_t *option="");
@@ -74,7 +37,7 @@ public:
                   Double_t v12, Double_t v13, Double_t v23, Int_t iFlag);
            void   LogLikelyhood(Int_t idTrack, Double_t pInvers,  Double_t lambda);
            void   TPCResolution(Double_t ptransv, Double_t radiPad, Double_t lambda); 
-   Double_t       ParticleMass(Int_t idTrack);  
+   Double_t       ParticleMass(Int_t idTrack) const;  
    Double_t       Rapidity(Double_t pT, Double_t pZ);  
    Double_t       Angle(Double_t pX, Double_t pY);  
    Int_t          Charge(Int_t kf);
@@ -84,11 +47,11 @@ public:
                               Double_t &v12, Double_t &v13, Double_t &v23, Int_t &iFlag);
 
 //    Getters
-   Double_t       HH(Int_t id1, Int_t id2) {return fHH[id1][id2];}
-   Double_t       HHI(Int_t id1, Int_t id2) {return fHHI[id1][id2];}
-   Double_t       SigmaRPhiSQ() {return fSigmaRPhiSQ;}
-   Double_t       SigmaZSQ() {return fSigmaZSQ;}
-   Int_t          NTracks() {return fNTracks;}
+   Double_t       HH(Int_t id1, Int_t id2) const {return fHH[id1][id2];}
+   Double_t       HHI(Int_t id1, Int_t id2) const {return fHHI[id1][id2];}
+   Double_t       SigmaRPhiSQ() const {return fSigmaRPhiSQ;}
+   Double_t       SigmaZSQ() const {return fSigmaZSQ;}
+   Int_t          NTracks() const {return fNTracks;}
 
 
 //     Getters Tracks histograms
@@ -107,7 +70,41 @@ public:
    void           SetSigmaZSQ(Double_t val){fSigmaZSQ=val;}
    void           SetRecTrack(Int_t val=100){fRecTrack=val;}
 
+protected:
+   void Copy(TObject &aftmk) const;
 
+   Int_t           fNTracks;          // Number of tracks
+   Int_t           fRecTrack;         // Tracks reconstruction  on/off
+   //masses
+   Double_t        fPionMass;         // Mass of pion
+   Double_t        fKaonMass;         // Mass of kaon
+   Double_t        fElectronMass;     // Mass of electron
+   Double_t        fProtonMass;       // Mass of proton
+   //matrices
+   Double_t        fHH[kNMaxDet2][kNMaxDet2];   // Matrix 
+   Double_t        fHHI[kNMaxDet2][kNMaxDet2];  // Matrix
+   //TPC resolution
+   Double_t        fSigmaRPhiSQ;                // Sigma R-PHI
+   Double_t        fSigmaZSQ;                   // Sigma Z^2
+   //     Tracks histograms (control)
+   TH1D          *fResID11;          //histogram ID11 Elec: delta(1/pTot)/pTot
+   TH1D          *fResID12;          //histogram ID12 Elec: delta(lambda)/lambda
+   TH1D          *fResID13;          //histogram ID13 Elec: delta(phi)/phi
+   TH1D          *fResID21;          //histogram ID21 Pion: delta(1/pTot)/pTot
+   TH1D          *fResID22;          //histogram ID22 Pion: delta(lambda)/lambda
+   TH1D          *fResID23;          //histogram ID23 Pion: delta(phi)/phi
+   TH1D          *fResID31;          //histogram ID31 Kaon: delta(1/pTot)/pTot
+   TH1D          *fResID32;          //histogram ID32 Kaon: delta(lambda)/lambda
+   TH1D          *fResID33;          //histogram ID33 Kaon: delta(phi)/phi
+   TH1D          *fResID41;          //histogram ID41 Proton: delta(1/pTot)/pTot
+   TH1D          *fResID42;          //histogram ID42 Proton: delta(lambda)/lambda
+   TH1D          *fResID43;          //histogram ID43 Proton: delta(phi)/phi
+   //     Tracks histograms (Test job)
+   TH1D          *fResID1Test;       //histogram ID1 in res.f 
+   TH1D          *fResID2Test;       //histogram ID2 in res.f 
+   TH1D          *fResID3Test;       //histogram ID3 in res.f 
+   TH1D          *fResID4Test;       //histogram ID4 in res.f 
+   TH1D          *fResID5Test;       //histogram ID5 in res.f 
 
    // 
    ClassDef(AliFTrackMaker, 1)   //AliFast TrackMaker
index 6bc7086..278210b 100644 (file)
 //
 //////////////////////////////////////////////////////////////////////////
 
-#include <TROOT.h>
+//class TChain;
+
+#include <TBrowser.h>
 #include <TChain.h>
+#include <TROOT.h>
 #include <TTree.h>
-#include <TBrowser.h>
-#include <TClonesArray.h>
-#include "AliRun.h"
+
 #include "AliFast.h"
-//#include "AliFMCMaker.h"
 #include "AliFTrackMaker.h"
-#include "AliFHistBrowser.h"
-#include "AliFBigBang.h"
-#include "AliFVirtualDisplay.h"
 
 
 R__EXTERN AliRun * gAlice;
+
 AliFast *gAliFast;
 
 ClassImp(AliFast)
 
 
 //_____________________________________________________________________________
-  //AliFast::AliFast() : TNamed("alifast","The ALICE fast simulation")
-  AliFast::AliFast() : AliRun("alifast","The ALICE fast simulation")
+AliFast::AliFast(): 
+  AliRun("alifast","The ALICE fast simulation"),
+  fVersion(0),
+  fVersionDate(0),
+  fMode(0),
+  fTestTrack(0),
+  fTree(0),
+  fMakers(0),
+  fMCMaker(0),
+  fTrackMaker(0),
+  fDet(new AliFDet("Detector","Make AliFast detector")),
+  fLuminosity(0),
+  fBfield(0),
+  fSmearing(0),
+  fSUSYcodeLSP(0),
+  fTrackFinding(0),
+  fFDisplay(0)
 {
+  //
+  // Default constructor
+  //
 
-   fTree          = 0;
-   fMakers        = 0;
-   fMode          = 0;
-   fMCMaker       = 0;
-   fTrackMaker    = 0;
-   fDisplay       = 0;
-   fDet           = new AliFDet("Detector","Make AliFast detector");
    gAliFast     = this;
    gAlice       = (AliRun*)this;
 }
 
 //_____________________________________________________________________________
-//AliFast::AliFast(const char *name, const char *title): TNamed(name,title)
-AliFast::AliFast(const char *name, const char *title): AliRun(name,title)
+AliFast::AliFast(const char *name, const char *title): 
+  AliRun(name,title),
+  fVersion(1), //AliFAST version number and release date
+  fVersionDate(150399),
+  fMode(0),
+  fTestTrack(0),
+  fTree(0),
+  fMakers(new TList()), // support list for the lists of AliFast objects
+  fMCMaker(0),
+  fTrackMaker(new AliFTrackMaker("TrackMaker","Make AliFast tracks")),
+  fDet(new AliFDet("Detector","Make AliFast detector")), // create detectors
+  fLuminosity(0),
+  fBfield(0),
+  fSmearing(0),
+  fSUSYcodeLSP(0),
+  fTrackFinding(0),
+  fFDisplay(0)
 {
+  //
+  // Standard constructor
+  //
 
    gAliFast      = this;
-   fVersion     = 001;       //AliFAST  version number and release date
-   fVersionDate = 150399;
-   fTree        = 0;
-   fMode        = 0;
-   fDisplay     = 0;
    
    SetDefaultParameters();
 
    gROOT->GetListOfBrowsables()->Add(this,"AliFast");
 
-// create the support list for the various lists of AliFast objects
-   fMakers  = new TList();
-
-// create "standard" makers and add them to the list of makers (in AliFMaker constructor
-// Note that the order in which makers are added to the list of makers is important
-// makers will be processed in this order !!
+   // create "standard" makers and add them to the list of makers 
+   // (in AliFMaker constructor)
+   // Note that the order in which makers are added to the list of makers 
+   // is important makers will be processed in this order !!
 
    //fMCMaker       = new AliFMCMaker("MCMaker","Make MC events");
-   fTrackMaker    = new AliFTrackMaker("TrackMaker","Make AliFast tracks");
-//create detector
-   fDet           = new AliFDet("Detector","Make AliFast detector");
+
+}
+
+//_______________________________________________________________________
+AliFast::AliFast(const AliFast& afast):
+  AliRun(afast),
+  fVersion(0),
+  fVersionDate(0),
+  fMode(0),
+  fTestTrack(0),
+  fTree(0),
+  fMakers(0),
+  fMCMaker(0),
+  fTrackMaker(0),
+  fDet(0),
+  fLuminosity(0),
+  fBfield(0),
+  fSmearing(0),
+  fSUSYcodeLSP(0),
+  fTrackFinding(0),
+  fFDisplay(0)
+{
+  //
+  // Copy constructor for AliRun
+  //
+  afast.Copy(*this);
 }
 
 //_____________________________________________________________________________
 AliFast::~AliFast()
 {
+  //
+  // Destructor
+  //
 //   fMakers->Delete();
 //   delete fMakers;
 }
@@ -232,6 +278,9 @@ AliFast::~AliFast()
 //______________________________________________________________________________
 void AliFast::Browse(TBrowser *b)
 {
+  //
+  // To allow browsing of the class
+  //
 
   if( b == 0) return;
 
@@ -251,33 +300,35 @@ void AliFast::Browse(TBrowser *b)
 //_____________________________________________________________________________
 void AliFast::Clear(Option_t *option)
 {
-//    Reset lists of event objects
+  //
+  //    Reset lists of event objects
+  //
    TIter next(fMakers);
    AliFMaker *maker;
    while ((maker = (AliFMaker*)next())) {
       maker->Clear(option);
    }
-   //fca   if (fDisplay) fDisplay->Clear();
 }
 
 //_____________________________________________________________________________
-void AliFast::Draw(Option_t */*option*/)
+void AliFast::Draw(Option_t */*option*/) const
 {
-//    Insert current event in graphics pad list
-
-    // Check if the Event Display object has been created
-   if (!fDisplay) {
+  //
+  //    Insert current event in graphics pad list
+  // Check if the Event Display object has been created
+  //
+   if (!fFDisplay) {
       Error("Draw","You must create an AliFDisplay object first");
       return;
    }
-
-   //fca   fDisplay->Draw(option);
 }
 
 //_____________________________________________________________________________
 void  AliFast::GetTreeEvent(Int_t event)
 {
-//    Read event from Tree
+  //
+  //    Read event from Tree
+  //
    if (fTree) fTree->GetEvent(event);
    fEvent = event;  
 }
@@ -285,7 +336,9 @@ void  AliFast::GetTreeEvent(Int_t event)
 //_____________________________________________________________________________
 void AliFast::Init()
 {
-//  Initialise detector
+  //
+  //  Initialise detector
+  //
    AliFDet *detector=gAliFast->Detector();  
    detector->InitDetParam(); 
 
@@ -314,15 +367,17 @@ void AliFast::Init()
 //_____________________________________________________________________________
 void AliFast::Paint(Option_t */*option*/)
 {
-//    Paint AliFast objects
-
-  //fca   fDisplay->Paint(option);
+  //
+  //    Paint AliFast objects
+  //
 }
 
 //_____________________________________________________________________________
 void AliFast::PrintInfo()
 {
-//     Gives information about versions etc.
+  //
+  //     Gives information about versions etc.
+  //
    printf("\n\n");
    printf("**************************************************************\n");
    printf("*             AliFast version:00%1d     last update  %6d    *\n",
@@ -351,10 +406,12 @@ void AliFast::PrintInfo()
 //_____________________________________________________________________________
 void AliFast::FillTree()
 {
-//  Fill the ROOT tree, looping on all active branches
-
+  //
+  //  Fill the ROOT tree, looping on all active branches
+  //
   // Clean generated particles (depending on option Save)
-  //MCMaker()->CleanParticles();
+  // MCMaker()->CleanParticles();
+  //
 
   // Now ready to fill the Root Tree
    if(fTree) fTree->Fill();
@@ -363,7 +420,9 @@ void AliFast::FillTree()
 //_____________________________________________________________________________
 void AliFast::InitChain(TChain *chain)
 {
-//  Initialize branch addresses for all makers in a TChain
+  //
+  //  Initialize branch addresses for all makers in a TChain
+  //
 
    if (chain == 0) return;
 
@@ -379,8 +438,10 @@ void AliFast::InitChain(TChain *chain)
 //_____________________________________________________________________________
 void AliFast::MakeTree(const char* name, const char*title)
 {
-//  Create a ROOT tree
-//  Loop on all makers to create the Root branch (if any)
+  //
+  //  Create a ROOT tree
+  //  Loop on all makers to create the Root branch (if any)
+  //
 
    if (fTree) return;
 
@@ -396,8 +457,9 @@ void AliFast::MakeTree(const char* name, const char*title)
 //_____________________________________________________________________________
 void AliFast::SetDefaultParameters()
 {
-
-//    Setters for flags and switches
+  //
+  //    Setters for flags and switches
+  //
    SetLuminosity();
    SetBfield();
    SetSmearing();
@@ -408,6 +470,9 @@ void AliFast::SetDefaultParameters()
 //_____________________________________________________________________________
 void AliFast::Make(Int_t i)
 {
+  //
+  // Main maker method
+  //
    fEvent = i;
 
 //   Loop on all makers
@@ -422,7 +487,9 @@ void AliFast::Make(Int_t i)
 //_____________________________________________________________________________
 void AliFast::FillClone()
 {
-   // Fill Makers fruits clones
+  //
+  // Fill Makers fruits clones
+  //
    
    TIter next(fMakers);
    AliFMaker *maker;
@@ -434,8 +501,10 @@ void AliFast::FillClone()
 //_____________________________________________________________________________
 void AliFast::Finish()
 {
-//    Terminate a run
-//   place to make operations on histograms, normalization,etc.
+  //
+  //    Terminate a run
+  //   place to make operations on histograms, normalization,etc.
+  //
 
    TIter next(fMakers);
    AliFMaker *maker;
@@ -445,7 +514,7 @@ void AliFast::Finish()
 }
 
 //_____________________________________________________________________________
-void AliFast::SortDown(Int_t n1, Float_t *a, Int_t *index, Bool_t down)
+void AliFast::SortDown(Int_t n1, Float_t *a, Int_t *index, Bool_t down) const
 {
 //  sort the n1 elements of array a.
 //  In output the array index contains the indices of the sorted array.
@@ -510,8 +579,9 @@ void AliFast::SortDown(Int_t n1, Float_t *a, Int_t *index, Bool_t down)
 //______________________________________________________________________________
 void AliFast::Streamer(TBuffer &R__b)
 {
-   // Stream an object of class AliFast.
-
+  //
+  // Stream an object of class AliFast.
+  //
    if (R__b.IsReading()) {
       UInt_t R__s, R__c;
       if (!gAliFast) gAliFast = this;
index c7bbd2b..a067a71 100644 (file)
 //                                                                      //
 //////////////////////////////////////////////////////////////////////////
 
-#include "AliRun.h"
-//#ifndef ROOT_TTree
-#include <TTree.h>
-//#endif
-//#ifndef AliFHistBrowser_H
-#include "AliFHistBrowser.h"
-//#endif
-//#ifndef AliFBigBang_H
 #include "AliFBigBang.h"
-//#endif
-//#ifndef AliFMaker_H
-#include "AliFMaker.h"
-//#endif
-//#ifndef AliFDet_H
-//#include "AliFDet.h"
-//#endif
+#include "AliFHistBrowser.h"
+#include "AliRun.h"
 
 class TBrowser;
 class TChain;
+class TTree;
+
+class AliFDet;
 class AliFMCMaker;
+class AliFMaker;
 class AliFTrackMaker;
-class AliFDet;
 class AliFVirtualDisplay;
 
 class AliFast : public AliRun {
 
-private:
-   Int_t               fVersion;           //AliFast version number
-   Int_t               fVersionDate;       //AliFast version date
-   Int_t               fMode;              //Run mode
-   Int_t               fTestTrack;         //Test mode for TrackMaker
-   TTree              *fTree;              //!Pointer to the Root tree
-   TList              *fMakers;            //List of Makers
-//    pointers to standard Makers
-   AliFMCMaker        *fMCMaker;           //!Pointer to MCMaker
-   AliFTrackMaker     *fTrackMaker;        //!Pointer to TrackMaker
-   AliFDet            *fDet;               //!Pointer to Detector
-//    flags and switches
-   Int_t               fLuminosity;        //Luminosity option (low=1, high=2)
-   Bool_t              fBfield;            //B-field (on=1,off=0)
-   Bool_t              fSmearing;          //Smearing on=1, off=0
-   Int_t               fSUSYcodeLSP;       //Code for SUSY LSP particle
-   Int_t               fTrackFinding;      //Track/finding on=1,off=0
-   AliFHistBrowser     fHistBrowser;       //Object to Browse Maker histograms
-   AliFBigBang         fBigBang;           //!Object to Browse generated particles
-   AliFVirtualDisplay *fDisplay;           //!Pointer to Event display object
-
 public:
                       AliFast();
+                     AliFast(const AliFast &afast);
                       AliFast(const char *name, const char *title="The ALIAS fast MonteCarlo");
    virtual           ~AliFast();
+   AliFast& operator = (const AliFast &afast) 
+     {afast.Copy(*this); return (*this);}
+
    virtual void       Browse(TBrowser *b);
-   virtual void       Draw(Option_t *option="");  // *MENU*
-   Int_t              GetVersion() {return fVersion;}
-   Int_t              GetVersionDate() {return fVersionDate;}
+   virtual void       Draw(Option_t *option="") const;  // *MENU*
+   Int_t              GetVersion() const {return fVersion;}
+   Int_t              GetVersionDate() const {return fVersionDate;}
    virtual void       Clear(Option_t *option="");
-   AliFVirtualDisplay *Display() {return fDisplay;}
+   AliFVirtualDisplay *FDisplay() {return fFDisplay;}
    virtual void       FillClone();
    virtual void       Finish();
    virtual void       GetTreeEvent(Int_t event);  // *MENU*
@@ -82,28 +55,28 @@ public:
    virtual void       PrintInfo();
    virtual void       SetDefaultParameters();
 
-   TList             *Makers()    {return fMakers;}
-   AliFMaker         *Maker(const char *name) {return (AliFMaker*)fMakers->FindObject(name);}
-   AliFMCMaker       *MCMaker()       {return fMCMaker;}
-   AliFTrackMaker    *TrackMaker()    {return fTrackMaker;}
-   AliFDet           *Detector()    {return fDet;}
-   TTree             *Tree() {return fTree;}
+   TList             *Makers()    const {return fMakers;}
+   AliFMaker         *Maker(const char *name) const {return (AliFMaker*)fMakers->FindObject(name);}
+   AliFMCMaker       *MCMaker()     const {return fMCMaker;}
+   AliFTrackMaker    *TrackMaker()  const {return fTrackMaker;}
+   AliFDet           *Detector()    const {return fDet;}
+   TTree             *Tree()        const {return fTree;}
 
-   Int_t             Run()   {return fRun;}
-   Int_t             Event() {return fEvent;}
-   Int_t             Mode()  {return fMode;}
-   Int_t             TestTrack()  {return fTestTrack;}
+   Int_t             Run()          const {return fRun;}
+   Int_t             Event()        const {return fEvent;}
+   Int_t             Mode()         const {return fMode;}
+   Int_t             TestTrack()    const {return fTestTrack;}
 
 //    Getters for flags and switches
-   Int_t             Luminosity()   {return fLuminosity;}
-   Bool_t            Bfield()       {return fBfield;}
-   Bool_t            Smearing()     {return fSmearing;} 
-   Int_t             SUSYcodeLSP()  {return fSUSYcodeLSP;}
-   Bool_t            TrackFinding() {return fTrackFinding;}
+   Int_t             Luminosity()   const {return fLuminosity;}
+   Bool_t            Bfield()       const {return fBfield;}
+   Bool_t            Smearing()     const {return fSmearing;} 
+   Int_t             SUSYcodeLSP()  const {return fSUSYcodeLSP;}
+   Bool_t            TrackFinding() const {return fTrackFinding;}
 
 
 //    Setter for Event Display
-   void           SetDisplay(AliFVirtualDisplay *display) {fDisplay=display;}
+   void           SetDisplay(AliFVirtualDisplay *display) {fFDisplay=display;}
 //    Setters for flags and switches
    void           SetLuminosity(Int_t lumi=1)   {fLuminosity=lumi;}
    void           SetBfield(Bool_t field=1)     {fBfield=field;}
@@ -120,7 +93,31 @@ public:
    void           InitChain(TChain *chain);
    void           MakeTree(const char* name="T", const char*title="AliFast tree");
 
-   void           SortDown(Int_t n, Float_t *a, Int_t *index, Bool_t down=kTRUE);
+   void           SortDown(Int_t n, Float_t *a, Int_t *index, Bool_t down=kTRUE) const;
+
+private:
+
+   void Copy(TObject &afast) const;
+
+   Int_t               fVersion;           //AliFast version number
+   Int_t               fVersionDate;       //AliFast version date
+   Int_t               fMode;              //Run mode
+   Int_t               fTestTrack;         //Test mode for TrackMaker
+   TTree              *fTree;              //!Pointer to the Root tree
+   TList              *fMakers;            //List of Makers
+//    pointers to standard Makers
+   AliFMCMaker        *fMCMaker;           //!Pointer to MCMaker
+   AliFTrackMaker     *fTrackMaker;        //!Pointer to TrackMaker
+   AliFDet            *fDet;               //!Pointer to Detector
+//    flags and switches
+   Int_t               fLuminosity;        //Luminosity option (low=1, high=2)
+   Bool_t              fBfield;            //B-field (on=1,off=0)
+   Bool_t              fSmearing;          //Smearing on=1, off=0
+   Int_t               fSUSYcodeLSP;       //Code for SUSY LSP particle
+   Int_t               fTrackFinding;      //Track/finding on=1,off=0
+   AliFHistBrowser     fHistBrowser;       //Object to Browse Maker histograms
+   AliFBigBang         fBigBang;           //!Object to Browse generated particles
+   AliFVirtualDisplay *fFDisplay;           //!Pointer to Event display object
 
    ClassDef(AliFast, 1)   //AliFast control class
 };