From 158d64f243d40f2368bfcb06d34fc46bcedc4ad6 Mon Sep 17 00:00:00 2001
From: Robert  Shearman <r.shearman@surrey.ac.uk>
Date: Tue, 8 Dec 2015 15:27:02 +0000
Subject: [PATCH] Added extra leaves, added plastic shield

---
 NPSimulation/Nana/Nana.cc | 74 ++++++++++++++++++++++++++++++++++-----
 1 file changed, 65 insertions(+), 9 deletions(-)

diff --git a/NPSimulation/Nana/Nana.cc b/NPSimulation/Nana/Nana.cc
index efe7dc602..46e01412f 100644
--- a/NPSimulation/Nana/Nana.cc
+++ b/NPSimulation/Nana/Nana.cc
@@ -63,7 +63,7 @@ Nana::Nana(){
   m_PMTVisAtt = new G4VisAttributes(G4Colour(0.1, 0.3, 0.5));
 
   // Grey wireframe
-  m_DetectorCasingVisAtt = new G4VisAttributes(G4Colour(0.5, 0.5, 0.5,0.2));
+  m_DetectorCasingVisAtt = new G4VisAttributes(G4Colour(0.125, 0.125, 0.125, 0.4));
 
   m_LogicalDetector = 0;
   m_LaBr3Scorer = 0 ;
@@ -386,12 +386,30 @@ G4LogicalVolume* Nana::ConstructDetector(){
 
     // Visualisation of PMT Strip
     logicPMT->SetVisAttributes(m_PMTVisAtt);
+    
 
-    // Lead shielding
+    /*
+    // Plastic Lead shielding
+    //plastic definition
+    // LaBr3
+    G4int ncomponents, natoms;
+    G4double z, density;
+    G4double percent = .5;
+    G4Element* C  = new G4Element("Carbon","C" , z= 6., 12.0107*g/mole);
+    G4Element* H  = new G4Element("Hydrogen","H" , z= 1.,1.00794*g/mole );
+    G4Element* O  = new G4Element("Oxygen","O" , z= 8., 15.999*g/mole);
+    G4Element* W  = new G4Element("Tungsten","W" , z= 74., 183.84*g/mole);
+
+	density = percent * 4.5*g/cm3;
+    	G4Material* PCA = new G4Material("PCA", density, ncomponents=4);
+    	PCA->AddElement(C, natoms=6);
+    	PCA->AddElement(H, natoms=8);
+	PCA->AddElement(O, natoms=4);
+    	PCA->AddElement(W, natoms=1);
     // A
     G4ThreeVector  positionLeadAShield = G4ThreeVector(0, 0, LeadAShield_PosZ);
     G4Tubs* solidLeadA = new G4Tubs("solidLead", 0.5*LeadAMinR, 0.5*LeadAMaxR, 0.5*LeadALength, 0.*deg, 360.*deg);
-    G4LogicalVolume* logicLeadAShield = new G4LogicalVolume(solidLeadA, Lead, "logicLeadAShield", 0, 0, 0);
+    G4LogicalVolume* logicLeadAShield = new G4LogicalVolume(solidLeadA, PCA, "logicLeadAShield", 0, 0, 0);
 
     new G4PVPlacement(0, 
         positionLeadAShield, 
@@ -403,7 +421,7 @@ G4LogicalVolume* Nana::ConstructDetector(){
     // B
     G4ThreeVector  positionLeadBShield = G4ThreeVector(0, 0, LeadBShield_PosZ);
     G4Tubs*           solidLeadB = new G4Tubs("solidLead", 0.5*LeadBMinR, 0.5*LeadBMaxR, 0.5*LeadBLength, 0.*deg, 360.*deg);
-    G4LogicalVolume* logicLeadBShield = new G4LogicalVolume(solidLeadB, Lead, "logicLeadBShield", 0, 0, 0);
+    G4LogicalVolume* logicLeadBShield = new G4LogicalVolume(solidLeadB, PCA, "logicLeadBShield", 0, 0, 0);
 
     new G4PVPlacement(0, 
         positionLeadBShield, 
@@ -413,11 +431,49 @@ G4LogicalVolume* Nana::ConstructDetector(){
         false, 
         0);
 
+
+
+
     // Visualisation of PMT Strip
     G4VisAttributes* LeadVisAtt = new G4VisAttributes(G4Colour(1., 1., 1.));
     logicLeadAShield->SetVisAttributes(LeadVisAtt);
     logicLeadBShield->SetVisAttributes(LeadVisAtt);
-  }
+    
+
+    */
+    // Lead shielding
+    // A
+    G4ThreeVector  positionLeadAShield = G4ThreeVector(0, 0, LeadAShield_PosZ);
+    G4Tubs* solidLeadA = new G4Tubs("solidLead", 0.5*LeadAMinR, 0.5*LeadAMaxR, 0.5*LeadALength, 0.*deg, 360.*deg);
+    G4LogicalVolume* logicLeadAShield = new G4LogicalVolume(solidLeadA, Lead, "logicLeadAShield", 0, 0, 0);
+
+     new G4PVPlacement(0, 
+        positionLeadAShield, 
+        logicLeadAShield, 
+        "Nana_LeadAShield", 
+        m_LogicalDetector, 
+        false, 
+        0);
+    
+	// B
+    G4ThreeVector  positionLeadBShield = G4ThreeVector(0, 0, LeadBShield_PosZ);
+    G4Tubs*           solidLeadB = new G4Tubs("solidLead", 0.5*LeadBMinR, 0.5*LeadBMaxR, 0.5*LeadBLength, 0.*deg, 360.*deg);
+    G4LogicalVolume* logicLeadBShield = new G4LogicalVolume(solidLeadB, Lead, "logicLeadBShield", 0, 0, 0);
+
+    new G4PVPlacement(0, 
+        positionLeadBShield, 
+        logicLeadBShield, 
+        "Nana_LeadBShield", 
+        m_LogicalDetector, 
+        false, 
+        0);
+    
+    // Visualisation of PMT Strip
+    G4VisAttributes* LeadVisAtt = new G4VisAttributes(G4Colour(.66, .66, .66));
+    logicLeadAShield->SetVisAttributes(LeadVisAtt);
+    logicLeadBShield->SetVisAttributes(LeadVisAtt);
+    
+    }
 
   return m_LogicalDetector;
 }
@@ -451,14 +507,14 @@ void Nana::ReadSensitive(const G4Event* event){
   for (LaBr3_itr = LaBr3HitMap->GetMap()->begin() ; LaBr3_itr != LaBr3HitMap->GetMap()->end() ; LaBr3_itr++){
 
     G4double* Info = *(LaBr3_itr->second);
-
-    double Energy = RandGauss::shoot(Info[0], EnergyResolution);
-
+    //(Info[0]/2.35)*((Info[0]*1.02)*pow((Info[0]*1.8),.5))
+    // double Energy = RandGauss::shoot(Info[0],((Info[0]*1000*1.02/2.35)*pow((Info[0]*1000*1.8),.5)) );
+    double Energy = RandGauss::shoot(Info[0],(Info[0]*0.0325637)/(2.35*pow(Info[0]-0.00975335,0.475759)));
     if(Energy>EnergyThreshold){
       double Time = Info[1];
       int DetectorNbr = (int) Info[2];
 
-      m_Event->SetNanaLaBr3(DetectorNbr,Energy,Energy,(unsigned short) Time,0);
+      m_Event->SetNanaLaBr3(DetectorNbr,Energy,Energy,(unsigned short) Time,0,0);
     }
   }
   // clear map for next event
-- 
GitLab