本文整理汇总了C++中TNode::cd方法的典型用法代码示例。如果您正苦于以下问题:C++ TNode::cd方法的具体用法?C++ TNode::cd怎么用?C++ TNode::cd使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TNode
的用法示例。
在下文中一共展示了TNode::cd方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: x3d
int x3d( TString cut, int showFlag )
{
// Retrieve trees and apply cut
TFile* alignedFile = new TFile("aligned.root");
TTree* tmpTree = (TTree*)alignedFile->Get("theTree");
TTree* alignedTree = (TTree*)tmpTree->CopyTree(cut);
TFile* misalignedFile = new TFile("misaligned.root");
tmpTree = (TTree*)misalignedFile->Get("theTree");
TTree* misalignedTree = (TTree*)tmpTree->CopyTree(cut);
// Set tree branches
float x,y,z,phi,theta,length,thick,width;
float mx,my,mz,mphi,mtheta,mlength,mthick,mwidth;
TRotMatrix* rot;
TRotMatrix* mrot;
double rad2deg = 180./3.1415926;
alignedTree->SetBranchAddress( "x", &x );
alignedTree->SetBranchAddress( "y", &y );
alignedTree->SetBranchAddress( "z", &z );
alignedTree->SetBranchAddress( "phi", &phi );
alignedTree->SetBranchAddress( "theta", &theta );
alignedTree->SetBranchAddress( "length", &length );
alignedTree->SetBranchAddress( "width", &width );
alignedTree->SetBranchAddress( "thick", &thick );
alignedTree->SetBranchAddress( "rot", &rot );
misalignedTree->SetBranchAddress( "x", &mx );
misalignedTree->SetBranchAddress( "y", &my );
misalignedTree->SetBranchAddress( "z", &mz );
misalignedTree->SetBranchAddress( "phi", &mphi );
misalignedTree->SetBranchAddress( "theta", &mtheta );
misalignedTree->SetBranchAddress( "length", &mlength );
misalignedTree->SetBranchAddress( "width", &mwidth );
misalignedTree->SetBranchAddress( "thick", &mthick );
misalignedTree->SetBranchAddress( "rot", &mrot );
// Create canvas
TCanvas* c1 = new TCanvas("c1","Detector units", 200, 10, 700, 500);
c1->cd();
TBRIK* IP = new TBRIK("IP","IP","void",0.,0.,0.);
TNode* rootNode = new TNode("Root","Root","IP",0.,0.,0.);
rootNode->cd();
int entry = 0;
while ( alignedTree->GetEntry(entry) && misalignedTree->GetEntry(entry) )
{
entry++;
std::ostringstream name;
// Aligned detector
name << "aBrik" << entry;
TBRIK* aBrik = new TBRIK(name.str().c_str(),"Aligned detector unit","void",
0.01,0.01,length);
aBrik->SetLineColor(4);
// Detector node (position and orientation)
name.str("aNode"); name << entry;
TNode* aNode = new TNode(name.str().c_str(),name.str().c_str(),aBrik,x,y,z);
// Misaligned detector
name.str("mBrik");
name << entry;
TBRIK* mBrik = new TBRIK(name.str().c_str(),"Misaligned detector unit","void",
0.01,0.01,mlength);
mBrik->SetLineColor(2);
// Detector node (position and orientation)
name.str("mNode"); name << entry;
TNode* mNode = new TNode(name.str().c_str(),name.str().c_str(),mBrik,mx,my,mz);
//if (entry>5) break;
}
rootNode->cd();
rootNode->Draw();
c1->GetViewer3D();
return 0;
}
示例2: xtruSamples
void xtruSamples()
{
// Draw a sample of TXTRU shapes some convex, concave (and possibly malformed)
// Change Bool_t's to test alternative specifications
// Author: Robert Hatcher ([email protected]) 2000.09.06
// One normally specifies the x-y points in counter-clockwise order;
// flip this to TRUE to test that it doesn't matter.
Bool_t makecw = kFALSE;
// One normally specifies the z points in increasing z order;
// flip this to TRUE to test that it doesn't matter.
Bool_t reversez = kFALSE;
// One shouldn't be creating malformed polygons
// but to test what happens when one does here's a flag.
// The effect will be only apparent in solid rendering mode
Bool_t domalformed = kFALSE;
// domalformed = kTRUE;
c1 = new TCanvas("c1","sample TXTRU Shapes",200,10,640,640);
// Create a new geometry
TGeometry* geom = new TGeometry("sample","sample");
geom->cd();
// Define the complexity of the drawing
Float_t zseg = 6; // either 2 or 6
Int_t extravis = 0; // make extra z "arrow" visible
Float_t unit = 1;
// Create a large BRIK to embed things into
Float_t bigdim = 12.5*unit;
TBRIK* world = new TBRIK("world","world","void",bigdim,bigdim,bigdim);
// Create the main node, make it invisible
TNode* worldnode = new TNode("worldnode","world node",world);
worldnode->SetVisibility(0);
worldnode->cd();
// Canonical shape ... gets further modified by scale factors
// to create convex (and malformed) versions
Float_t x[] = { -0.50, -1.20, 1.20, 0.50, 0.50, 1.20, -1.20, -0.50 };
Float_t y[] = { -0.75, -2.00, -2.00, -0.75, 0.75, 2.00, 2.00, 0.75 };
Float_t z[] = { -0.50, -1.50, -1.50, 1.50, 1.50, 0.50 };
Float_t s[] = { 0.50, 1.00, 1.50, 1.50, 1.00, 0.50 };
Int_t nxy = sizeof(x)/sizeof(Float_t);
Float_t convexscale[] = { 7.0, -1.0, 1.5 };
Int_t icolor[] = { 1, 2, 3, 2, 2, 2, 4, 2, 6 };
// xycase and zcase: 0=convex, 1=malformed, 2=concave
// this will either create a 2x2 matrix of shapes
// or a 3x3 array (if displaying malformed versions)
for (Int_t zcase = 0; zcase<3; zcase++) {
if (zcase == 1 && !domalformed) continue;
for (Int_t xycase = 0; xycase<3; xycase++) {
if (xycase == 1 && !domalformed) continue;
Char_t *name = "txtruXYZ";
sprintf(name,"txtru%1d%1d%1d",xycase,zcase,zseg);
TXTRU* mytxtru = new TXTRU(name,name,"void",8,2);
Int_t i, j;
Float_t xsign = (makecw) ? -1 : 1;
Float_t zsign = (reversez) ? -1 : 1;
// set the vertex points
for (i=0; i<nxy; i++) {
Float_t xtmp = x[i]*xsign;
Float_t ytmp = y[i];
if (i==0||i==3||i==4||i==7) xtmp *= convexscale[xycase];
if (xycase==2) xtmp *=2;
mytxtru->DefineVertex(i,xtmp,ytmp);
}
// set the z segment positions and scales
for (i=0, j=0; i<zseg; i++) {
Float_t ztmp = z[i]*zsign;
if (i==0||i==5) ztmp *= convexscale[zcase];
if (zcase==2) ztmp *= 2.5;
if (zseg>2 && zcase!=2 && (i==1||i==4)) continue;
mytxtru->DefineSection(j,ztmp,s[i]);
j++;
}
TNode* txtrunode = new TNode(name,name,mytxtru);
txtrunode->SetLineColor(icolor[3*zcase+xycase]);
Float_t pos_scale = (domalformed) ? 10 : 6;
Float_t xpos = (xycase-1)*pos_scale*unit;
Float_t ypos = (zcase-1)*pos_scale*unit;
txtrunode->SetPosition(xpos,ypos,0.);
}
}
// Some extra shapes to show the direction of "z"
Float_t zhalf = 0.5*bigdim;
Float_t rmax = 0.03*bigdim;
TCONE* zcone = new TCONE("zcone","zcone","void",zhalf,0.,rmax,0.,0.);
//.........这里部分代码省略.........