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