- TNode * ppsdboxnode = new TNode(nodename , nodename ,"PPSDBox", x, y, 0, rotname ) ;
- ppsdboxnode->SetLineColor(kColorPPSD) ;
- fNodes->Add(ppsdboxnode) ;
- ppsdboxnode->cd() ;
- // inside the PPSD box:
- // 1. fNumberOfModulesPhi x fNumberOfModulesZ top micromegas
- x = ( geom->GetCPVBoxSize(0) - geom->GetPPSDModuleSize(0) ) / 2. ;
- {
- for ( Int_t iphi = 1; iphi <= geom->GetNumberOfModulesPhi(); iphi++ ) { // the number of micromegas modules in phi per PHOS module
- Float_t z = ( geom->GetCPVBoxSize(2) - geom->GetPPSDModuleSize(2) ) / 2. ;
- TNode * micro1node ;
- for ( Int_t iz = 1; iz <= geom->GetNumberOfModulesZ(); iz++ ) { // the number of micromegas modules in z per PHOS module
- y = ( geom->GetCPVBoxSize(1) - geom->GetMicromegas1Thickness() ) / 2. ;
- sprintf(nodename, "%s%d%d%d", "Mic1", i, iphi, iz) ;
- micro1node = new TNode(nodename, nodename, "PPSDModule", x, y, z) ;
- micro1node->SetLineColor(kColorPPSD) ;
- fNodes->Add(micro1node) ;
- // inside top micromegas
- micro1node->cd() ;
- // a. top lid
- y = ( geom->GetMicromegas1Thickness() - geom->GetLidThickness() ) / 2. ;
- sprintf(nodename, "%s%d%d%d", "Lid", i, iphi, iz) ;
- TNode * toplidnode = new TNode(nodename, nodename, "TopLid", 0, y, 0) ;
- toplidnode->SetLineColor(kColorPPSD) ;
- fNodes->Add(toplidnode) ;
- // b. composite panel
- y = y - geom->GetLidThickness() / 2. - geom->GetCompositeThickness() / 2. ;
- sprintf(nodename, "%s%d%d%d", "CompU", i, iphi, iz) ;
- TNode * compupnode = new TNode(nodename, nodename, "TopPanel", 0, y, 0) ;
- compupnode->SetLineColor(kColorPPSD) ;
- fNodes->Add(compupnode) ;
- // c. anode
- y = y - geom->GetCompositeThickness() / 2. - geom->GetAnodeThickness() / 2. ;
- sprintf(nodename, "%s%d%d%d", "Ano", i, iphi, iz) ;
- TNode * anodenode = new TNode(nodename, nodename, "Anode", 0, y, 0) ;
- anodenode->SetLineColor(kColorPHOS) ;
- fNodes->Add(anodenode) ;
- // d. gas
- y = y - geom->GetAnodeThickness() / 2. - ( geom->GetConversionGap() + geom->GetAvalancheGap() ) / 2. ;
- sprintf(nodename, "%s%d%d%d", "GGap", i, iphi, iz) ;
- TNode * ggapnode = new TNode(nodename, nodename, "GasGap", 0, y, 0) ;
- ggapnode->SetLineColor(kColorGas) ;
- fNodes->Add(ggapnode) ;
- // f. cathode
- y = y - ( geom->GetConversionGap() + geom->GetAvalancheGap() ) / 2. - geom->GetCathodeThickness() / 2. ;
- sprintf(nodename, "%s%d%d%d", "Cathode", i, iphi, iz) ;
- TNode * cathodenode = new TNode(nodename, nodename, "Cathode", 0, y, 0) ;
- cathodenode->SetLineColor(kColorPHOS) ;
- fNodes->Add(cathodenode) ;
- // g. printed circuit
- y = y - geom->GetCathodeThickness() / 2. - geom->GetPCThickness() / 2. ;
- sprintf(nodename, "%s%d%d%d", "PC", i, iphi, iz) ;
- TNode * pcnode = new TNode(nodename, nodename, "PCBoard", 0, y, 0) ;
- pcnode->SetLineColor(kColorPPSD) ;
- fNodes->Add(pcnode) ;
- // h. composite panel
- y = y - geom->GetPCThickness() / 2. - geom->GetCompositeThickness() / 2. ;
- sprintf(nodename, "%s%d%d%d", "CompDown", i, iphi, iz) ;
- TNode * compdownnode = new TNode(nodename, nodename, "BottomPanel", 0, y, 0) ;
- compdownnode->SetLineColor(kColorPPSD) ;
- fNodes->Add(compdownnode) ;
- z = z - geom->GetPPSDModuleSize(2) ;
- ppsdboxnode->cd() ;
- } // end of Z module loop
- x = x - geom->GetPPSDModuleSize(0) ;
- ppsdboxnode->cd() ;
- } // end of phi module loop
- }
- // 2. air gap
- ppsdboxnode->cd() ;
- y = ( geom->GetCPVBoxSize(1) - 2 * geom->GetMicromegas1Thickness() - geom->GetMicro1ToLeadGap() ) / 2. ;
- sprintf(nodename, "%s%d", "GapUp", i) ;
- TNode * gapupnode = new TNode(nodename, nodename, "LeadToM", 0, y, 0) ;
- gapupnode->SetLineColor(kColorAir) ;
- fNodes->Add(gapupnode) ;
- // 3. lead converter
- y = y - geom->GetMicro1ToLeadGap() / 2. - geom->GetLeadConverterThickness() / 2. ;
- sprintf(nodename, "%s%d", "LeadC", i) ;
- TNode * leadcnode = new TNode(nodename, nodename, "Lead", 0, y, 0) ;
- leadcnode->SetLineColor(kColorPPSD) ;
- fNodes->Add(leadcnode) ;
- // 4. air gap
- y = y - geom->GetLeadConverterThickness() / 2. - geom->GetLeadToMicro2Gap() / 2. ;
- sprintf(nodename, "%s%d", "GapDown", i) ;
- TNode * gapdownnode = new TNode(nodename, nodename, "MToLead", 0, y, 0) ;
- gapdownnode->SetLineColor(kColorAir) ;
- fNodes->Add(gapdownnode) ;
- // 5. fNumberOfModulesPhi x fNumberOfModulesZ bottom micromegas
- x = ( geom->GetCPVBoxSize(0) - geom->GetPPSDModuleSize(0) ) / 2. - geom->GetPhiDisplacement() ;
- {
- for ( Int_t iphi = 1; iphi <= geom->GetNumberOfModulesPhi(); iphi++ ) {
- Float_t z = ( geom->GetCPVBoxSize(2) - geom->GetPPSDModuleSize(2) ) / 2. - geom->GetZDisplacement() ;;
- TNode * micro2node ;
- for ( Int_t iz = 1; iz <= geom->GetNumberOfModulesZ(); iz++ ) {
- y = - ( geom->GetCPVBoxSize(1) - geom->GetMicromegas2Thickness() ) / 2. ;
- sprintf(nodename, "%s%d%d%d", "Mic2", i, iphi, iz) ;
- micro2node = new TNode(nodename, nodename, "PPSDModule", x, y, z) ;
- micro2node->SetLineColor(kColorPPSD) ;
- fNodes->Add(micro2node) ;
- // inside bottom micromegas
- micro2node->cd() ;
- // a. top lid
- y = ( geom->GetMicromegas2Thickness() - geom->GetLidThickness() ) / 2. ;
- sprintf(nodename, "%s%d", "Lidb", i) ;
- TNode * toplidbnode = new TNode(nodename, nodename, "TopLid", 0, y, 0) ;
- toplidbnode->SetLineColor(kColorPPSD) ;
- fNodes->Add(toplidbnode) ;
- // b. composite panel
- y = y - geom->GetLidThickness() / 2. - geom->GetCompositeThickness() / 2. ;
- sprintf(nodename, "%s%d", "CompUb", i) ;
- TNode * compupbnode = new TNode(nodename, nodename, "TopPanel", 0, y, 0) ;
- compupbnode->SetLineColor(kColorPPSD) ;
- fNodes->Add(compupbnode) ;
- // c. anode
- y = y - geom->GetCompositeThickness() / 2. - geom->GetAnodeThickness() / 2. ;
- sprintf(nodename, "%s%d", "Anob", i) ;
- TNode * anodebnode = new TNode(nodename, nodename, "Anode", 0, y, 0) ;
- anodebnode->SetLineColor(kColorPPSD) ;
- fNodes->Add(anodebnode) ;
- // d. conversion gas
- y = y - geom->GetAnodeThickness() / 2. - ( geom->GetConversionGap() + geom->GetAvalancheGap() ) / 2. ;
- sprintf(nodename, "%s%d", "GGapb", i) ;
- TNode * ggapbnode = new TNode(nodename, nodename, "GasGap", 0, y, 0) ;
- ggapbnode->SetLineColor(kColorGas) ;
- fNodes->Add(ggapbnode) ;
- // f. cathode
- y = y - ( geom->GetConversionGap() + geom->GetAvalancheGap() ) / 2. - geom->GetCathodeThickness() / 2. ;
- sprintf(nodename, "%s%d", "Cathodeb", i) ;
- TNode * cathodebnode = new TNode(nodename, nodename, "Cathode", 0, y, 0) ;
- cathodebnode->SetLineColor(kColorPPSD) ;
- fNodes->Add(cathodebnode) ;
- // g. printed circuit
- y = y - geom->GetCathodeThickness() / 2. - geom->GetPCThickness() / 2. ;
- sprintf(nodename, "%s%d", "PCb", i) ;
- TNode * pcbnode = new TNode(nodename, nodename, "PCBoard", 0, y, 0) ;
- pcbnode->SetLineColor(kColorPPSD) ;
- fNodes->Add(pcbnode) ;
- // h. composite pane
- y = y - geom->GetPCThickness() / 2. - geom->GetCompositeThickness() / 2. ;
- sprintf(nodename, "%s%d", "CompDownb", i) ;
- TNode * compdownbnode = new TNode(nodename, nodename, "BottomPanel", 0, y, 0) ;
- compdownbnode->SetLineColor(kColorPPSD) ;
- fNodes->Add(compdownbnode) ;
- z = z - geom->GetPPSDModuleSize(2) ;
- ppsdboxnode->cd() ;
- } // end of Z module loop
- x = x - geom->GetPPSDModuleSize(0) ;
- ppsdboxnode->cd() ;
- } // end of phi module loop
- }
- } // PHOS modules
-
- delete[] rotname ;
- delete[] nodename ;