Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 /// \file eventgenerator/HepMC/HepMCEx02/src/H 26 /// \file eventgenerator/HepMC/HepMCEx02/src/H02MuonHit.cc 27 /// \brief Implementation of the H02MuonHit cl 27 /// \brief Implementation of the H02MuonHit class 28 // 28 // 29 // 29 // 30 #include "H02MuonHit.hh" << 30 #include <iomanip> 31 << 32 #include "G4Circle.hh" 31 #include "G4Circle.hh" 33 #include "G4Colour.hh" 32 #include "G4Colour.hh" 34 #include "G4SystemOfUnits.hh" 33 #include "G4SystemOfUnits.hh" 35 #include "G4VVisManager.hh" << 36 #include "G4VisAttributes.hh" 34 #include "G4VisAttributes.hh" 37 << 35 #include "G4VVisManager.hh" 38 #include <iomanip> << 36 #include "H02MuonHit.hh" 39 37 40 G4Allocator<H02MuonHit> H02MuonHitAllocator; 38 G4Allocator<H02MuonHit> H02MuonHitAllocator; 41 39 42 //....oooOO0OOooo........oooOO0OOooo........oo 40 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 43 H02MuonHit::H02MuonHit() : G4VHit(), fModuleID << 41 H02MuonHit::H02MuonHit() >> 42 : G4VHit(), >> 43 fModuleID(-1), fPname(), fMomentum(), fPosition(), fTof(0.) >> 44 { >> 45 } 44 46 45 //....oooOO0OOooo........oooOO0OOooo........oo 47 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 46 H02MuonHit::H02MuonHit(G4int imod, G4String an << 48 H02MuonHit::H02MuonHit(G4int imod, G4String aname, 47 const G4ThreeVector& xy << 49 const G4ThreeVector& pxyz, 48 : fModuleID(imod), fPname(aname), fMomentum( << 50 const G4ThreeVector& xyz, G4double atof) 49 {} << 51 : fModuleID(imod), fPname(aname), fMomentum(pxyz), >> 52 fPosition(xyz), fTof(atof) >> 53 { >> 54 } 50 55 51 //....oooOO0OOooo........oooOO0OOooo........oo 56 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 52 H02MuonHit::~H02MuonHit() {} << 57 H02MuonHit::~H02MuonHit() >> 58 { >> 59 } 53 60 54 //....oooOO0OOooo........oooOO0OOooo........oo 61 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 55 H02MuonHit::H02MuonHit(const H02MuonHit& right << 62 H02MuonHit::H02MuonHit(const H02MuonHit& right) >> 63 : G4VHit() 56 { 64 { 57 *this = right; << 65 *this= right; 58 } 66 } 59 67 60 //....oooOO0OOooo........oooOO0OOooo........oo 68 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 61 const H02MuonHit& H02MuonHit::operator=(const 69 const H02MuonHit& H02MuonHit::operator=(const H02MuonHit& right) 62 { 70 { 63 fModuleID = right.fModuleID; << 71 fModuleID= right.fModuleID; 64 fPname = right.fPname; << 72 fPname= right.fPname; 65 fMomentum = right.fMomentum; << 73 fMomentum= right.fMomentum; 66 fPosition = right.fPosition; << 74 fPosition= right.fPosition; 67 fTof = right.fTof; << 75 fTof= right.fTof; 68 76 69 return *this; 77 return *this; 70 } 78 } 71 79 72 //....oooOO0OOooo........oooOO0OOooo........oo 80 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 73 G4bool H02MuonHit::operator==(const H02MuonHit << 81 G4int H02MuonHit::operator==(const H02MuonHit& right) const 74 { 82 { 75 return (this == &right) ? true : false; << 83 return (this==&right) ? 1 : 0; 76 } 84 } 77 85 78 //....oooOO0OOooo........oooOO0OOooo........oo 86 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 79 void H02MuonHit::Draw() 87 void H02MuonHit::Draw() 80 { 88 { 81 const G4double pt_min = 20. * GeV; << 89 const G4double pt_min=20.*GeV; 82 90 83 G4VVisManager* pVVisManager = G4VVisManager: << 91 G4VVisManager* pVVisManager= G4VVisManager::GetConcreteInstance(); 84 if (pVVisManager) { << 92 if(pVVisManager) { 85 G4Circle circle(fPosition); 93 G4Circle circle(fPosition); 86 circle.SetScreenSize(5.); 94 circle.SetScreenSize(5.); 87 circle.SetFillStyle(G4Circle::filled); 95 circle.SetFillStyle(G4Circle::filled); 88 96 89 G4Color color, goodColor(1., 0., 0.), badC << 97 G4Color color, goodColor(1.,0.,0.), badColor(0.,0.,1.); 90 if (fMomentum.perp() > pt_min) << 98 if(fMomentum.perp()>pt_min) color=goodColor; 91 color = goodColor; << 99 else color=badColor; 92 else << 93 color = badColor; << 94 100 95 G4VisAttributes attribs(color); 101 G4VisAttributes attribs(color); 96 circle.SetVisAttributes(attribs); 102 circle.SetVisAttributes(attribs); 97 pVVisManager->Draw(circle); 103 pVVisManager->Draw(circle); 98 } 104 } 99 } 105 } 100 106 101 //....oooOO0OOooo........oooOO0OOooo........oo 107 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 102 void H02MuonHit::Print() 108 void H02MuonHit::Print() 103 { 109 { 104 G4int id = fModuleID; << 110 G4int id= fModuleID; 105 G4String tag = "B"; << 111 G4String tag="B"; 106 if (fModuleID >= 10) { << 112 if(fModuleID >=10) { 107 id -= 10; << 113 id -=10; 108 tag = "E"; << 114 tag="E"; 109 } 115 } 110 G4cout << tag << id << " :" << std::setw(12) << 116 G4cout << tag << id << " :" << std::setw(12) << fPname.c_str() 111 << fMomentum.perp() / GeV << " : TOF= << 117 << " : pT=" << std::setprecision(3) << fMomentum.perp()/GeV 112 << " : x=" << std::setprecision(3) << << 118 << " : TOF=" << std::setprecision(3) << fTof/ns >> 119 << " : x=" << std::setprecision(3) << fPosition*(1./m) >> 120 << G4endl; 113 } 121 } 114 122