source: trunk/source/digits_hits/utils/src/G4VScoreColorMap.cc @ 1337

Last change on this file since 1337 was 1337, checked in by garnier, 14 years ago

tag geant4.9.4 beta 1 + modifs locales

File size: 4.2 KB
Line 
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//
27// $Id: G4VScoreColorMap.cc,v 1.4 2009/05/04 15:57:33 akimura Exp $
28// GEANT4 tag $Name: geant4-09-04-beta-01 $
29//
30
31#include "G4VScoreColorMap.hh"
32#include <string>
33#include <sstream>
34#include <iomanip>
35
36#include "G4VVisManager.hh"
37#include "G4VisAttributes.hh"
38#include "G4Text.hh"
39#include "G4Circle.hh"
40#include "G4Polyline.hh"
41#include "G4Colour.hh"
42
43G4VScoreColorMap::G4VScoreColorMap(G4String mName)
44:fName(mName),ifFloat(true),fMinVal(0.),fMaxVal(DBL_MAX)
45{;}
46
47G4VScoreColorMap::~G4VScoreColorMap()
48{;}
49
50void G4VScoreColorMap::DrawColorChart(G4int _nPoint) {
51
52  fVisManager = G4VVisManager::GetConcreteInstance();
53  if(!fVisManager) {
54    G4cerr << "G4VScoringMesh::DrawColorChart(): no visualization system" << G4endl;
55    return;
56  }
57
58  DrawColorChartBar(_nPoint);
59  DrawColorChartText(_nPoint);
60}
61
62void G4VScoreColorMap::DrawColorChartBar(G4int _nPoint) {
63
64  G4double min = this->GetMin();
65  G4double max = this->GetMax();
66  G4double smin = -0.89, smax = smin + 0.05*(_nPoint)*0.83, step=0.001;
67  G4double c[4];
68  for(G4double y = smin; y < smax; y+=step) {
69    G4double ra = (y-smin)/(smax-smin), rb = 1.-ra;
70    G4Polyline line;
71    line.push_back(G4Point3D(-0.96, y, 0.));
72    line.push_back(G4Point3D(-0.91, y, 0.));
73    this->GetMapColor((ra*max+rb*min)/(ra+rb), c);
74    G4Colour col(c[0], c[1], c[2]);
75    G4VisAttributes att(col);
76    line.SetVisAttributes(&att);
77    fVisManager->Draw2D(line);
78  }
79
80}
81void G4VScoreColorMap::DrawColorChartText(G4int _nPoint) {
82  G4double min = this->GetMin();
83  G4double max = this->GetMax();
84  G4double c[4];
85  G4Colour black(0., 0., 0.);
86  for(int n = 0; n < _nPoint; n++) {
87    G4double a = n/(_nPoint-1.), b = 1.-a;
88    G4double v = (a*max + b*min)/(a+b);
89    // background color
90    for(int l = 0; l < 21; l++) {
91      G4Polyline line;
92      line.push_back(G4Point3D(-0.908, -0.905+0.05*n+0.002*l, 0.));
93      line.push_back(G4Point3D(-0.705, -0.905+0.05*n+0.002*l, 0.));
94      G4VisAttributes attblack(black);
95      line.SetVisAttributes(&attblack);
96      fVisManager->Draw2D(line);
97    }
98    // text
99    //char cstring[80];
100    //std::sprintf(cstring, "%8.2e", v);
101    //G4String value(cstring);
102    std::ostringstream oss;
103    oss << std::setw(8) << std::setprecision(1) << std::scientific << v;
104    std::string str = oss.str();
105    G4String value(str.c_str());
106
107    G4Text text(value, G4Point3D(-0.9, -0.9+0.05*n, 0));
108    G4double size = 12.;
109    text.SetScreenSize(size);
110    this->GetMapColor(v, c);
111    G4Colour color(c[0], c[1], c[2]);
112    G4VisAttributes att(color);
113    text.SetVisAttributes(&att);
114
115    fVisManager->Draw2D(text);
116  }
117}
Note: See TracBrowser for help on using the repository browser.