Skip to content
Snippets Groups Projects
Commit e4a44e98 authored by matta's avatar matta
Browse files

* Adding missing file for Tigress

parent fd2bb3f7
No related branches found
No related tags found
No related merge requests found
#ifndef Tigress_h
#define Tigress_h 1
/*****************************************************************************
* Copyright (C) 2009-2013 this file is part of the NPTool Project *
* *
* For the licensing terms see $NPTOOL/Licence/NPTool_Licence *
* For the list of contributors see $NPTOOL/Licence/Contributors *
*****************************************************************************/
/*****************************************************************************
* Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk *
* *
* Creation Date : November 2012 *
* Last update : *
*---------------------------------------------------------------------------*
* Decription: *
* This class describe the Tigress Silicon detector *
* *
*---------------------------------------------------------------------------*
* Comment: *
* *
*****************************************************************************/
// C++ header
#include <string>
#include <vector>
// G4 header defining G4 types
#include "globals.hh"
// G4 headers
#include "G4ThreeVector.hh"
#include "G4RotationMatrix.hh"
#include "G4LogicalVolume.hh"
#include "G4VisAttributes.hh"
#include "G4VSolid.hh"
// NPSimulation header
#include "VDetector.hh"
// NPLib
#include "TTigressData.h"
using namespace std;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
namespace TIGRESS
{
// Energy and time Resolution
const G4double ResoTime = 0 ;
const G4double ResoEnergy = 0.035*MeV ;// = zzkeV of Resolution // Unit is MeV/2.35
const G4double EnergyThreshold = 0.4*MeV;
}
using namespace TIGRESS ;
class Tigress : public VDetector
{
////////////////////////////////////////////////////
/////// Default Constructor and Destructor /////////
////////////////////////////////////////////////////
public:
Tigress() ;
~Tigress() ;
////////////////////////////////////////////////////
//////// Specific Function of this Class ///////////
////////////////////////////////////////////////////
public:
// Add clover at the standard position of the array
// Take as argument the standard clover Id.
void AddCloverStandard(vector<int> CloverId);
// Add clover at a free position in space with coordinate
// in spherical coordinate
// Beta are the three angles of rotation in the Clover frame
void AddCloverFreePosition(int CloverId,
double R,
double Theta,
double Phi,
double BetaX,
double BetaY,
double BetaZ);
// Return a clover in the configuration given by option (not use a the moment)
void ConstructClover(string option);
// Return a G4VSolid modeling the Crystal
G4VSolid* ConstructCrystal();
// Return a G4VSolid modeling the Capsule
G4VSolid* ConstructCapsule();
// Return a G4VSolid modeling the BGO
G4VSolid* ConstructBGO();
////////////////////////////////////////////////////
///////// Inherite from VDetector class ///////////
////////////////////////////////////////////////////
public:
// Read stream at Configfile to pick-up parameters of detector (Position,...)
// Called in DetecorConstruction::ReadDetextorConfiguration Method
void ReadConfiguration(string Path) ;
// Construct detector and inialise sensitive part.
// Called After DetecorConstruction::AddDetector Method
void ConstructDetector(G4LogicalVolume* world) ;
// Add Detector branch to the EventTree.
// Called After DetecorConstruction::AddDetector Method
void InitializeRootOutput() ;
// Read sensitive part and fill the Root tree.
// Called at in the EventAction::EndOfEventAvtion
void ReadSensitive(const G4Event* event) ;
////////////////////////////////////////////////////
///////////Event class to store Data////////////////
////////////////////////////////////////////////////
private:
TTigressData* m_Event ;
////////////////////////////////////////////////////
///////////////// Scorer Related ///////////////////
////////////////////////////////////////////////////
private:
// Geometry related
G4LogicalVolume* m_LogicClover;
// Initialize all Scorer
void InitializeScorers() ;
// Scorer Associate to the Silicon
G4MultiFunctionalDetector* m_GermaniumScorer ;
G4MultiFunctionalDetector* m_BGOScorer ;
private:
// Initialize material used in detector definition
void InitializeMaterial();
// List of material
G4Material* m_MaterialSilicon ;
G4Material* m_MaterialAl ;
G4Material* m_MaterialVacuum ;
G4Material* m_MaterialPCB ;
////////////////////////////////////////////////////
///////////////Private intern Data//////////////////
////////////////////////////////////////////////////
private:
// Clover Position
vector<int> m_CloverId;
vector<double> m_R;
vector<double> m_Theta;
vector<double> m_Phi;
vector<double> m_BetaX;
vector<double> m_BetaY;
vector<double> m_BetaZ;
// Frame: true if the frame is to be done
bool m_LeftFrame;
bool m_RightFrame;
// Set to true if you want to see Telescope Frame in your visualisation
bool m_non_sensitive_part_visiualisation ;
private:/// Visualisation Attribute:
G4VisAttributes* BlueVisAtt;
G4VisAttributes* GreenVisAtt;
G4VisAttributes* RedVisAtt;
G4VisAttributes* WhiteVisAtt;
G4VisAttributes* TrGreyVisAtt;
};
#endif
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment