From ec632d911f8838a5732bd23ad05e19c6579e4a95 Mon Sep 17 00:00:00 2001 From: Peter DeRosa <54421997+MagnusSnowleopard@users.noreply.github.com> Date: Fri, 16 Dec 2022 23:42:15 -0500 Subject: [PATCH] BGO Fully operational --- Analyzer.C | 18 +++-- Analyzer.h | 8 ++ AnalyzerCloveronly.C | 133 ++++++++++++++++++++++++++++++++ AnalyzerCloveronly.h | 100 ++++++++++++++++++++++++ Analyzer_C.d | 89 --------------------- Analyzer_C.so | Bin 81080 -> 0 bytes Analyzer_C_ACLiC_dict_rdict.pcm | Bin 1969 -> 0 bytes CloverDetectorConstruction.cc | 73 ++++++++++++++---- CloverPrimaryGeneratorAction.cc | 6 +- Detector_Parameters.hh | 4 +- 10 files changed, 318 insertions(+), 113 deletions(-) create mode 100644 AnalyzerCloveronly.C create mode 100644 AnalyzerCloveronly.h delete mode 100644 Analyzer_C.d delete mode 100755 Analyzer_C.so delete mode 100644 Analyzer_C_ACLiC_dict_rdict.pcm diff --git a/Analyzer.C b/Analyzer.C index b75e560..1148204 100644 --- a/Analyzer.C +++ b/Analyzer.C @@ -30,6 +30,8 @@ TH1F * hEnergy[64]; TH1F * hAddback[16]; +//if you need to make the energy histograms then just copy how the addback histograms are made. + void Analyzer::Begin(TTree * /*tree*/) { // The Begin() function is called at the start of the query. @@ -39,10 +41,10 @@ void Analyzer::Begin(TTree * /*tree*/) TString option = GetOption(); for( int i = 0; i < 64; i++){ - hEnergy[i] = new TH1F(Form("hE%02d", i), Form("hE%02d", i), 4000, 0, 4000); + hEnergy[i] = new TH1F(Form("hE%02d", i), Form("hE%02d", i), 8000, 0, 8000); if( i < 16 ){ - hAddback[i] = new TH1F(Form("AE%02d",i), Form("AE%02d",i), 4000,0,4000); + hAddback[i] = new TH1F(Form("AE%02d",i), Form("AE%02d",i), 8000,0,8000); } } @@ -79,19 +81,21 @@ Bool_t Analyzer::Process(Long64_t entry) // // The return value is currently not used. b_energy->GetEntry(entry); + b_bgoenergy->GetEntry(entry); double addback[16] ={0}; for(int i =0; i < 64; i++){ - if((*energy)[i] <= 0.) { continue ; } + if((*energy)[i] <= 0.) { continue ; } //Energy threshold Addback selector. /// printf("%2d, %f \n", i, (*energy)[i]); hEnergy[i]->Fill((*energy)[i]); int iclover = i/4; - + + if( entry < 1000 && (*bgoenergy)[iclover] > 10.) printf("%d , %f, %d, %f \n", i, (*energy)[i], iclover,(*bgoenergy)[iclover] ); + if((*bgoenergy)[iclover] <= 0){ addback[iclover] += (*energy)[i]; - // if( entry < 10 ) printf("%d , %f, %d, %f \n", i, (*energy)[i], iclover, addback[iclover]); + } } - for( int i = 0; i < 16; i++){ if(addback[i] <= 0.){continue;} hAddback[i]->Fill(addback[i]); @@ -129,5 +133,5 @@ void Analyzer::Terminate() // a query. It always runs on the client, it can be used to present // the results graphically or save the results to file. - hAddback[14]->Draw(); + hAddback[0]->Draw(); } diff --git a/Analyzer.h b/Analyzer.h index 5b8e982..97a903b 100644 --- a/Analyzer.h +++ b/Analyzer.h @@ -26,6 +26,8 @@ public : Int_t nTraj; vector *energy; vector *stepLength; + vector *bgoenergy; + vector *bgostepLength; Double_t bEnergy; Double_t theta; Double_t phi; @@ -34,6 +36,8 @@ public : TBranch *b_nTraj; //! TBranch *b_energy; //! TBranch *b_stepLength; //! + TBranch *b_bgoenergy; //! + TBranch *b_bgostepLength; //! TBranch *b_bEnergy; //! TBranch *b_theta; //! TBranch *b_phi; //! @@ -73,6 +77,8 @@ void Analyzer::Init(TTree *tree) // Set object pointer energy = 0; stepLength = 0; + bgoenergy = 0; + bgostepLength = 0; // Set branch addresses and branch pointers if (!tree) return; fChain = tree; @@ -81,6 +87,8 @@ void Analyzer::Init(TTree *tree) fChain->SetBranchAddress("nTraj", &nTraj, &b_nTraj); fChain->SetBranchAddress("energy", &energy, &b_energy); fChain->SetBranchAddress("stepLength", &stepLength, &b_stepLength); + fChain->SetBranchAddress("bgoE", &bgoenergy, &b_bgoenergy); + fChain->SetBranchAddress("bgostep", &bgostepLength, &b_bgostepLength); fChain->SetBranchAddress("bEnergy", &bEnergy, &b_bEnergy); fChain->SetBranchAddress("theta", &theta, &b_theta); fChain->SetBranchAddress("phi", &phi, &b_phi); diff --git a/AnalyzerCloveronly.C b/AnalyzerCloveronly.C new file mode 100644 index 0000000..b75e560 --- /dev/null +++ b/AnalyzerCloveronly.C @@ -0,0 +1,133 @@ +#define Analyzer_cxx +// The class definition in Analyzer.h has been generated automatically +// by the ROOT utility TTree::MakeSelector(). This class is derived +// from the ROOT class TSelector. For more information on the TSelector +// framework see $ROOTSYS/README/README.SELECTOR or the ROOT User Manual. + +// The following methods are defined in this file: +// Begin(): called every time a loop on the tree starts, +// a convenient place to create your histograms. +// SlaveBegin(): called after Begin(), when on PROOF called only on the +// slave servers. +// Process(): called for each event, in this function you decide what +// to read and fill your histograms. +// SlaveTerminate: called at the end of the loop on the tree, when on PROOF +// called only on the slave servers. +// Terminate(): called at the end of the loop on the tree, +// a convenient place to draw/fit your histograms. +// +// To use this file, try the following session on your Tree T: +// +// root> T->Process("Analyzer.C") +// root> T->Process("Analyzer.C","some options") +// root> T->Process("Analyzer.C+") +// + +#include "Analyzer.h" +#include +#include + +TH1F * hEnergy[64]; +TH1F * hAddback[16]; + +void Analyzer::Begin(TTree * /*tree*/) +{ + // The Begin() function is called at the start of the query. + // When running with PROOF Begin() is only called on the client. + // The tree argument is deprecated (on PROOF 0 is passed). + + TString option = GetOption(); + + for( int i = 0; i < 64; i++){ + hEnergy[i] = new TH1F(Form("hE%02d", i), Form("hE%02d", i), 4000, 0, 4000); + + if( i < 16 ){ + hAddback[i] = new TH1F(Form("AE%02d",i), Form("AE%02d",i), 4000,0,4000); + } + + } + +} + +void Analyzer::SlaveBegin(TTree * /*tree*/) +{ + // The SlaveBegin() function is called after the Begin() function. + // When running with PROOF SlaveBegin() is called on each slave server. + // The tree argument is deprecated (on PROOF 0 is passed). + + TString option = GetOption(); + +} + +Bool_t Analyzer::Process(Long64_t entry) +{ + // The Process() function is called for each entry in the tree (or possibly + // keyed object in the case of PROOF) to be processed. The entry argument + // specifies which entry in the currently loaded tree is to be processed. + // It can be passed to either Analyzer::GetEntry() or TBranch::GetEntry() + // to read either all or the required parts of the data. When processing + // keyed objects with PROOF, the object is already loaded and is available + // via the fObject pointer. + // + // This function should contain the "body" of the analysis. It can contain + // simple or elaborate selection criteria, run algorithms on the data + // of the event and typically fill histograms. + // + // The processing can be stopped by calling Abort(). + // + // Use fStatus to set the return value of TTree::Process(). + // + // The return value is currently not used. + b_energy->GetEntry(entry); + + double addback[16] ={0}; + for(int i =0; i < 64; i++){ + if((*energy)[i] <= 0.) { continue ; } + /// printf("%2d, %f \n", i, (*energy)[i]); + hEnergy[i]->Fill((*energy)[i]); + + int iclover = i/4; + + addback[iclover] += (*energy)[i]; + // if( entry < 10 ) printf("%d , %f, %d, %f \n", i, (*energy)[i], iclover, addback[iclover]); + } + + for( int i = 0; i < 16; i++){ + if(addback[i] <= 0.){continue;} + hAddback[i]->Fill(addback[i]); + +// if( entry < 10 ) printf("=--==%d, %f \n", i, addback[i]); + + } + + return kTRUE; +} + +void Analyzer::SlaveTerminate() +{ + // The SlaveTerminate() function is called after all entries or objects + // have been processed. When running with PROOF SlaveTerminate() is called + // on each slave server. + +} + +void Analyzer::Terminate() +{ + TFile * out = new TFile("CloverAddback.root","recreate"); + out->cd(); + + for(int j = 0; j< 64; j++){ + + hEnergy[j]->Write(); + + } + for(int k = 0; k< 16; k++){ + hAddback[k]->Write(); + } + out->Close(); + // The Terminate() function is the last function to be called during + // a query. It always runs on the client, it can be used to present + // the results graphically or save the results to file. + + hAddback[14]->Draw(); +} diff --git a/AnalyzerCloveronly.h b/AnalyzerCloveronly.h new file mode 100644 index 0000000..5b8e982 --- /dev/null +++ b/AnalyzerCloveronly.h @@ -0,0 +1,100 @@ +////////////////////////////////////////////////////////// +// This class has been automatically generated on +// Mon Oct 17 14:56:21 2022 by ROOT version 6.26/06 +// from TTree Clover/Edep and TrackL +// found on file: AllCrystal_Co60.root +////////////////////////////////////////////////////////// + +#ifndef Analyzer_h +#define Analyzer_h + +#include +#include +#include +#include + +// Header file for the classes stored in the TTree if any. +#include "vector" + +class Analyzer : public TSelector { +public : + TTree *fChain; //!pointer to the analyzed TTree or TChain + +// Fixed size dimensions of array or collections stored in the TTree if any. + + // Declaration of leaf types + Int_t nTraj; + vector *energy; + vector *stepLength; + Double_t bEnergy; + Double_t theta; + Double_t phi; + + // List of branches + TBranch *b_nTraj; //! + TBranch *b_energy; //! + TBranch *b_stepLength; //! + TBranch *b_bEnergy; //! + TBranch *b_theta; //! + TBranch *b_phi; //! + + Analyzer(TTree * /*tree*/ =0) : fChain(0) { } + virtual ~Analyzer() { } + virtual Int_t Version() const { return 2; } + virtual void Begin(TTree *tree); + virtual void SlaveBegin(TTree *tree); + virtual void Init(TTree *tree); + virtual Bool_t Notify(); + virtual Bool_t Process(Long64_t entry); + virtual Int_t GetEntry(Long64_t entry, Int_t getall = 0) { return fChain ? fChain->GetTree()->GetEntry(entry, getall) : 0; } + virtual void SetOption(const char *option) { fOption = option; } + virtual void SetObject(TObject *obj) { fObject = obj; } + virtual void SetInputList(TList *input) { fInput = input; } + virtual TList *GetOutputList() const { return fOutput; } + virtual void SlaveTerminate(); + virtual void Terminate(); + + ClassDef(Analyzer,0); +}; + +#endif + +#ifdef Analyzer_cxx +void Analyzer::Init(TTree *tree) +{ + // The Init() function is called when the selector needs to initialize + // a new tree or chain. Typically here the branch addresses and branch + // pointers of the tree will be set. + // It is normally not necessary to make changes to the generated + // code, but the routine can be extended by the user if needed. + // Init() will be called many times when running on PROOF + // (once per file to be processed). + + // Set object pointer + energy = 0; + stepLength = 0; + // Set branch addresses and branch pointers + if (!tree) return; + fChain = tree; + fChain->SetMakeClass(1); + + fChain->SetBranchAddress("nTraj", &nTraj, &b_nTraj); + fChain->SetBranchAddress("energy", &energy, &b_energy); + fChain->SetBranchAddress("stepLength", &stepLength, &b_stepLength); + fChain->SetBranchAddress("bEnergy", &bEnergy, &b_bEnergy); + fChain->SetBranchAddress("theta", &theta, &b_theta); + fChain->SetBranchAddress("phi", &phi, &b_phi); +} + +Bool_t Analyzer::Notify() +{ + // The Notify() function is called when a new file is opened. This + // can be either for a new TTree in a TChain or when when a new TTree + // is started when using PROOF. It is normally not necessary to make changes + // to the generated code, but the routine can be extended by the + // user if needed. The return value is currently not used. + + return kTRUE; +} + +#endif // #ifdef Analyzer_cxx diff --git a/Analyzer_C.d b/Analyzer_C.d deleted file mode 100644 index f627443..0000000 --- a/Analyzer_C.d +++ /dev/null @@ -1,89 +0,0 @@ - -# DO NOT DELETE - -./Analyzer_C.so: Analyzer.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TROOT.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TDirectory.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TNamed.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TObject.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/Rtypes.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/RtypesCore.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/ROOT/RConfig.hxx -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/RVersion.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/RConfigure.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/DllImport.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/strtok.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/strlcpy.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/snprintf.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TGenericClassInfo.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TSchemaHelper.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TIsAProxy.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TVirtualIsAProxy.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TStorage.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TVersionCheck.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/RVersion.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TString.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TMathBase.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/ROOT/RStringView.hxx -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/ROOT/TypeTraits.hxx -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TClass.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TDictionary.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/ESTLType.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TObjArray.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TSeqCollection.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TCollection.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TIterator.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TVirtualRWMutex.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TVirtualMutex.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/ROOT/RRangeCast.hxx -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/ROOT/RSpan.hxx -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/ROOT/span.hxx -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TUUID.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TList.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TBuffer.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TDataType.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/Bytes.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/Byteswap.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TChain.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TTree.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/Compression.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/ROOT/TIOFeatures.hxx -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TArrayD.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TArray.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TArrayI.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TAttFill.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TAttLine.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TAttMarker.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TVirtualTreePlayer.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TBranch.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TBranchCacheInfo.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TBits.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TFile.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TDirectoryFile.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TDatime.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TUrl.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/ROOT/RConcurrentHashColl.hxx -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/ROOT/TRWSpinLock.hxx -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/ROOT/TSpinMutex.hxx -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TSelector.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TSelectorList.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/THashList.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TH2.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TH1.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TAxis.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TAttAxis.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TArrayC.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TArrayS.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TArrayF.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/Foption.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/ROOT/EExecutionPolicy.hxx -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TVectorFfwd.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TVectorDfwd.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TFitResultPtr.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TMatrixFBasefwd.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TMatrixDBasefwd.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TStyle.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TAttText.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/TColor.h -./Analyzer_C.so: /usr/local/Cellar/root/6.26.06_1/include/root/RVersion.h /usr/local/Cellar/root/6.26.06_1/include/root/RConfig.h /usr/local/Cellar/root/6.26.06_1/include/root/TClass.h /usr/local/Cellar/root/6.26.06_1/include/root/TDictAttributeMap.h /usr/local/Cellar/root/6.26.06_1/include/root/TInterpreter.h /usr/local/Cellar/root/6.26.06_1/include/root/TROOT.h /usr/local/Cellar/root/6.26.06_1/include/root/TBuffer.h /usr/local/Cellar/root/6.26.06_1/include/root/TMemberInspector.h /usr/local/Cellar/root/6.26.06_1/include/root/TError.h /usr/local/Cellar/root/6.26.06_1/include/root/RtypesImp.h /usr/local/Cellar/root/6.26.06_1/include/root/TIsAProxy.h /usr/local/Cellar/root/6.26.06_1/include/root/TFileMergeInfo.h /usr/local/Cellar/root/6.26.06_1/include/root/TCollectionProxyInfo.h /usr/local/bin/rootcling -Analyzer_C__ROOTBUILDVERSION= 6.26/06 diff --git a/Analyzer_C.so b/Analyzer_C.so deleted file mode 100755 index b6be370a59fbd4aea8694d007defa5f078a343e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81080 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 diff --git a/Analyzer_C_ACLiC_dict_rdict.pcm b/Analyzer_C_ACLiC_dict_rdict.pcm deleted file mode 100644 index b9ebcf93307f4ef340eebc3dec5589ef0b4fd384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1969 zcmXTQ&o5zM_|nI~z>vbgz`hZP6@lytK+FilZ&-jtDiA{eK1ZYML29QCE@)rHmXJ`YP4781bfi=V}Gbc4gKeRZts93)swIsDj-zC31FDE}S zrC8rRH8HQmBrwFOG&3hf-`OWD#5FiXKP0~-F(=+RC%+7+ILO~WB;L)_$2C~rF)uNv zvMRMG-Z|dU*(cLEJ|#1`B)$kl>J=pCGSJ5s23C+C!Tw}m3;}xa4G@F<3iRz+20{TC z0}dxiuzqJyI5GBs^mB&zCuKPn6(v@3#m9$K7Nn-6rWFf2<|!nC#1!(=6!Md@Qj<%H z9T*ry8JNKV%)kWHi3}o<%ys~q{Q@YBWHx(zylY-*E~y4H_kaxMi~>8_9b_<*BdWoC z@$msg`6ccJd3I?FD}MEvj0&2V$bHw@3wuruwwF_ z&u89PTc1Dk?oGSfOUq3s8eAk@5B0gdyr(Zzt(@a__G#Pgyym{M&Y2Imj?U1~wq_K0 z&z|@A#a#JIc6J{v`(M93QPFRBWNRPBm76{N9c#y4_FUs9^CX`&VyJ--5(wsG%VCI-nG5F z7qdlXt&MJXSmU%#-HTESO}$qCm$AB1Jnv&AThB-SPxeJ6FMQXXGpa4iXTR%}RC|q9o!1T}3&wJlF?a!Z-`Jj1%yu(EE(^Xo&c9;78TuZiJ;bywz zh{gY<4E|gdC$E@C#QTW{d(C}n*Lw?Yy9W#J z^f-C@h+JQ?x5Yf?%!FBAD|SuJSsmu?)hAqS(H5I{qv?{v%+lwo=g)^9EUw@&HuiX; zVracNXoGx9-iBChF1-?7;nj_+3@ihl@K!t(w^g5aN^VtfNovNb>rPvFmp0B`vpje@ zZ}Pm!XA=1DO71c;iS>P<<@4qFfyGZOjS6jJ;&+8e%*vke`)Kj?!(YDY&nR26Iy|82 zf;CI!`GqfEKm6IYj_2;h>W7)mFAtu-m{+>CcE0fJ?>hv`B5W7^7f^nFcg4>5`*B-- zUQbHQwD~soMtM}=4f(`#mk!v}s}|j@pZVncq6GWyLsbE~H(uY9+smQ(Z?~lX=V#^DzY$7a`zGeh!=$!38a_&;e$0dKR=m`FindOrBuildMaterial("G4_Al"); + + + //nistManager->FindOrBuildMaterial("G4_Bi4-Ge3-O12"); + + auto a = 208.98*g/mole; + G4Element* bi = new G4Element("Bismuth","Bi",83.,a); + auto b = 72.64*g/mole; + G4Element* ge = new G4Element("Germanium","Ge",32.,b); + auto c = 16.0*g/mole; + G4Element* ox = new G4Element("Oxygen","ox",16.,c); + auto density = 7.13*g/cm3; + G4Material* bgocrystalmaterial = new G4Material("bgocrystalmaterial",density,3); + + bgocrystalmaterial->AddElement(bi, 4); + bgocrystalmaterial->AddElement(ge, 3); + bgocrystalmaterial->AddElement(ox, 12); + + // Ge fCrystalMaterial = nistManager->FindOrBuildMaterial("G4_Ge"); @@ -215,16 +233,25 @@ G4VPhysicalVolume* CloverDetectorConstruction::DefineVolumes() G4VSolid* bgo_u = new G4UnionSolid("bgo2 + bgo3",bgo2,bgo3,bgo3_m,bgo3_v); + + G4Trd* bgoactive = new G4Trd("bgoactive", (bgoXYInner+ bgoXYWallThickness)/2. - bgoanglecut1 - 22*mm ,(bgoXYInner+ bgoXYWallThickness)/2. - bgoanglecut1 + 12*mm + , (bgoXYInner + bgoXYWallThickness)/2. - bgoanglecut1 - 22*mm, (bgoXYInner + bgoXYWallThickness)/2. - bgoanglecut1 +12*mm, zbgo1); //G4Box* bgo2 = new G4Box("bgo2", (bgoXYInner+ bgoXYWallThickness)/2., (bgoXYInner + bgoXYWallThickness)/2., bgoZInner + bgoZWallThickness*2.); + G4Trd* bgo33 = new G4Trd("bgo33", (bgoXYInner+ bgoXYWallThickness)/2. - bgoanglecut0 + bgoanglecut2 - 10*mm,(bgoXYInner+ bgoXYWallThickness)/2. - bgoanglecut1 + , (bgoXYInner + bgoXYWallThickness)/2. - bgoanglecut0 + bgoanglecut2 - 10*mm, (bgoXYInner + bgoXYWallThickness)/2.- bgoanglecut1, zbgo1); - G4Trd* bgowindow = new G4Trd("bgowindow", (bgoXYInner+ bgoXYWallThickness)/2. - bgoanglecut0 ,(bgoXYInner+ bgoXYWallThickness)/2. - bgoanglecut0 +bgoanglecut2 + G4Trd* bgowindow1 = new G4Trd("bgowindow1", (bgoXYInner+ bgoXYWallThickness)/2. - bgoanglecut0 ,(bgoXYInner+ bgoXYWallThickness)/2. - bgoanglecut0 +bgoanglecut2 , (bgoXYInner + bgoXYWallThickness)/2. - bgoanglecut0, (bgoXYInner + bgoXYWallThickness)/2. -bgoanglecut0 +bgoanglecut2, zbgo2/2); + G4Box* bgo11 = new G4Box("bgo11", bgoXYInner/2. - 10*mm, bgoXYInner/2.-10*mm, bgoZInner +zbgo1); + G4SubtractionSolid * bgowindow = new G4SubtractionSolid("bgowindow",bgowindow1,bgo11); + G4SubtractionSolid * bgoSH= new G4SubtractionSolid("bgoSH", bgo_u, bgo1); - G4SubtractionSolid * bgo = new G4SubtractionSolid("bgo", bgo_u, bgo1); + G4SubtractionSolid * bgo = new G4SubtractionSolid("bgo", bgoactive, bgo33); + //G4SubtractionSolid * bgoSH= new G4SubtractionSolid("bgoSH", bgoSH0, bgo); // creating the subtraction solid that will form the actual bgo sheild. @@ -246,7 +273,7 @@ G4VPhysicalVolume* CloverDetectorConstruction::DefineVolumes() auto caseLV = new G4LogicalVolume * [fNumOfCrystal/4]; -// fLogicBGO = new G4LogicalVolume * [fNumOfCrystal/4]; + auto bgoshieldLV = new G4LogicalVolume * [fNumOfCrystal/4]; auto bgowindowLV = new G4LogicalVolume * [fNumOfCrystal/4]; fLogicCrystal[i]->SetVisAttributes(crystalVisAtt); @@ -271,13 +298,15 @@ G4VPhysicalVolume* CloverDetectorConstruction::DefineVolumes() G4ThreeVector case_pos = G4ThreeVector(0,0,88*mm+crystalZPos); //The crystalZpos is the radius of the detector, //bgo uses an identical rotation matrix as the case, //you can also add in zmod if you want to shift the shielding. - G4ThreeVector bgo_pos = G4ThreeVector(0,0,115*mm+crystalZPos); + G4ThreeVector bgoS_pos = G4ThreeVector(0,0,115*mm+crystalZPos); + G4ThreeVector bgoA_pos = G4ThreeVector(0,0,115*mm+crystalZPos - 80*mm); G4ThreeVector bgowindow_pos = G4ThreeVector(0,0,-63*mm + crystalZPos); //Set rotation matrix settings for clovers. G4RotationMatrix * bgowindowmat = new G4RotationMatrix(); - G4RotationMatrix * bgomat = new G4RotationMatrix(); + G4RotationMatrix * bgoSmat = new G4RotationMatrix(); + G4RotationMatrix * bgoAmat = new G4RotationMatrix(); G4RotationMatrix * rotmat = new G4RotationMatrix(); G4RotationMatrix * crystalmat= new G4RotationMatrix(); @@ -291,9 +320,12 @@ G4VPhysicalVolume* CloverDetectorConstruction::DefineVolumes() bgowindowmat->rotateZ(-dPsi*degree); bgowindowmat->rotateX(-dTheta*degree); - bgomat->rotateZ(-dPsi*degree); - bgomat->rotateX(-dTheta*degree); + bgoSmat->rotateZ(-dPsi*degree); + bgoSmat->rotateX(-dTheta*degree); + bgoAmat->rotateZ(-dPsi*degree); + bgoAmat->rotateX(-dTheta*degree); + rotmat->rotateZ(-dPsi*degree); rotmat->rotateX(-dTheta*degree); @@ -308,9 +340,12 @@ G4VPhysicalVolume* CloverDetectorConstruction::DefineVolumes() case_pos.rotateX(dTheta *degree); case_pos.rotateZ(dPsi*degree); - bgo_pos.rotateX(dTheta *degree); - bgo_pos.rotateZ(dPsi*degree); + bgoA_pos.rotateX(dTheta *degree); + bgoA_pos.rotateZ(dPsi*degree); + bgoS_pos.rotateX(dTheta *degree); + bgoS_pos.rotateZ(dPsi*degree); + bgowindow_pos.rotateX(dTheta *degree); bgowindow_pos.rotateZ(dPsi*degree); } @@ -327,8 +362,10 @@ G4VPhysicalVolume* CloverDetectorConstruction::DefineVolumes() if( jCrystal == 0 ) { caseLV[iClover] = new G4LogicalVolume(casing, G4Material::GetMaterial("G4_Al"), "Case"); - fLogicBGO[iClover] = new G4LogicalVolume(bgo , G4Material::GetMaterial("G4_Al"), "BGOLV"); + fLogicBGO[iClover] = new G4LogicalVolume(bgo , G4Material::GetMaterial("G4_Ge"), "BGOLV"); + //fLogicBGO[iClover] = new G4LogicalVolume(bgo , bgocrystalmaterial, "BGOLV"); bgowindowLV[iClover] = new G4LogicalVolume(bgowindow, G4Material::GetMaterial("G4_Al"), "BGO WINDOW "); + bgoshieldLV[iClover] = new G4LogicalVolume(bgoSH, G4Material::GetMaterial("G4_Al"), "BGO SHIELD "); new G4PVPlacement( rotmat , // case orientation case_pos, // case location @@ -339,8 +376,8 @@ G4VPhysicalVolume* CloverDetectorConstruction::DefineVolumes() iClover, // copy number fCheckOverlaps); // checking overlaps - new G4PVPlacement( bgomat , // bgo orientation - bgo_pos, // bgo location + new G4PVPlacement( bgoAmat , // bgo orientation + bgoA_pos, // bgo location fLogicBGO[i/4], // its logical volume "BGO", // its name worldLV, // its mother volume @@ -348,6 +385,15 @@ G4VPhysicalVolume* CloverDetectorConstruction::DefineVolumes() iClover, // copy number fCheckOverlaps); // checking overlaps + new G4PVPlacement( bgoSmat , // bgo orientation + bgoS_pos, // bgo location + bgoshieldLV[i/4], // its logical volume + "BGO SHIELD", // its name + worldLV, // its mother volume + false, // no boolean operation + iClover, // copy number + fCheckOverlaps); // checking overlaps + new G4PVPlacement( bgowindowmat , // bgo orientation bgowindow_pos, // bgo location bgowindowLV[i/4], // its logical volume @@ -358,8 +404,9 @@ G4VPhysicalVolume* CloverDetectorConstruction::DefineVolumes() fCheckOverlaps); // checking overlaps caseLV[iClover]->SetVisAttributes(new G4VisAttributes(G4Colour(1.0,1.0,0.0))); - fLogicBGO[iClover]->SetVisAttributes(new G4VisAttributes(G4Colour(0.,1.0,0.0))); + fLogicBGO[iClover]->SetVisAttributes(new G4VisAttributes(G4Colour(1.0,0.0,0.0))); bgowindowLV[iClover]->SetVisAttributes(new G4VisAttributes(G4Colour(0.0,1.0,1.0))); + bgoshieldLV[iClover]->SetVisAttributes(new G4VisAttributes(G4Colour(0.0,1.0,0.0))); } //Set a i+1%4 for each // diff --git a/CloverPrimaryGeneratorAction.cc b/CloverPrimaryGeneratorAction.cc index 7d3c572..cfe1cfc 100644 --- a/CloverPrimaryGeneratorAction.cc +++ b/CloverPrimaryGeneratorAction.cc @@ -43,9 +43,11 @@ CloverPrimaryGeneratorAction::CloverPrimaryGeneratorAction() //Co60 - fEnergyList = {{1.173,99.973}, - {1.332,99.986}}; + //fEnergyList = {{1.173,99.973}, + // {1.332,99.986}}; + fEnergyList = {{4.173,99.973}, + {4.332,99.986}}; //N16 iso /* fEnergyList = {{0.120, 100}, //energy, branch diff --git a/Detector_Parameters.hh b/Detector_Parameters.hh index 2aa8b7e..f1e918c 100644 --- a/Detector_Parameters.hh +++ b/Detector_Parameters.hh @@ -17,7 +17,7 @@ const double Radius = 200.; //Z POSITION-- radius away from target, in milimeter // const double Clover_Location[Crystal_Num/4][4] = {{0,131.75,326.96,0.}, - + {1,150.,243.57,0.}, {2,90.0,257.14,0.}, {3,90.0,205.71,0.}, @@ -33,7 +33,7 @@ const double Clover_Location[Crystal_Num/4][4] = {{0,131.75,326.96,0.}, {13,48.25,180.,0.}, {14,129.,180.,0.}, {15,48.25,107.35,0.} - + };//,