/[PAMELA software]/PamVMC/examples/run_sim_g4.C
ViewVC logotype

Annotation of /PamVMC/examples/run_sim_g4.C

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (hide annotations) (download)
Fri Jun 12 22:18:31 2009 UTC (15 years, 5 months ago) by pam-rm2
Branch: MAIN
CVS Tags: v1r0, HEAD
Changes since 1.1: +1 -1 lines
File MIME type: text/plain
*** empty log message ***

1 pam-rm2 1.1 // $Id: run_g4.C,v 1.0 2007/06/01
2     //
3     // Macro for running G4PAM_VMC with Geant4.
4    
5     void PamG4Libs_granular();
6    
7     #include <PamLevel2.h>
8     #include <PamG4Libs.h>
9     #include <PamVMCApplication.h>
10     #include <G4ApplicationState.hh>
11     #include <TG4ApplicationState.h>
12     #include <TGeant4.h>
13     #include <PrimaryInfo.h>
14    
15    
16     void run_sim_g4(const TString& configMacro = "g4Config.C", const TString& primfile = "prim.root") {
17    
18     cout<<"PRIMFILE: "<<primfile<<endl;
19    
20     TFile rfin(primfile,"read");
21     TTree * primtree = (TTree*)rfin.Get("primaries");
22     if(!primtree) cout<<"ERROR: tree 'primaries' with primaries kinematics not found!"<<endl;
23     PrimaryInfo *p = 0;
24     primtree->SetBranchAddress("PRIM", &p);
25    
26     PamG4Libs();
27    
28    
29    
30     // Load this example libraries
31    
32     TString PAM_VMC=gSystem->Getenv("PAM_VMC");
33     TString PLAT=gSystem->Getenv("PLATFORM");
34    
35     // MC application
36     TString outname=".";
37     outname+="/";
38     outname+=primfile;
39     outname.Replace(0,outname.Index("prim_",0),"");
40     outname.Replace(outname.Index(".root",0),5,"_sim");
41    
42     cout<<"OUTNAME="<<outname<<endl;
43    
44     PamVMCApplication* appl
45     = new PamVMCApplication("PAMG4_VMC", "PAMELA GEANT4 VMC application", outname);
46    
47    
48     // Initialize MC
49 pam-rm2 1.2 TString G4ConfMacro=PAM_VMC+"/config/"+configMacro;
50 pam-rm2 1.1 appl->InitMC(G4ConfMacro);
51    
52     cout<<"MACRO READED"<<endl;
53    
54    
55    
56     ((TGeant4*)gMC)->SetMaxNStep(50000);
57    
58     Int_t nevents = primtree->GetEntries();
59     ;
60     //MAIN LOOP
61     Double_t x,y,z,theta,phi,momentum;
62     Int_t pdg;
63     for(Int_t i = 0; i<nevents; i++){
64     rfin.cd();
65     primtree->GetEntry(i);
66     x = p->X0;
67     y = p->Y0;
68     z = p->Z0;
69     theta = p->Theta;
70     phi = p->Phi;
71     pdg = p->PDG;
72     momentum = p->P0;
73    
74     cout<<"EVENT: "<<i<<endl;
75     cout<<"PDG:"<<pdg<<endl
76     <<"X0: "<<x<<" (cm)"<<endl
77     <<"Y0: "<<y<<" (cm)"<<endl
78     <<"Z0: "<<z<<" (cm)"<<endl
79     <<"Theta:"<<theta*180./TMath::Pi()<<" (deg)"<<endl
80     <<"Phi:"<<phi*180./TMath::Pi()<<" (deg)"<<endl
81     <<"Momentum: "<<momentum<<" (GV)"<<endl;
82    
83     appl->GetPrimaryGenerator()->SetParticle(pdg);
84     appl->GetPrimaryGenerator()->SetDirection(theta,phi);
85     appl->GetPrimaryGenerator()->SetMomentum(momentum);
86     appl->GetPrimaryGenerator()->SetPosition(x,y,z);
87    
88     appl->RunMC(1);
89    
90     }
91     appl->FinishRun();
92     // delete appl;
93     }

  ViewVC Help
Powered by ViewVC 1.1.23