CMS 3D CMS Logo

IgSoLegoTowers Class Reference

#include <Iguana/Inventor/interface/IgSoLegoTowers.h>

Inheritance diagram for IgSoLegoTowers:

IgSoShapeKit

List of all members.

Public Member Functions

 IgSoLegoTowers (void)

Static Public Member Functions

static void initClass (void)

Public Attributes

SoSFFloat heightScale

Protected Member Functions

virtual void refresh (void)

Private Member Functions

 SO_KIT_CATALOG_ENTRY_HEADER (legos)
 SO_KIT_CATALOG_ENTRY_HEADER (minorGridSep)
 SO_KIT_CATALOG_ENTRY_HEADER (grid)
 SO_KIT_CATALOG_ENTRY_HEADER (labelZ)
 SO_KIT_CATALOG_ENTRY_HEADER (labelX)
 SO_KIT_CATALOG_ENTRY_HEADER (labelScale)
 SO_KIT_CATALOG_ENTRY_HEADER (labels)
 SO_KIT_CATALOG_ENTRY_HEADER (etaLabels)
 SO_KIT_CATALOG_ENTRY_HEADER (phiLabels)
 SO_KIT_CATALOG_ENTRY_HEADER (font)
 SO_KIT_HEADER (IgSoLegoTowers)


Detailed Description

Definition at line 16 of file IgSoLegoTowers.h.


Constructor & Destructor Documentation

IgSoLegoTowers::IgSoLegoTowers ( void   ) 

Definition at line 28 of file IgSoLegoTowers.cc.

References f, FALSE, heightScale, hlt_scaler_cfg::labels, IgSoShapeKit::setUpConnections(), and TRUE.

00029 {
00030     SO_KIT_CONSTRUCTOR (IgSoLegoTowers);
00031     SO_KIT_ADD_FIELD (heightScale,      (1.0f));
00032 
00033     SO_KIT_ADD_CATALOG_ENTRY (font,             SoFont,         FALSE, separator,\x0, TRUE);
00034     SO_KIT_ADD_CATALOG_ENTRY (phiLabels,        SoSeparator,    FALSE, separator,\x0, TRUE);
00035     SO_KIT_ADD_CATALOG_ENTRY (etaLabels,        SoSeparator,    FALSE, separator,\x0, TRUE);
00036     SO_KIT_ADD_CATALOG_ENTRY (labels,           SoSeparator,    FALSE, separator,\x0, TRUE);
00037     SO_KIT_ADD_CATALOG_ENTRY (labelScale,       SoSeparator,    FALSE, labels,\x0, TRUE);
00038     SO_KIT_ADD_CATALOG_ENTRY (labelX,           SoSeparator,    FALSE, separator,\x0, TRUE);
00039     SO_KIT_ADD_CATALOG_ENTRY (labelZ,           SoSeparator,    FALSE, separator,\x0, TRUE);
00040     SO_KIT_ADD_CATALOG_ENTRY (grid,             SoIndexedLineSet, FALSE, separator,\x0, TRUE);
00041     SO_KIT_ADD_CATALOG_ENTRY (minorGridSep,     SoSeparator,    FALSE, separator,\x0, TRUE);
00042     SO_KIT_ADD_CATALOG_ENTRY (legos,            SoSeparator,    FALSE, separator,\x0, TRUE);
00043     SO_KIT_INIT_INSTANCE ();
00044     setUpConnections (true, true);
00045 }


Member Function Documentation

void IgSoLegoTowers::initClass ( void   )  [static]

Reimplemented from IgSoShapeKit.

Definition at line 25 of file IgSoLegoTowers.cc.

Referenced by initNodes(), and initShapes().

00026 { SO_KIT_INIT_CLASS (IgSoLegoTowers, IgSoShapeKit, "IgSoShapeKit"); }

void IgSoLegoTowers::refresh ( void   )  [protected, virtual]

Reimplemented from IgSoShapeKit.

Definition at line 48 of file IgSoLegoTowers.cc.

References funct::abs(), heightScale, int, maxEta, prof2calltree::ticks, x, and z.

00049 {
00050     static const float LABEL_OFFSET = 0.3F;
00051     float maxEta = 5.0F;
00052 
00053     SoFont              *font           = new SoFont;
00054     font->name.setValue ("Times-Roman");
00055     font->size.setValue (14.0);
00056     
00057     SoSeparator         *phiLabels      = new SoSeparator;
00058     SoSeparator         *etaLabels      = new SoSeparator;
00059     SoIndexedLineSet    *grid           = new SoIndexedLineSet;
00060     SoSeparator         *minorGridSep   = new SoSeparator;
00061     SoSeparator         *labelScale     = new SoSeparator;
00062     SoFont              *labelScaleFont = new SoFont;
00063     labelScaleFont->name.setValue ("Times-Roman");
00064     labelScaleFont->size.setValue (18.0);
00065    
00066     SoSeparator         *labelX         = new SoSeparator;
00067     SoSeparator         *labelZ         = new SoSeparator;
00068     SoTranslation       *labelScaleOffset = new SoTranslation;
00069     SoText2             *labelScaleText = new SoText2;
00070     SoTranslation       *labelXOffset   = new SoTranslation;
00071     SoText2             *labelXText     = new SoText2;
00072     SoTranslation       *labelZOffset   = new SoTranslation;
00073     SoText2             *labelZText     = new SoText2;
00074     SoVertexProperty    *vtx            = new SoVertexProperty;
00075     SoVertexProperty    *minorVtx       = new SoVertexProperty;
00076     SoText2             *text;
00077     SoMFInt32           coords;
00078 
00079     SoIndexedLineSet    *minorGrid      = new SoIndexedLineSet;
00080     SoMFInt32           minorCoords;
00081     
00082     //  set up co-ords for an overall outline plus a one unit vertical scale mark
00083     float               x = float (2 * M_PI);
00084     float               z = 5.0;
00085     int                 vertex = 6;
00086     int                 coord = 0;
00087     int                 minorVertex = 0;
00088     int                 minorCoord = 0;
00089     
00090     vtx->vertex.set1Value (0, SbVec3f (0, 0, -z));
00091     vtx->vertex.set1Value (1, SbVec3f (0, 0,  z));
00092     vtx->vertex.set1Value (2, SbVec3f (x, 0,  z));
00093     vtx->vertex.set1Value (3, SbVec3f (x, 0, -z));
00094     vtx->vertex.set1Value (4, SbVec3f (0, 0, -z));
00095     vtx->vertex.set1Value (5, SbVec3f (0, 1, -z));
00096     for (; coord < vertex; coord++)
00097         coords.set1Value (coord, coord);
00098     coords.set1Value (coord++, SO_END_LINE_INDEX);
00099         
00100     x = 0;
00101     z = 5.0;
00102 
00103     SoText2             *phiLabelText [19];
00104     SoTranslation       *phiStart = new SoTranslation;
00105     SoTranslation       *phiTranslation = new SoTranslation;
00106     int                 ticks = 18;
00107     int                 tick;
00108 
00109     phiStart->translation = SbVec3f (M_PI / 4, 0, -z-2*LABEL_OFFSET);
00110     phiTranslation->translation = SbVec3f (M_PI / 4, 0, 0);
00111     phiLabels->addChild (phiStart);
00112 
00113     for (tick = 0; tick < ticks; tick++, x += (2 * M_PI) / 18.0)
00114     {
00115         vtx->vertex.set1Value (vertex, SbVec3f (x, 0, -z));
00116         coords.set1Value (coord++, vertex++);
00117         vtx->vertex.set1Value (vertex, SbVec3f (x, 0, z));
00118         coords.set1Value (coord++, vertex++);
00119         coords.set1Value (coord++, SO_END_LINE_INDEX);
00120 
00121         for (int ttow = 1; ttow < 4; ttow++)
00122         {
00123             minorVtx->vertex.set1Value (minorVertex, SbVec3f (x + ttow * ((2 * M_PI) / 18.0) / 4.0, 0, -3.0));
00124             minorCoords.set1Value (minorCoord++, minorVertex++);
00125             minorVtx->vertex.set1Value (minorVertex, SbVec3f (x + ttow * ((2 * M_PI) / 18.0) / 4.0, 0, 3.0));
00126             minorCoords.set1Value (minorCoord++, minorVertex++);
00127             minorCoords.set1Value (minorCoord++, SO_END_LINE_INDEX);
00128         }
00129 
00130         text = phiLabelText [tick] = new SoText2;
00131         phiLabels->addChild (text);
00132         phiLabels->addChild (phiTranslation);
00133     }
00134 
00135     text = phiLabelText [tick] = new SoText2;
00136     phiLabels->addChild (text);
00137 
00138     phiLabelText [0]->string = "PI/4";
00139     phiLabelText [1]->string = "PI/2";
00140     phiLabelText [2]->string = "3PI/4";
00141     phiLabelText [3]->string = "PI";
00142     phiLabelText [4]->string = "5PI/4";
00143     phiLabelText [5]->string = "3PI/2";
00144     phiLabelText [6]->string = "7PI/4";
00145     phiLabelText [7]->string = "2PI";
00146 
00147     // now eta
00148     x = 2*M_PI;
00149     z = ceil (-5.0);
00150     if (z == -5.0)
00151         z += 1; // remove those end regions
00152     
00153     z = -5.0;
00154     for (tick = 1; tick < 5; tick++)
00155     {
00156         vtx->vertex.set1Value (vertex, SbVec3f (0, 0, z + tick * 0.5));
00157         coords.set1Value (coord++, vertex++);
00158         vtx->vertex.set1Value (vertex, SbVec3f (x, 0, z + tick * 0.5));
00159         coords.set1Value (coord++, vertex++);
00160         coords.set1Value (coord++, SO_END_LINE_INDEX);
00161 
00162         vtx->vertex.set1Value (vertex, SbVec3f (0, 0, -z - tick * 0.5));
00163         coords.set1Value (coord++, vertex++);
00164         vtx->vertex.set1Value (vertex, SbVec3f (x, 0, -z - tick * 0.5));
00165         coords.set1Value (coord++, vertex++);
00166         coords.set1Value (coord++, SO_END_LINE_INDEX);
00167     }
00168 
00169     ticks = 11;
00170     z = -1.74;
00171     
00172     for (tick = 0; tick < ticks; tick++, z += 4 * 0.087)
00173     {
00174         vtx->vertex.set1Value (vertex, SbVec3f (0, 0, z));
00175         coords.set1Value (coord++, vertex++);
00176         vtx->vertex.set1Value (vertex, SbVec3f (x, 0, z));
00177         coords.set1Value (coord++, vertex++);
00178         coords.set1Value (coord++, SO_END_LINE_INDEX);
00179         
00180         for (int ttow = 0; ttow < 4 && z < 1.74; ttow++)
00181         {
00182             minorVtx->vertex.set1Value (minorVertex, SbVec3f (0, 0, z + ttow * ((2 * M_PI) / 18.0) / 4.0));
00183             minorCoords.set1Value (minorCoord++, minorVertex++);
00184             minorVtx->vertex.set1Value (minorVertex, SbVec3f (x, 0, z + ttow * ((2 * M_PI) / 18.0) / 4.0));
00185             minorCoords.set1Value (minorCoord++, minorVertex++);
00186             minorCoords.set1Value (minorCoord++, SO_END_LINE_INDEX);
00187         }
00188     }
00189 
00190     z = -2.172;
00191     
00192     vtx->vertex.set1Value (vertex, SbVec3f (0, 0, z));
00193     coords.set1Value (coord++, vertex++);
00194     vtx->vertex.set1Value (vertex, SbVec3f (x, 0, z));
00195     coords.set1Value (coord++, vertex++);
00196     coords.set1Value (coord++, SO_END_LINE_INDEX);
00197 
00198     vtx->vertex.set1Value (vertex, SbVec3f (0, 0, -z));
00199     coords.set1Value (coord++, vertex++);
00200     vtx->vertex.set1Value (vertex, SbVec3f (x, 0, -z));
00201     coords.set1Value (coord++, vertex++);
00202     coords.set1Value (coord++, SO_END_LINE_INDEX);
00203     
00204     z = 1.74;
00205     float dz [8] = { 1.83, 1.93, 2.043, 2.172, 2.322, 2.50, 2.65, 3.0};
00206 
00207     for (tick = 0; tick < 8; tick++)
00208     {
00209         minorVtx->vertex.set1Value (minorVertex, SbVec3f (0, 0, dz [tick]));
00210         minorCoords.set1Value (minorCoord++, minorVertex++);
00211         minorVtx->vertex.set1Value (minorVertex, SbVec3f (x, 0, dz [tick]));
00212         minorCoords.set1Value (minorCoord++, minorVertex++);
00213         minorCoords.set1Value (minorCoord++, SO_END_LINE_INDEX);
00214  
00215         minorVtx->vertex.set1Value (minorVertex, SbVec3f (0, 0, -dz[tick]));
00216         minorCoords.set1Value (minorCoord++, minorVertex++);
00217         minorVtx->vertex.set1Value (minorVertex, SbVec3f (x, 0, -dz[tick]));
00218         minorCoords.set1Value (minorCoord++, minorVertex++);
00219         minorCoords.set1Value (minorCoord++, SO_END_LINE_INDEX);
00220     }
00221     
00222     z = -5.0;
00223 
00224     SoTranslation       *etaStart = new SoTranslation;
00225     SoTranslation       *etaTranslation = new SoTranslation;
00226 
00227     etaStart->translation = SbVec3f (-2 * LABEL_OFFSET, 0, z);
00228     etaTranslation->translation = SbVec3f (0, 0, 1);
00229     etaLabels->addChild (etaStart);
00230 
00231     ticks = int (2 * abs (int (z)) + 1);
00232     for (tick = 0; tick < ticks; tick++, z ++)
00233     {
00234         text = new SoText2;
00235         char textLabel [10];
00236         sprintf (textLabel, "%.0f", z);
00237         text->string = textLabel;
00238         etaLabels->addChild (text);
00239         etaLabels->addChild (etaTranslation);
00240     }
00241 
00242     grid->vertexProperty = vtx;
00243     grid->coordIndex = coords;
00244     minorGrid->vertexProperty = minorVtx;
00245     minorGrid->coordIndex = minorCoords;
00246         
00247     // scale
00248     char scaleChars[12] = "1.0 GeV";
00249     sprintf (scaleChars, "%.2G GeV", heightScale.getValue ());
00250     labelScaleText->string = scaleChars;
00251     labelScaleOffset->translation
00252         = SbVec3f (-LABEL_OFFSET, 1, -maxEta - LABEL_OFFSET);
00253 
00254     // axis labels
00255     labelXOffset->translation = SbVec3f (M_PI, 0, -maxEta - 8 * LABEL_OFFSET);
00256     labelXText->string = "Phi";
00257     labelZOffset->translation = SbVec3f (-8 * LABEL_OFFSET, 0, 0);
00258     labelZText->string = "Eta";
00259 
00260     labelScale->addChild (labelScaleFont);
00261     labelScale->addChild (labelScaleOffset);
00262     labelScale->addChild (labelScaleText);
00263 
00264     labelX->addChild (labelXOffset);
00265     labelX->addChild (labelXText);
00266     labelZ->addChild (labelZOffset);
00267     labelZ->addChild (labelZText);
00268 
00269     // set parts
00270     setPart ("font",            font);
00271     setPart ("phiLabels",       phiLabels);
00272     setPart ("etaLabels",       etaLabels);
00273     setPart ("labelScale",      labelScale);
00274     setPart ("labelX",          labelX);
00275     setPart ("labelZ",          labelZ);
00276     setPart ("grid",            grid);
00277 
00278     SoDrawStyle         *minorDrawStyle = new SoDrawStyle;
00279     minorDrawStyle->linePattern = 0x5555;
00280     minorGridSep->addChild (minorDrawStyle);
00281     minorGridSep->addChild (minorGrid);
00282 
00283     setPart ("minorGridSep", minorGridSep);
00284 }

IgSoLegoTowers::SO_KIT_CATALOG_ENTRY_HEADER ( legos   )  [private]

IgSoLegoTowers::SO_KIT_CATALOG_ENTRY_HEADER ( minorGridSep   )  [private]

IgSoLegoTowers::SO_KIT_CATALOG_ENTRY_HEADER ( grid   )  [private]

IgSoLegoTowers::SO_KIT_CATALOG_ENTRY_HEADER ( labelZ   )  [private]

IgSoLegoTowers::SO_KIT_CATALOG_ENTRY_HEADER ( labelX   )  [private]

IgSoLegoTowers::SO_KIT_CATALOG_ENTRY_HEADER ( labelScale   )  [private]

IgSoLegoTowers::SO_KIT_CATALOG_ENTRY_HEADER ( labels   )  [private]

IgSoLegoTowers::SO_KIT_CATALOG_ENTRY_HEADER ( etaLabels   )  [private]

IgSoLegoTowers::SO_KIT_CATALOG_ENTRY_HEADER ( phiLabels   )  [private]

IgSoLegoTowers::SO_KIT_CATALOG_ENTRY_HEADER ( font   )  [private]

IgSoLegoTowers::SO_KIT_HEADER ( IgSoLegoTowers   )  [private]


Member Data Documentation

SoSFFloat IgSoLegoTowers::heightScale

Definition at line 34 of file IgSoLegoTowers.h.

Referenced by IgSoLegoTowers(), and refresh().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:25:43 2009 for CMSSW by  doxygen 1.5.4