Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 /// \file eventgenerator/HepMC/HepMCEx02/src/H 27 /// \brief Implementation of the H02MuonHit cl 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........oo 43 H02MuonHit::H02MuonHit() : G4VHit(), fModuleID 44 45 //....oooOO0OOooo........oooOO0OOooo........oo 46 H02MuonHit::H02MuonHit(G4int imod, G4String an 47 const G4ThreeVector& xy 48 : fModuleID(imod), fPname(aname), fMomentum( 49 {} 50 51 //....oooOO0OOooo........oooOO0OOooo........oo 52 H02MuonHit::~H02MuonHit() {} 53 54 //....oooOO0OOooo........oooOO0OOooo........oo 55 H02MuonHit::H02MuonHit(const H02MuonHit& right 56 { 57 *this = right; 58 } 59 60 //....oooOO0OOooo........oooOO0OOooo........oo 61 const H02MuonHit& H02MuonHit::operator=(const 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........oo 73 G4bool H02MuonHit::operator==(const H02MuonHit 74 { 75 return (this == &right) ? true : false; 76 } 77 78 //....oooOO0OOooo........oooOO0OOooo........oo 79 void H02MuonHit::Draw() 80 { 81 const G4double pt_min = 20. * GeV; 82 83 G4VVisManager* pVVisManager = G4VVisManager: 84 if (pVVisManager) { 85 G4Circle circle(fPosition); 86 circle.SetScreenSize(5.); 87 circle.SetFillStyle(G4Circle::filled); 88 89 G4Color color, goodColor(1., 0., 0.), badC 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........oo 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) 111 << fMomentum.perp() / GeV << " : TOF= 112 << " : x=" << std::setprecision(3) << 113 } 114