21#include <TGeoManager.h>
25#include "BesVisLib/BesEvent.h"
26#include "BesVisLib/BesView.h"
27#include "BesVisLib/MdcROOTGeo.h"
28#include "Identifier/MdcID.h"
29#include "RawEvent/RawDataUtil.h"
31const int MdcROOTGeo::m_kReplica[m_kLayer] = {
32 40, 44, 48, 56, 64, 72, 80, 80, 76, 76, 88, 88, 100, 100, 112, 112, 128,
33 128, 140, 140, 160, 160, 160, 160, 176, 176, 176, 176, 208, 208, 208, 208, 240, 240,
34 240, 240, 256, 256, 256, 256, 256, 256, 256, 256, 288, 288, 288, 288, 288, 288 };
36const int MdcROOTGeo::m_kStereoDir[m_kTrueLayer] = {
37 1, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
38 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0 };
39const int MdcROOTGeo::m_kiCorrectLayer[m_kCorrectLayer] = { 9, 11, 13, 15, 17,
44 MdcROOTGeo::m_kiCorrectReplica[m_kCorrectLayer] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
53 m_twistedTubsColor = 9;
58 if ( cgem_flag ) m_StartLayer = 8;
59 else m_StartLayer = 0;
63 k_QNotOverflow = kFALSE;
66 for (
int layer = 0; layer < m_kLayer; layer++ )
68 m_NodeLayer[layer] = 0;
69 for (
int replica = 0; replica < m_kReplicaMax; replica++ )
71 m_NodeReplica[layer][replica] = 0;
72 m_PhysicalReplica[layer][replica] = 0;
76 for (
int i = 0; i < m_kCorrectLayer; i++ )
77 { m_CorrectMap[m_kiCorrectLayer[i]] = m_kiCorrectReplica[i]; }
79 for (
int layer = 0; layer < m_kTrueLayer; layer++ )
81 for (
int replica = 0; replica < m_kReplicaMax; replica++ )
82 { m_Mdc2DWire[layer][replica] = 0; }
88 cout <<
"delete old MdcROOTGeo" << endl;
89 for ( Int_t layer = 0; layer < m_kTrueLayer; ++layer )
92 for ( Int_t replica = 0; replica < m_kReplica[simuLayer]; ++replica )
93 {
delete m_Mdc2DWire[layer][replica]; }
115 cout <<
"MdcROOTGeo::Init2DGeometry, ROOT Geometry not Initialized yet!" << endl;
121 Int_t mdcLineColor = 15;
122 Int_t mdcXYStyle = 1001;
123 Int_t mdcZRStyle = 1001;
124 Int_t mdcStereoSuperColor = 38;
125 Int_t mdcAxialSuperColor = 4;
127 Double_t local[3] = { 0.0, 0.0, 0.0 };
128 Double_t master[3] = { 0.0, 0.0, 0.0 };
130 Double_t
P[306] = { 0.0 };
131 Double_t center[3] = { 0.0, 0.0, 0.0 };
136 TGeoTube* mdcShape = (TGeoTube*)
GetVolumeMdc()->GetShape();
138 Double_t rmin = mdcShape->GetRmin();
139 if ( m_StartLayer > 0 )
141 TGeoTube* mdcShapeOuter = (TGeoTube*)(
GetLayer( m_StartLayer )->GetVolume() )->GetShape();
142 rmin = mdcShapeOuter->GetRmin();
145 m_MdcXY =
new BesCircle2D(
"Mdc",
"Mdc", rmin, mdcShape->GetRmax(), ¢er[0] );
146 m_MdcXY->SetNSegment( 360 );
147 m_MdcXY->SetFillColor( mdcColor );
148 m_MdcXY->SetFillStyle( mdcXYStyle );
149 m_MdcXY->SetLineColor( mdcLineColor );
175 for ( Int_t layer = m_StartLayer; layer < m_kTrueLayer; layer++ )
178 for (
int replica = 0; replica < m_kReplica[simuLayer]; replica++ )
182 name = TString(
"Mdc Layer " );
187 if ( m_kStereoDir[layer] != 0 )
189 TGeoArb8* wireShape = (TGeoArb8*)wirePhyNode->GetShape();
190 Double_t *localArb8Point, masterArb8Point[24];
191 localArb8Point = wireShape->GetVertices();
192 for ( Int_t i = 0; i < 8; i++ )
194 local[0] = localArb8Point[2 * i];
195 local[1] = localArb8Point[2 * i + 1];
196 if ( i < 4 ) local[2] = wireShape->GetDz() * ( -1.0 );
197 else local[2] = wireShape->GetDz();
199 wirePhyNode->GetMatrix( -1 * wirePhyNode->GetLevel() )
200 ->LocalToMaster( local, &master[0] );
201 for ( Int_t j = 0; j < 3; j++ ) { masterArb8Point[3 * i + j] = master[j]; }
204 m_Mdc2DWire[layer][replica] =
new Mdc2DWire( name, name, 8, &masterArb8Point[0] );
209 TGeoTubeSeg* wireShape = (TGeoTubeSeg*)wirePhyNode->GetShape();
211 Double_t centerR = 0.5 * ( wireShape->GetRmin() + wireShape->GetRmax() );
212 if ( layer >= m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut )
213 centerR = wireShape->GetRmax();
215 0.5 * ( wireShape->GetPhi1() + wireShape->GetPhi2() ) * TMath::DegToRad();
216 local[0] = centerR *
cos( centerPhi );
217 local[1] = centerR *
sin( centerPhi );
219 wirePhyNode->GetMatrix( -1 * wirePhyNode->GetLevel() )
220 ->LocalToMaster( local, &master[0] );
222 Double_t rmin = wireShape->GetRmin();
223 Double_t rmax = wireShape->GetRmax();
224 if ( layer >= m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut )
225 rmax = rmin + 2 * ( rmax - rmin );
226 m_Mdc2DWire[layer][replica] =
227 new Mdc2DWire( name, name, rmin, rmax, wireShape->GetDz(), centerPhi, &master[0] );
235 TGeoTube* aMdcLayer = 0;
238 for ( Int_t layer = m_StartLayer; layer < m_kLayer; layer++ )
240 aMdcLayer = (TGeoTube*)
GetLayer( layer )->GetVolume()->GetShape();
242 P[3 * iPoint + 1] = aMdcLayer->GetRmin();
243 P[3 * iPoint + 2] = aMdcLayer->GetDz();
248 P[3 * iPoint + 1] = aMdcLayer->GetRmax();
249 P[3 * iPoint + 2] = aMdcLayer->GetDz();
252 P[3 * iPoint + 1] = aMdcLayer->GetRmax();
253 P[3 * iPoint + 2] = aMdcLayer->GetDz() * ( -1.0 );
256 for ( Int_t layer = m_kLayer - 1; layer >= m_StartLayer; layer-- )
258 aMdcLayer = (TGeoTube*)
GetLayer( layer )->GetVolume()->GetShape();
260 P[3 * iPoint + 1] = aMdcLayer->GetRmin();
261 P[3 * iPoint + 2] = aMdcLayer->GetDz() * ( -1.0 );
265 m_MdcZR[0] =
new BesPolygon2D(
"MdcZRUp",
"MdcZRUp", iPoint, &
P[0] );
267 for ( Int_t i = 0; i < iPoint; i++ )
P[3 * i + 1] *= -1.0;
269 m_MdcZR[1] =
new BesPolygon2D(
"MdcZRDown",
"MdcZRDown", iPoint, &
P[0] );
271 for ( Int_t i = 0; i < 2; i++ )
273 m_MdcZR[i]->SetFillColor( mdcColor );
274 m_MdcZR[i]->SetFillStyle( mdcZRStyle );
275 m_MdcZR[i]->SetLineColor( mdcLineColor );
276 m_MdcZR[i]->SetRotatable(
true );
283 Int_t nDaughters =
m_TopVolume->GetNodes()->GetEntries();
284 cout <<
"logicalMdc contains " << nDaughters <<
" nodes : " << endl;
285 for ( Int_t i = 0; i < nDaughters; i++ )
286 { cout << i <<
" : " <<
m_TopVolume->GetNode( i )->GetName() << endl; }
292 if ( !m_Mdc ) std::cout <<
"m_Mdc = 0" << std::endl;
295 for (
int layer = m_StartLayer; layer < m_kLayer; layer++ )
298 for (
int replica = 0; replica < m_kReplica[layer]; replica++ )
300 std::stringstream osname;
302 if ( layer >= 0 && layer < m_kStereoLayerIn )
310 <<
"Layer" << layer <<
"Cell"
313 else if ( layer >= m_kStereoLayerIn && layer < m_kStereoLayerIn + m_kAxialLayerIn )
322 <<
"Layer" << layer <<
"Cell"
325 else if ( layer >= m_kStereoLayerIn + m_kAxialLayerIn &&
326 layer < m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut )
334 <<
"Layer" << layer <<
"Cell"
337 else if ( layer >= m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut &&
341 Int_t nBeforeAxialLayerOut = m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut;
342 Int_t iTrueLayer = nBeforeAxialLayerOut + ( layer - nBeforeAxialLayerOut ) / 2;
343 if ( layer % 2 == 0 )
351 <<
"Layer" << iTrueLayer <<
"_0"
363 <<
"Layer" << iTrueLayer <<
"_1"
369 m_NodeReplica[layer][replica] =
GetNode( osname.str() );
377 for (
int layer = m_StartLayer; layer < m_kLayer; layer++ )
382 TGeoNode* nodeLayer = m_Mdc->GetNode( layer );
383 m_NodeLayer[layer] = nodeLayer;
386 Int_t nDaughters = nodeLayer->GetVolume()->GetNodes()->GetEntries();
394 for (
int replica = 0; replica < m_kReplica[layer]; replica++ )
396 m_NodeReplica[layer][replica] = nodeLayer->GetVolume()->GetNode( replica );
408 for ( intMap::iterator
iter = m_CorrectMap.begin();
iter != m_CorrectMap.end();
iter++ )
410 if ( layer == ( *iter ).first || ( layer >= m_kStereoLayerIn + m_kAxialLayerIn +
411 m_kStereoLayerOut + m_kAxialLayerOut &&
412 layer - m_kAxialLayerOut == ( *iter ).first ) )
414 rep -= ( *iter ).second;
415 if ( rep < 0 ) rep += m_kReplica[layer];
425 m_Mdc->SetLineColor( m_MdcColor );
426 m_Mdc->SetVisibility( 0 );
428 for (
int segment = 1; segment <= m_kSegment; segment++ )
436 for (
int layer = m_StartLayer; layer < m_kLayer; layer++ )
438 if ( ( layer >= 0 && layer < m_kStereoLayerIn ) ||
439 ( layer >= m_kStereoLayerIn + m_kAxialLayerIn &&
440 layer < m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut ) )
454 for (
int segment = 1; segment <= m_kSegment; segment++ )
456 for (
int no = 0; no < 2; no++ ) {
GetSegment( segment, no )->SetVisibility( 0 ); }
460 for (
int layer = m_StartLayer; layer < m_kLayer; layer++ )
462 GetLayer( layer )->SetVisibility( 0 );
463 for (
int replica = 0; replica < m_kReplica[layer]; replica++ )
464 {
GetReplica( layer, replica )->SetVisibility( 0 ); }
472 m_Mdc->SetLineColor( m_MdcColor );
473 m_Mdc->SetVisibility( 0 );
475 for (
int segment = 1; segment <= m_kSegment; segment++ )
483 for (
int layer = m_StartLayer; layer < m_kLayer; layer++ )
485 if ( ( layer >= 0 && layer < m_kStereoLayerIn ) ||
486 ( layer >= m_kStereoLayerIn + m_kAxialLayerIn &&
487 layer < m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut ) )
501 for (
int segment = 1; segment <= m_kSegment; segment++ )
503 for (
int no = 0; no < 2; no++ ) {
GetSegment( segment, no )->SetVisibility( 1 ); }
507 for (
int layer = m_StartLayer; layer < m_kLayer; layer++ )
509 GetLayer( layer )->SetVisibility( 1 );
510 for (
int replica = 0; replica < m_kReplica[layer]; replica++ )
511 {
GetReplica( layer, replica )->SetVisibility( 1 ); }
516 for (
int segment = 1; segment <= m_kSegment; segment++ )
520 for (
int layer = m_StartLayer; layer < m_kLayer; layer++ )
526 for (
int segment = 1; segment <= m_kSegment; segment++ )
528 for (
int no = 0; no < 2; no++ ) {
GetSegment( segment, no )->SetVisibility( 0 ); }
532 for (
int layer = m_StartLayer; layer < m_kLayer; layer++ )
534 GetLayer( layer )->SetVisibility( 0 );
535 for (
int replica = 0; replica < m_kReplica[layer]; replica++ )
537 if ( replica < m_kReplica[layer] / 4 )
GetReplica( layer, replica )->SetVisibility( 0 );
538 else GetReplica( layer, replica )->SetVisibility( 1 );
544 for (
int segment = 1; segment <= m_kSegment; segment++ )
548 for (
int layer = m_StartLayer; layer < m_kLayer; layer++ )
554 for (
int segment = 1; segment <= m_kSegment; segment++ )
556 for (
int no = 0; no < 2; no++ ) {
GetSegment( segment, no )->SetVisibility( 0 ); }
560 for (
int layer = m_StartLayer; layer < m_kLayer; layer++ )
562 GetLayer( layer )->SetVisibility( 0 );
563 for (
int replica = 0; replica < m_kReplica[layer]; replica++ )
565 if ( replica < m_kReplica[layer] / 4 || replica > m_kReplica[layer] * 3 / 4 )
566 GetReplica( layer, replica )->SetVisibility( 1 );
567 else GetReplica( layer, replica )->SetVisibility( 0 );
573 if ( gGeoManager == 0 ) std::cout <<
"Create gGeoManager first" << std::endl;
574 TGeoNode*
bes = gGeoManager->GetTopNode();
575 TGeoNode* nodeMdc =
bes->GetVolume()->GetNode(
m_childNo );
578 if ( !m_Mdc ) std::cout <<
"m_Mdc = 0" << std::endl;
580 for (
int segment = 0; segment < 2 * m_kSegment - 2; segment++ )
582 m_PhysicalSegment[segment] = gGeoManager->MakePhysicalNode(
583 TString(
"/" ) +
bes->GetName() + TString(
"/" ) + nodeMdc->GetName() +
585 m_Mdc->GetNode( ( m_kLayer + 2 * m_kSegment - 2 - 1 ) - segment )->GetName() );
586 m_PhysicalSegment[segment]->SetVisibility( 0 );
587 m_PhysicalSegment[segment]->SetIsVolAtt( kFALSE );
588 m_PhysicalSegment[segment]->SetLineColor( m_segmentColor );
593 for (
int layer = m_StartLayer; layer < m_kLayer; layer++ )
595 TGeoNode* nodeLayer =
GetLayer( layer );
597 for (
int replica = 0; replica < m_kReplica[layer]; replica++ )
599 TGeoNode* nodeReplica =
GetReplica( layer, replica );
601 m_PhysicalReplica[layer][replica] = gGeoManager->MakePhysicalNode(
602 TString(
"/" ) + bes->GetName() + TString(
"/" ) + nodeMdc->GetName() +
603 TString(
"/" ) + nodeLayer->GetName() + TString(
"/" ) + nodeReplica->GetName() );
604 m_PhysicalReplica[layer][replica]->SetVisibility( 0 );
605 m_PhysicalReplica[layer][replica]->SetIsVolAtt( kFALSE );
606 if ( ( layer >= 0 && layer < m_kStereoLayerIn ) ||
607 ( layer >= m_kStereoLayerIn + m_kAxialLayerIn &&
608 layer < m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut ) )
609 { m_PhysicalReplica[layer][replica]->SetLineColor( m_twistedTubsColor ); }
610 else { m_PhysicalReplica[layer][replica]->SetLineColor( m_replicaColor ); }
637 for (
int layer = m_StartLayer; layer < m_kLayer; layer++ )
639 if ( ( layer >= 0 && layer < m_kStereoLayerIn ) ||
640 ( layer >= m_kStereoLayerIn + m_kAxialLayerIn &&
641 layer < m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut ) )
643 for (
int replica = 0; replica < m_kReplica[layer]; replica++ )
648 for (
int replica = 0; replica < m_kReplica[layer]; replica++ )
657 if ( gPad ) view =
dynamic_cast<BesView*
>( gPad->GetView() );
661 for (
int segment = 0; segment < 2 * m_kSegment - 2; segment++ )
663 TGeoPhysicalNode* phyNode = 0;
664 phyNode = m_PhysicalSegment[segment];
668 phyNode->SetVisibility( 0 );
669 if ( ( segment >= 2 && segment <= 3 ) || segment > 59 )
704 for (
int i = 0; i <
m_HitsArray->GetEntries(); i++ )
706 TGeoPhysicalNode* phyNode = (TGeoPhysicalNode*)
m_HitsArray->At( i );
707 phyNode->SetVisibility( 0 );
716 aWire->
AddInfo( aWire->GetTitle() );
726 m_MdcDigiCol =
gEvent->GetMdcDigiCol();
728 if ( m_MdcDigiCol ) NDigiCol = m_MdcDigiCol->GetEntries();
732 for (
int i = 0; i < NDigiCol; i++ )
742 TGeoPhysicalNode* phyNode = 0;
757 aWire = m_Mdc2DWire[layer][wire];
761 aWire->
AddInfo( aWire->GetTitle() );
762 double evTime =
gEvent->GetHeader().GetEvTime();
769 if ( fabs( evTime ) > 0.0001 )
797 if ( gPad ) view =
dynamic_cast<BesView*
>( gPad->GetView() );
804 phyNode->SetVisibility( 1 );
807 phyNode->SetVisibility( 0 );
813 if ( gPad ) view =
dynamic_cast<BesView*
>( gPad->GetView() );
815 for (
int i = 0; i <
m_HitsArray->GetEntries(); i++ )
817 TGeoPhysicalNode* phyNode = (TGeoPhysicalNode*)
m_HitsArray->At( i );
819 else { phyNode->SetVisibility( 0 ); }
835 k_QNotOverflow = input;
849 std::stringstream osname;
852 <<
"Segment" << segment;
857 std::stringstream osname;
858 if ( layer >= 0 && layer < m_kStereoLayerIn )
865 else if ( layer >= m_kStereoLayerIn && layer < m_kStereoLayerIn + m_kAxialLayerIn )
872 else if ( layer >= m_kStereoLayerIn + m_kAxialLayerIn &&
873 layer < m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut )
880 else if ( layer >= m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut &&
881 layer < m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut + m_kAxialLayerOut )
886 <<
"Layer" << layer <<
"_0";
889 m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut + m_kAxialLayerOut &&
895 <<
"Layer" << layer - m_kAxialLayerOut <<
"_1";
902 std::stringstream osname;
903 if ( layer >= 0 && layer < m_kStereoLayerIn )
908 <<
"Layer" << layer <<
"Cell";
910 else if ( layer >= m_kStereoLayerIn && layer < m_kStereoLayerIn + m_kAxialLayerIn )
915 <<
"Layer" << layer <<
"Cell";
917 else if ( layer >= m_kStereoLayerIn + m_kAxialLayerIn &&
918 layer < m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut )
923 <<
"Layer" << layer <<
"Cell";
925 else if ( layer >= m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut &&
926 layer < m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut + m_kAxialLayerOut )
931 <<
"Layer" << layer <<
"_0"
935 m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut + m_kAxialLayerOut &&
941 <<
"Layer" << layer - m_kAxialLayerOut <<
"_1"
949 std::stringstream osname;
950 if ( segment == 1 || segment == 2 )
955 <<
"Segment" << segment <<
"_"
956 << m_kSegmentNodeOffset -
965 <<
"Segment" << segment <<
"_"
966 << m_kSegmentNodeOffset - m_kSegmentBr - 2 * ( segment - 1 - m_kSegmentBr ) -
971 return GetNode( osname.str() );
978 std::stringstream osname;
979 if ( layer >= 0 && layer < m_kStereoLayerIn )
985 <<
"Layer" << layer <<
"_" << layer;
987 else if ( layer >= m_kStereoLayerIn && layer < m_kStereoLayerIn + m_kAxialLayerIn )
993 <<
"Layer" << layer <<
"_" << layer;
995 else if ( layer >= m_kStereoLayerIn + m_kAxialLayerIn &&
996 layer < m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut )
1002 <<
"Layer" << layer <<
"_" << layer;
1004 else if ( layer >= m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut &&
1007 Int_t nBeforeAxialLayerOut = m_kStereoLayerIn + m_kAxialLayerIn + m_kStereoLayerOut;
1008 Int_t iTrueLayer = nBeforeAxialLayerOut + ( layer - nBeforeAxialLayerOut ) / 2;
1009 if ( layer % 2 == 0 )
1015 <<
"Layer" << iTrueLayer <<
"_0"
1024 <<
"Layer" << iTrueLayer <<
"_1"
1030 return GetNode( osname.str() );
1034 if ( m_NodeLayer[layer] != 0 ) {
return m_NodeLayer[layer]; }
1046 if ( m_NodeReplica[layer][replica] != 0 )
1049 return m_NodeReplica[layer][replica];
1060 if ( m_PhysicalSegment[segment] != 0 ) {
return m_PhysicalSegment[segment]; }
1069 if ( m_PhysicalReplica[layer][replica] != 0 ) {
return m_PhysicalReplica[layer][replica]; }
1079 if ( m_Mdc2DWire[layer][wire] )
return m_Mdc2DWire[layer][wire];
1084 if ( trueLayer < 36 || trueLayer >= m_kTrueLayer )
return trueLayer;
1085 if ( trueLayer >= 36 )
return ( 36 + 2 * ( trueLayer - 36 ) );
1092 for (
int i = 0; i < m_MdcDigiCol->GetEntries(); i++ )
1103 TString opt = option;
1106 if ( !
m_2DGeoInit ) cout <<
"MdcROOTGeo::Draw2D(), 2D Geometry not initialized!" << endl;
1108 if ( !view ) cout <<
"MdcROOTGeo::Draw(), BesView not found" << endl;
1112 if ( opt.Contains(
"XY" ) )
1114 m_MdcXY->Draw(
"" );
1121 if ( opt.Contains(
"ZR" ) )
1123 for ( Int_t i = 0; i < 2; i++ )
1126 m_MdcZR[i]->Draw(
"" );
1134 Int_t replicaDraw = 0;
1136 for ( Int_t layer = m_StartLayer; layer < m_kTrueLayer; layer++ )
1139 for (
int replica = 0; replica < m_kReplica[simuLayer]; replica++ )
1141 if ( m_kStereoDir[layer] == -1 ) replicaDraw = replica;
1142 else if ( m_kStereoDir[layer] == 1 ) replicaDraw = m_kReplica[simuLayer] - 1 - replica;
1143 else replicaDraw = replica;
1145 if ( m_Mdc2DWire[layer][replicaDraw] )
1149 m_Mdc2DWire[layer][replicaDraw]->SetFired(
false );
1150 m_Mdc2DWire[layer][replicaDraw]->Draw( wireOpt );
1160 if ( !view ) cout <<
"MdcROOTGeo::DrawHits(), BesView not found" << endl;
1167 TString wireOpt(
"" );
1178 if ( ( k_TFire ) && ( aWire->
GetTimeChannel() == 0x7FFFFFFF ) )
continue;
1179 if ( ( k_QFire ) && ( aWire->
GetChargeChannel() == 0x7FFFFFFF ) )
continue;
1180 if ( ( k_QNotOverflow ) && aWire->
GetQOverflow() )
continue;
1183 aWire->
Draw( wireOpt );
double P(RecMdcKalTrack *trk)
sprintf(cut, "kal_costheta0_em>-0.93&&kal_costheta0_em<0.93&&kal_pxy0_em>=0.05+%d*0.1&&kal_" "pxy0_em<0.15+%d*0.1&&NGch>=2", j, j)
R__EXTERN BesEvent * gEvent
double sin(const BesAngle a)
double cos(const BesAngle a)
Bool_t GetVisMdcHitsGlobal()
void SetChargeChannel(UInt_t cc)
UInt_t GetTimeChannel() const
void SetQOverflow(Bool_t qOvfl)
void SetTime(Double_t time)
virtual void AddInfo(TString info)
void SetColorfulWire(Bool_t colorfulWire, Bool_t subEvTime)
void SetEvTime(Double_t time)
void SetTimeChannel(UInt_t tc)
virtual void Draw(Option_t *option="")
Bool_t GetQOverflow() const
UInt_t GetChargeChannel() const
virtual void SetFired(bool status=true)
void SetCharge(Double_t charge)
static int layer(const Identifier &id)
Values of different levels (failure returns 0).
static int wire(const Identifier &id)
TGeoNode * GetSegment(int segment, int no)
Get segment node;.
void SetTFire(Bool_t input)
int CorrectReplica(int layer, int replica)
Correct some axial layer id to copyNo;.
void SetVolumeDefaultVis()
Set default visual attributes;.
TGeoVolume * GetVolumeLayer(int layer)
Get layer volume;.
TGeoPhysicalNode * GetPhysicalSegment(int segment)
Get segment physical node;.
void SetQuarterVisible()
Set quater visible;.
void SetNode()
Set the pointers to theirs nodes;.
void SetMdcTimeSubEvTime(Bool_t input)
TGeoNode * GetLayer(int layer)
Get layer node;.
void SetQFire(Bool_t input)
void SetQNotOverflow(Bool_t input)
void DrawHits(Option_t *option)
Draw 2D hits.
void SetColorfulWire(Bool_t input)
void InitFromROOT(TGeoVolume *vol)
Initialize ROOTGeo from TGeoVolume logicalMdc.
void Init2DGeometry()
Initialize 2D Geometry.
TGeoNode * GetReplica(int layer, int replica)
Get replica node;.
TGeoVolume * GetVolumeReplica(int layer)
Get replica volume;.
TGeoVolume * GetVolumeSegment(int segment)
Get segment volume;.
void Draw(Option_t *option)
Draw function.
void SetVisMdcHits()
Set Mdc hits visibility;.
void SetVisMdcDetector()
Set Mdc default detector visibility;.
Int_t GetSimuLayer(Int_t trueLayer)
Trans trueLayer to simuLayer (0~42)->(0~49).
Mdc2DWire * Get2DWire(Int_t layer, Int_t replica)
Get Mdc2DWire;.
void SetVolumeMdc(TGeoVolume *vol)
Set Mdc volume, while initializing from ROOT;.
void SetHalfVisible()
Set half visible;.
TGeoPhysicalNode * GetPhysicalReplica(int layer, int replica)
Get replica physical node;.
void SetPhysicalDefaultVis()
Set default physical node attributes;.
void SetPhysicalNode()
Set the pointers to the physical nodes;.
void SetAllVisible()
Set all visible;.
TGeoVolume * GetVolumeMdc()
Get Mdc volume;.
Bool_t IsHit(Int_t layer, Int_t wire)
Judge whether the digiCol contains (layer, wire).
void SetDetector()
Draw Detecor (what is detector depends on you).
void InitFromGDML(const char *gdmlFile, const char *setupName)
Initialize ROOTGeo from GDML.
void SetHits()
Set all physicalNodes corresponding to digiCol;.
static double MdcTime(int timeChannel)
static double MdcCharge(int chargeChannel)
TGeoNode * GetNode(const std::string &nn)
Get a node(physical volume) by name;.
TObjArray * m_2DHitsArray
TGeoVolume * GetTopVolume()
Get the top(world) volume;.
TGeoVolume * GetLogicalVolume(const std::string &vn)
Get a logical volume by name;.
void ReadGdml(const char *gdmlFile, const char *setupName)
Initialize the instance of ROOTGeo.
TObjArray * m_DetectorsArray
SubDetectorROOTGeo()
Constructor.
UInt_t getOverflow() const
UInt_t getChargeChannel() const
UInt_t getTimeChannel() const