musrIForwardHit.cc

Go to the documentation of this file.
00001 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00002 
00003 #include "musrIForwardHit.hh"
00004 #include "G4UnitsTable.hh"
00005 #include "G4VVisManager.hh"
00006 #include "G4Circle.hh"
00007 #include "G4Colour.hh"
00008 #include "G4VisAttributes.hh"
00009 #include <fstream.h>
00010 #include <iostream.h>
00011 #include "G4ios.hh"
00012 #include "G4MagneticField.hh"
00013 #include "G4FieldManager.hh"
00014 #include "G4TransportationManager.hh"
00015 #include <iomanip>
00016 #include "globals.hh"
00017 #include "G4Transform3D.hh"
00018 #include "G4ProcessManager.hh"
00019 #include "G4Track.hh"
00020 #include "G4ThreeVector.hh"
00021 #include "G4RunManager.hh"
00022 #include "G4Run.hh"
00023 
00024 G4Allocator<musrIForwardHit> musrIForwardHitAllocator;
00025 
00026 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00027 
00028 musrIForwardHit::musrIForwardHit() {}
00029 
00030 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00031 
00032 musrIForwardHit::~musrIForwardHit() {}
00033 
00034 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00035 G4int musrIForwardHit::eventIDoldIF = -1;
00036 G4int musrIForwardHit::NIF = 0;
00037 G4int musrIForwardHit::FMultihit = 0;
00038 G4int musrIForwardHit::runIDoldIF = -1;
00039 G4int musrIForwardHit::IFchamberNbold = -1;
00040 
00041 musrIForwardHit::musrIForwardHit(const musrIForwardHit& right)
00042   : G4VHit()
00043 {
00044 
00045   trackID   = right.trackID;
00046   particle_name = right.particle_name;
00047   edep      = right.edep;
00048   pos       = right.pos;
00049   pol       = right.pol;
00050   logicalvolume = right.logicalvolume;
00051   IFchamberNb = right.IFchamberNb;
00052   globaltime  = right.globaltime;
00053 
00054 }
00055 
00056 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00057 
00058 const musrIForwardHit& musrIForwardHit::operator=(const musrIForwardHit& right)
00059 {
00060 
00061   trackID   = right.trackID;
00062   particle_name = right.particle_name;
00063   edep      = right.edep;
00064   pos       = right.pos;
00065   pol       = right.pol;
00066   logicalvolume=right.logicalvolume;
00067   IFchamberNb = right.IFchamberNb;
00068   globaltime = right.globaltime;
00069 
00070   return *this;
00071 }
00072 
00073 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00074 
00075 G4int musrIForwardHit::operator==(const musrIForwardHit& right) const
00076 {
00077   return (this==&right) ? 1 : 0;
00078 }
00079 
00080 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00081 
00082 void musrIForwardHit::Draw()
00083 {
00084   G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance();
00085   if(pVVisManager)
00086   {
00087     G4Circle circle(pos);
00088     circle.SetScreenSize(0.04);
00089     circle.SetFillStyle(G4Circle::filled);
00090     G4Colour colour(1.,0.,0.);
00091     G4VisAttributes attribs(colour);
00092     circle.SetVisAttributes(attribs);
00093     pVVisManager->Draw(circle);
00094   }
00095 }
00096 
00097 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00098 
00099 void musrIForwardHit::Print()
00100 {
00101 
00102   G4RunManager* fRunManager = G4RunManager::GetRunManager();
00103   G4int eventID = fRunManager->GetCurrentEvent()->GetEventID();
00104   G4int runID   = fRunManager->GetCurrentRun()->GetRunID();
00105   FMultihitSwitch=0;
00106 
00107 
00108 
00109         if (runID != runIDoldIF)
00110           {
00111             NIF=0;
00112             FMultihit = 0;
00113             eventIDoldIF = -1;
00114             IFchamberNbold = -1;
00115           }
00116 
00117     if (particle_name== "e+" and (eventIDoldIF != eventID or IFchamberNbold != IFchamberNb))
00118 
00119       {
00120 
00121 
00122 
00123          if (eventIDoldIF == eventID)
00124            {
00125              FMultihitSwitch=1;
00126              FMultihit++;
00127              //        G4cout << "Forward Multiple Hit!, No = "<< FMultihit<<G4endl;
00128            }
00129 
00130          NIF++;
00131          //      G4cout << "NIF is "<< NIF<<G4endl;
00132          //      G4cout << "(Forward) eventID is "<< eventID<<G4endl;
00133 
00134 
00135 
00136         G4FieldManager *fMgr=G4TransportationManager::GetTransportationManager()->GetFieldManager();
00137 
00138 
00139           point[0]=0.;
00140           point[1]=0.;
00141           point[2]=0.;
00142 
00143           B[2]=0.0;
00144               
00145 
00146       if(!fMgr->DoesFieldChangeEnergy())//then we have a magnetic field
00147         {
00148           mfield = fMgr->GetDetectorField();
00149           mfield->GetFieldValue(point,B);
00150           B[0]=B[0]*1000;
00151           B[1]=B[1]*1000;
00152           B[2]=B[2]*1000;
00153 }
00154 
00155       //      G4cout << "  Segment: " << IFchamberNb << G4endl;
00156       //      G4cout <<"Position " << pos.x()/cm<<" "<<pos.y()/cm <<" "<< pos.z()/cm <<G4endl;
00157 
00158       //         G4cout << "Field is "<< B[2]<<G4endl;
00159 
00160   ofstream posfile2;
00161   posfile2.open ("iforward.dat", ios::out | ios::app);
00162   posfile2 << fabs(B[2]) <<" "<< pos.x()/cm<<" "<<pos.y()/cm <<" "<< pos.z()/cm  
00163            << " "  << globaltime/s <<" "<< IFchamberNb 
00164            << " "<< FMultihitSwitch
00165            << G4endl;
00166   posfile2.close();
00167 
00168       }
00169 
00170   eventIDoldIF=eventID;
00171   runIDoldIF = runID;
00172   IFchamberNbold = IFchamberNb;  
00173 
00174 
00175 
00176 }
00177 
00178 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00179 

Generated on Mon Mar 27 12:19:54 2006 for MUSR by  doxygen 1.4.6