musrIBackwardHit.cc

Go to the documentation of this file.
00001 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00002 
00003 #include "musrIBackwardHit.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>
00011 #include "G4ios.hh"
00012 #include "G4MagneticField.hh"
00013 #include "G4FieldManager.hh"
00014 #include "G4TransportationManager.hh"
00015 #include <iomanip.h>
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<musrIBackwardHit> musrIBackwardHitAllocator;
00025 
00026 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00027 
00028 musrIBackwardHit::musrIBackwardHit() {}
00029 
00030 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00031 
00032 musrIBackwardHit::~musrIBackwardHit() {}
00033 
00034 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00035 G4int musrIBackwardHit::eventIDoldIB = -1;
00036 G4int musrIBackwardHit::NIB = 0;
00037 G4int musrIBackwardHit::BMultihit = 0;
00038 G4int musrIBackwardHit::runIDoldIB = -1;
00039 G4int musrIBackwardHit::IBchamberNbold = -1;
00040 
00041 musrIBackwardHit::musrIBackwardHit(const musrIBackwardHit& 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   IBchamberNb = right.IBchamberNb;
00052   globaltime  = right.globaltime;
00053 
00054 }
00055 
00056 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00057 
00058 const musrIBackwardHit& musrIBackwardHit::operator=(const musrIBackwardHit& 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   IBchamberNb = right.IBchamberNb;
00068   globaltime = right.globaltime;
00069 
00070   return *this;
00071 }
00072 
00073 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00074 
00075 G4int musrIBackwardHit::operator==(const musrIBackwardHit& right) const
00076 {
00077   return (this==&right) ? 1 : 0;
00078 }
00079 
00080 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00081 
00082 void musrIBackwardHit::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 musrIBackwardHit::Print()
00100 {
00101 
00102   G4RunManager* fRunManager = G4RunManager::GetRunManager();
00103   G4int eventID = fRunManager->GetCurrentEvent()->GetEventID();
00104   G4int runID   = fRunManager->GetCurrentRun()->GetRunID();
00105   BMultihitSwitch=0;
00106         if (runID != runIDoldIB)
00107           {
00108             NIB=0;
00109             BMultihit = 0;
00110             eventIDoldIB = -1;
00111             IBchamberNbold = -1;
00112           }
00113 
00114     if (particle_name== "e+" and (eventIDoldIB != eventID or IBchamberNbold != IBchamberNb))
00115       {
00116 
00117 
00118 
00119          if (eventIDoldIB == eventID)
00120            {
00121              BMultihit++;
00122              BMultihitSwitch=1;
00123 
00124            }
00125          NIB++;
00126 
00127         G4FieldManager *fMgr=G4TransportationManager::GetTransportationManager()->GetFieldManager();
00128 
00129 
00130           point[0]=0.;
00131           point[1]=0.;
00132           point[2]=0.;
00133 
00134           B[2]=0.0;
00135               
00136 
00137       if(!fMgr->DoesFieldChangeEnergy())//then we have a magnetic field
00138         {
00139           mfield = fMgr->GetDetectorField();
00140           mfield->GetFieldValue(point,B);
00141           B[0]=B[0]*1000;
00142           B[1]=B[1]*1000;
00143           B[2]=B[2]*1000;
00144 }
00145 
00146       //      G4cout << "  Segment: " << IBchamberNb << G4endl;
00147       //      G4cout <<"Position " << pos.x()/cm<<" "<<pos.y()/cm <<" "<< pos.z()/cm <<G4endl;
00148 
00149       //         G4cout << "Field is "<< B[2]<<G4endl;
00150 
00151   ofstream posfile1;
00152   posfile1.open ("ibackward.dat", ios::out | ios::app);
00153   posfile1 << fabs(B[2]) <<" "<< pos.x()/cm<<" "<<pos.y()/cm <<" "<< pos.z()/cm  
00154            << " "  << globaltime/s << " "<< IBchamberNb 
00155            << " " << BMultihitSwitch 
00156            << G4endl;
00157   posfile1.close();
00158 
00159       }
00160 
00161   eventIDoldIB=eventID;
00162   runIDoldIB = runID;
00163   IBchamberNbold = IBchamberNb;  
00164 
00165 
00166 }
00167 
00168 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00169 

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