/[PAMELA software]/PamVMC/src/PamVMCApplication.cxx
ViewVC logotype

Diff of /PamVMC/src/PamVMCApplication.cxx

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by nikolas, Thu Feb 19 18:43:14 2009 UTC revision 1.6 by pizzolot, Wed Sep 15 07:01:55 2010 UTC
# Line 29  Line 29 
29    
30  ClassImp(PamVMCApplication)  ClassImp(PamVMCApplication)
31    
32  PamVMCApplication::PamVMCApplication(const char *name, const char *title)  PamVMCApplication::PamVMCApplication(const char *name, const char *title, const char* filename, Int_t seed)
33    : TVirtualMCApplication(name,title),    : TVirtualMCApplication(name,title),
34      fEventNo(0),      fEventNo(0),
35      fVerbose(2),      fVerbose(2),
36      fStack(0),      fStack(0),
37      fdetector(0),      fdetector(0),
38      fPrimaryGenerator(0),      fPrimaryGenerator(0),
39      fRootManager("pamtest",kWrite)      fRootManager(filename,kWrite)
40  {  {
41  // Standard constructor  // Standard constructor
42    
43    // Create a user stack    // Create a user stack
44    fStack = new PamVMCStack(1000);    fStack = new PamVMCStack(1000);
45          
     
46    // Create a primary generator    // Create a primary generator
47    fPrimaryGenerator = new PamVMCPrimaryGenerator(fStack);    fPrimaryGenerator = new PamVMCPrimaryGenerator(fStack);
48    
49      //Create random object
50      frandom = new TRandom3(seed);
51      std::cout<<"!!! THE SEED of this MONTE CARLO is: "<<frandom->GetSeed()<<std::endl;
52    
53    fdetector = new PamVMCDetPamela();    fdetector = new PamVMCDetPamela();
54    
55    PamVMCFieldMgr::Instance()->LoadField();    PamVMCFieldMgr::Instance()->LoadField();
56  }    
57      TString fname=filename; fname+=".pam";
58    
59  PamVMCApplication::PamVMCApplication()    PamVMCRawMgr::Instance()-> CreateOutFile(fname.Data());
   : TVirtualMCApplication(),  
     fEventNo(0),  
     fVerbose(0),  
     fStack(0),  
     fdetector(0),  
     fPrimaryGenerator(0),  
     fRootManager()  
 {      
 // Default constructor  
60  }  }
61    
62    
63  PamVMCApplication::~PamVMCApplication()  PamVMCApplication::~PamVMCApplication()
64  {  {
65  // Destructor    // Destructor  
66          delete frandom;
67    delete fStack;    delete fStack;
68    delete fdetector;    delete fdetector;
69    delete fPrimaryGenerator;    delete fPrimaryGenerator;
# Line 87  void PamVMCApplication::InitMC(const cha Line 81  void PamVMCApplication::InitMC(const cha
81    gROOT->LoadMacro(setup);    gROOT->LoadMacro(setup);
82    gInterpreter->ProcessLine("Config()");    gInterpreter->ProcessLine("Config()");
83    gMC->SetStack(fStack);    gMC->SetStack(fStack);
84      gMC->SetRandom(frandom);
85      
86    std::cout<<"!!! BEFORE INIT GMC"<<std::endl;    std::cout<<"!!! BEFORE INIT GMC"<<std::endl;
87        
88    gMC->Init();    gMC->Init();
89    cout<<"INIT MC"<<endl;    cout<<"INIT MC"<<endl;
90    gMC->BuildPhysics();    gMC->BuildPhysics();
91    cout<<"PHYSICS BUILDED"<<endl;    cout<<"PHYSICS BUILDED"<<endl;
92      
93      #if ROOT_VERSION_CODE >= 333572    
94      gMC->SetMagField(PamVMCFieldMgr::Instance());
95      cout<<"Magnetic field setted"<<endl;
96    #endif
97    
98    fdetector->InitMC();    fdetector->InitMC();
99        
100    // fdetector->Print();    // fdetector->Print();
101        
102    PamVMCSDMgr::Instance()->Register();    PamVMCSDMgr::Instance()->Register();
103        
104    PamVMCDigMgr::Instance()->LoadCalib();    PamVMCDigMgr::Instance()->Initialize(gMC->GetRandom());
105    
106    PamVMCRawMgr::Instance()->WriteToFile();    PamVMCRawMgr::Instance()->WriteToFile();
107        
108      fPrimaryGenerator->SetRandom(gMC->GetRandom());
109    fPrimaryGenerator->Register();    fPrimaryGenerator->Register();
110        
111    std::cout<<"LIST OF ACTIVE SD'S:"<<std::endl;    std::cout<<"LIST OF ACTIVE SD'S:"<<std::endl;
# Line 125  void PamVMCApplication::RunMC(Int_t nofE Line 127  void PamVMCApplication::RunMC(Int_t nofE
127  void PamVMCApplication::AddIons(){  void PamVMCApplication::AddIons(){
128    
129    fVerbose.AddIons();    fVerbose.AddIons();
130    gMC->DefineIon("He4",2,4,1,0.);    //Arguments are:
131    gMC->DefineIon("Boron",5,10,1,0.);      //name
132    gMC->DefineIon("Carbon",6,12,1,0.);    //Z (atomic number)
133      //A (atomic mass)
134      //Q (charge eplus)
135      //exitation exitation energy [GeV] 0. if in ground state
136      //mass [GeV], if not specified, calculated approx
137    
138      gMC->DefineIon("He3",2,3,2,0.,2.808);
139      gMC->DefineIon("He4",2,4,2,0.,3.727);
140    
141      //gMC->DefineIon("He7",2,7,2,0.);
142      //gMC->DefineIon("Boron",5,10,5,0.);  
143      //gMC->DefineIon("Carbon",6,12,6,0.);
144  }  }
145    
146    
# Line 175  void PamVMCApplication::BeginEvent() Line 188  void PamVMCApplication::BeginEvent()
188  void PamVMCApplication::BeginPrimary()  void PamVMCApplication::BeginPrimary()
189  {      {    
190  // User actions at beginning of a primary track  // User actions at beginning of a primary track
191      fPrimaryGenerator->SetGood(kTRUE);
192    fVerbose.BeginPrimary();    fVerbose.BeginPrimary();
193  }  }
194    
# Line 185  void PamVMCApplication::PreTrack() Line 198  void PamVMCApplication::PreTrack()
198    
199  }  }
200    
201    
202    #define CAVITY_X 8.07
203    #define CAVITY_Y 6.57
204    #define ZCAVITY_MIN 27.399
205    #define ZCAVITY_MAX 71.059
206    
207    
208    Bool_t PamVMCApplication::IsInsideCavity(){
209      Double_t x,y,z;
210      gMC->TrackPosition(x,y,z);
211      if( (z<ZCAVITY_MIN) || (z>ZCAVITY_MAX)) return kTRUE;
212      if( (TMath::Abs(x) > CAVITY_X) || (TMath::Abs(y) > CAVITY_Y)) return kFALSE;
213      return kTRUE;
214    }
215    
216    
217  void PamVMCApplication::Stepping()  void PamVMCApplication::Stepping()
218  {      {    
219    if (fStack->GetCurrentTrack()->IsPrimary()){    if (fStack->GetCurrentTrack()->IsPrimary()){
220      PamVMCVolCross* tmp=(PamVMCVolCross*)PamVMCVolCrossMgr::Instance()->GetSD(gMC->CurrentVolName());      if(!IsInsideCavity()) fPrimaryGenerator->SetGood(kFALSE);
     if (tmp){  
       tmp->CrossVol();  
     }  
221    }    }
222      
223  // User actions at each step  // User actions at each step
224    fVerbose.Stepping();    fVerbose.Stepping();
225    PamVMCDetectorSD* temp=(PamVMCDetectorSD*) PamVMCSDMgr::Instance()->GetSD(gMC->CurrentVolName());    PamVMCDetectorSD* temp=(PamVMCDetectorSD*) PamVMCSDMgr::Instance()->GetSD(gMC->CurrentVolName());
# Line 200  void PamVMCApplication::Stepping() Line 227  void PamVMCApplication::Stepping()
227      fdstatus=INSIDE;      fdstatus=INSIDE;
228      if(gMC->IsTrackEntering()){ fdstatus=ENTERING; }      if(gMC->IsTrackEntering()){ fdstatus=ENTERING; }
229      if(gMC->IsTrackExiting() || gMC->IsTrackOut() || gMC->IsTrackStop() ) { fdstatus=EXITING;}      if(gMC->IsTrackExiting() || gMC->IsTrackOut() || gMC->IsTrackStop() ) { fdstatus=EXITING;}
230      temp->FillHit(fdstatus,gMC);          temp->FillHit(fdstatus,gMC,fStack->GetCurrentTrack()->IsPrimary());    
231    }    }
232        
233  }  }
# Line 214  void PamVMCApplication::PostTrack() Line 241  void PamVMCApplication::PostTrack()
241  void PamVMCApplication::FinishPrimary()  void PamVMCApplication::FinishPrimary()
242  {      {    
243  // User actions after finishing of a primary track  // User actions after finishing of a primary track
244    fPrimaryGenerator->SetGood(PamVMCVolCrossMgr::Instance()->IsTrackGood());    //fPrimaryGenerator->SetGood(PamVMCVolCrossMgr::Instance()->IsTrackGood());
245    PamVMCVolCrossMgr::Instance()->Reset();    //PamVMCVolCrossMgr::Instance()->Reset();
246    fVerbose.FinishPrimary();    fVerbose.FinishPrimary();
247  }  }
248    
# Line 257  void PamVMCApplication::FinishRun() Line 284  void PamVMCApplication::FinishRun()
284    
285  }  }
286    
287    #if ROOT_VERSION_CODE < 333572  
288  void PamVMCApplication::Field(const Double_t* x, Double_t* b) const  void PamVMCApplication::Field(const Double_t* x, Double_t* b) const
289  {  {
290    PamVMCFieldMgr::Instance()->Field(x,b);    PamVMCFieldMgr::Instance()->Field(x,b);
291  }  }
292    #endif

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.23