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 // ==================================================================== 27 /// \brief Implementation of the H02MuonHit cl << 28 // 27 // >> 28 // H02MuonHit.cc >> 29 // $Id: H02MuonHit.cc,v 1.5 2006-06-29 17:10:54 gunter Exp $ 29 // 30 // >> 31 // ==================================================================== 30 #include "H02MuonHit.hh" 32 #include "H02MuonHit.hh" 31 << 33 #include "G4VVisManager.hh" 32 #include "G4Circle.hh" 34 #include "G4Circle.hh" 33 #include "G4Colour.hh" 35 #include "G4Colour.hh" 34 #include "G4SystemOfUnits.hh" << 35 #include "G4VVisManager.hh" << 36 #include "G4VisAttributes.hh" 36 #include "G4VisAttributes.hh" 37 << 38 #include <iomanip> 37 #include <iomanip> 39 38 40 G4Allocator<H02MuonHit> H02MuonHitAllocator; 39 G4Allocator<H02MuonHit> H02MuonHitAllocator; 41 40 42 //....oooOO0OOooo........oooOO0OOooo........oo << 41 //////////////////////// 43 H02MuonHit::H02MuonHit() : G4VHit(), fModuleID << 42 H02MuonHit::H02MuonHit() >> 43 : moduleID(-1) >> 44 //////////////////////// >> 45 { >> 46 } 44 47 45 //....oooOO0OOooo........oooOO0OOooo........oo << 48 ///////////////////////////////////////////////////////////// 46 H02MuonHit::H02MuonHit(G4int imod, G4String an << 49 H02MuonHit::H02MuonHit(G4int imod, G4String aname, 47 const G4ThreeVector& xy << 50 const G4ThreeVector& pxyz, 48 : fModuleID(imod), fPname(aname), fMomentum( << 51 const G4ThreeVector& xyz, G4double atof) 49 {} << 52 : moduleID(imod), pname(aname), momentum(pxyz), >> 53 position(xyz), tof(atof) >> 54 ///////////////////////////////////////////////////////////// >> 55 { >> 56 } 50 57 51 //....oooOO0OOooo........oooOO0OOooo........oo << 58 //////////////////////// 52 H02MuonHit::~H02MuonHit() {} << 59 H02MuonHit::~H02MuonHit() >> 60 //////////////////////// >> 61 { >> 62 } 53 63 54 //....oooOO0OOooo........oooOO0OOooo........oo << 64 ///////////////////////////////////////////// 55 H02MuonHit::H02MuonHit(const H02MuonHit& right << 65 H02MuonHit::H02MuonHit(const H02MuonHit& right) >> 66 ///////////////////////////////////////////// >> 67 : G4VHit() 56 { 68 { 57 *this = right; << 69 *this= right; 58 } 70 } 59 71 60 //....oooOO0OOooo........oooOO0OOooo........oo << 72 //////////////////////////////////////////////////////////////// 61 const H02MuonHit& H02MuonHit::operator=(const 73 const H02MuonHit& H02MuonHit::operator=(const H02MuonHit& right) >> 74 //////////////////////////////////////////////////////////////// 62 { 75 { 63 fModuleID = right.fModuleID; << 76 moduleID= right.moduleID; 64 fPname = right.fPname; << 77 pname= right.pname; 65 fMomentum = right.fMomentum; << 78 momentum= right.momentum; 66 fPosition = right.fPosition; << 79 position= right.position; 67 fTof = right.fTof; << 80 tof= right.tof; 68 81 69 return *this; 82 return *this; 70 } 83 } 71 84 72 //....oooOO0OOooo........oooOO0OOooo........oo << 85 ///////////////////////////////////////////////////////// 73 G4bool H02MuonHit::operator==(const H02MuonHit << 86 G4int H02MuonHit::operator==(const H02MuonHit& right) const >> 87 ///////////////////////////////////////////////////////// 74 { 88 { 75 return (this == &right) ? true : false; << 89 return (this==&right) ? 1 : 0; 76 } 90 } 77 91 78 //....oooOO0OOooo........oooOO0OOooo........oo << 92 /////////////////////// 79 void H02MuonHit::Draw() 93 void H02MuonHit::Draw() >> 94 /////////////////////// 80 { 95 { 81 const G4double pt_min = 20. * GeV; << 96 const G4double pt_min=20.*GeV; 82 97 83 G4VVisManager* pVVisManager = G4VVisManager: << 98 G4VVisManager* pVVisManager= G4VVisManager::GetConcreteInstance(); 84 if (pVVisManager) { << 99 if(pVVisManager) { 85 G4Circle circle(fPosition); << 100 G4Circle circle(position); 86 circle.SetScreenSize(5.); 101 circle.SetScreenSize(5.); 87 circle.SetFillStyle(G4Circle::filled); 102 circle.SetFillStyle(G4Circle::filled); 88 103 89 G4Color color, goodColor(1., 0., 0.), badC << 104 G4Color color, goodColor(1.,0.,0.), badColor(0.,0.,1.); 90 if (fMomentum.perp() > pt_min) << 105 if(momentum.perp()>pt_min) color=goodColor; 91 color = goodColor; << 106 else color=badColor; 92 else << 93 color = badColor; << 94 107 95 G4VisAttributes attribs(color); 108 G4VisAttributes attribs(color); 96 circle.SetVisAttributes(attribs); 109 circle.SetVisAttributes(attribs); 97 pVVisManager->Draw(circle); 110 pVVisManager->Draw(circle); 98 } 111 } 99 } 112 } 100 113 101 //....oooOO0OOooo........oooOO0OOooo........oo << 114 //////////////////////// 102 void H02MuonHit::Print() 115 void H02MuonHit::Print() 103 { << 116 //////////////////////// 104 G4int id = fModuleID; << 117 { 105 G4String tag = "B"; << 118 G4int id= moduleID; 106 if (fModuleID >= 10) { << 119 G4String tag="B"; 107 id -= 10; << 120 if(moduleID >=10) { 108 tag = "E"; << 121 id -=10; >> 122 tag="E"; 109 } 123 } 110 G4cout << tag << id << " :" << std::setw(12) << 124 G4cout << tag << id << " :" << std::setw(12) << pname.c_str() 111 << fMomentum.perp() / GeV << " : TOF= << 125 << " : pT=" << std::setprecision(3) << momentum.perp()/GeV 112 << " : x=" << std::setprecision(3) << << 126 << " : TOF=" << std::setprecision(3) << tof/ns >> 127 << " : x=" << std::setprecision(3) << position*(1./m) >> 128 << G4endl; 113 } 129 } 114 130