/[PAMELA software]/PamVMC_update/include/PamVMCRndMgr.h
ViewVC logotype

Contents of /PamVMC_update/include/PamVMCRndMgr.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (download) (vendor branch)
Tue Oct 15 15:52:28 2013 UTC (11 years, 1 month ago) by formato
Branch: MAIN, rel
CVS Tags: reltag, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
Error occurred while calculating annotation data.
PamVMC update

1 #ifndef PAMVMCRNDMGR_H
2 #define PAMVMCRNDMGR_H
3 #include <iostream>
4 #include <TString.h>
5 #include <TObjArray.h>
6 #include <TRandom3.h>
7 #include <TSystem.h>
8 #include <TMap.h>
9 #include "PamVMCOptMgr.h"
10 #include "PamRootManager.h"
11 //This class holds few different random objects
12 //one for each digitization procedure,
13 //include Trk digitizations during stepping
14
15 using std::cout;
16 using std::endl;
17
18 #define RNDDEBUG 0
19
20 class PamVMCRndMgr: public TObject
21 {
22 private:
23
24 static PamVMCRndMgr * rm;
25 TObjArray *frndArr; // An array of random objects;
26 TMap frndmap; //map which holds all actual random objects
27
28
29
30 protected:
31 PamVMCRndMgr()
32 {
33
34 frndArr = new TObjArray();
35 frndArr->SetOwner(kTRUE);
36 if (PamVMCOptMgr::Instance()->GetSaveMode() == ALL_DETECTORS){
37 PamRootManager::Instance()->Register("RNDM","TObjArray",&frndArr);
38 if (RNDDEBUG){
39 cout<<"Random objects Map was created and branch registered" <<endl;
40 }
41 }
42 }
43 PamVMCRndMgr( TString ext_dig )
44 {
45 frndArr = new TObjArray();
46 cout<<"Random objects Map was created and branch registered" <<ext_dig<<endl;
47 }
48
49 virtual ~PamVMCRndMgr()
50 {
51 delete frndArr;
52 }
53
54 public:
55
56 static PamVMCRndMgr * Instance();
57 static PamVMCRndMgr * Instance_ext(); //Another way to call instance... for ext_dig constructor
58
59 /* Used only by PamVMCTrkF77 */
60 Double_t GenRandom(const char* name){
61 if((TRandom3*)frndmap(name))
62 return ((TRandom3*)frndmap(name))->Uniform();
63 else
64 {
65 cout<<"Error while calling RndMgr::GenRandom, object not found"<<endl;
66 return 0.;
67 }
68 }
69
70 void RegisterRandom(const char* name, TRandom3 *detrnd){
71 frndmap.Add(new TObjString(name), detrnd);
72 if(RNDDEBUG){
73 cout<<"RegisterRandom to rnd for "<<name<<endl;
74 frndmap.Print();
75 }
76 }
77
78
79
80 void MakeRandomClones()
81 {
82 if(RNDDEBUG) cout<<" Snapshot of random objects done"<<endl;
83 TMapIter *n= (TMapIter *)frndmap.MakeIterator();
84 TObject *o; while( (o=(TObject *) n->Next())) {
85 TRandom3 *tmp = (TRandom3*)frndmap.GetValue(o);
86 frndArr->Add(tmp->Clone());
87 if(RNDDEBUG) {
88 cout<<"Obj: "<<tmp<<" det: "<<tmp->GetName()<<endl;
89 tmp->Dump();
90 }
91 }
92 delete n;
93 }
94
95
96 void ClearColl() { (*frndArr).Clear("C"); }
97 void Compress() { (*frndArr).Compress(); }
98 };
99
100 #endif

  ViewVC Help
Powered by ViewVC 1.1.23