diff --git a/Inputs/DetectorConfiguration/sharc.detector b/Inputs/DetectorConfiguration/sharc.detector index 3d176264401e2b57083ad0cdbddb1b46ec4a07bf..45541fea70a76832652bc5a8156935bc69333ddf 100644 --- a/Inputs/DetectorConfiguration/sharc.detector +++ b/Inputs/DetectorConfiguration/sharc.detector @@ -14,22 +14,22 @@ Target Sharc %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Upstream CD - SharcQQQ + %SharcQQQ Z= -100 R= 0 Phi= 0 ThicknessDector= 100 - SharcQQQ + %SharcQQQ Z= -100 R= 0 Phi= 90 ThicknessDector= 100 - SharcQQQ + %SharcQQQ Z= -100 R= 0 Phi= 180 ThicknessDector= 100 - SharcQQQ + %SharcQQQ Z= -100 R= 0 Phi= 270 @@ -38,7 +38,7 @@ Sharc % Upstream Box SharcBOX Z= -40 - ThicknessDector1= 0 + ThicknessDector1= 100 ThicknessDector2= 100 ThicknessDector3= 100 ThicknessDector4= 100 @@ -48,7 +48,7 @@ Sharc ThicknessPAD4= 0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Down Stream Box - SharcBOX + %SharcBOX Z= 40 ThicknessDector1= 100 ThicknessDector2= 100 @@ -60,22 +60,22 @@ Sharc ThicknessPAD4= 1000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Downstream CD - SharcQQQ + %SharcQQQ Z= 100 R= 0 Phi= 0 ThicknessDector= 100 - SharcQQQ + %SharcQQQ Z= 100 R= 0 Phi= 90 ThicknessDector= 100 - SharcQQQ + %SharcQQQ Z= 100 R= 0 Phi= 180 ThicknessDector= 100 - SharcQQQ + %SharcQQQ Z= 100 R= 0 Phi= 270 diff --git a/NPLib/Sharc/Makefile b/NPLib/Sharc/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..403a56ae7f7cf08f43984604ace1e29c199f867f --- /dev/null +++ b/NPLib/Sharc/Makefile @@ -0,0 +1,43 @@ +include ../Makefile.arch + +#------------------------------------------------------------------------------ +SHARELIB = libSharcData.so +#libSharcPhysics.so + +all: $(SHARELIB) +#------------------------------------------------------------------------------ +############### Detector ############## + +## Sharc ## +libSharcData.so: TSharcData.o TSharcDataDict.o + $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ + +TSharcDataDict.cxx: TSharcData.h + rootcint -f $@ -c $^ + +#libSharcPhysics.so: TSharcPhysics.o TSharcPhysicsDict.o +# $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ + +#TSharcPhysicsDict.cxx: TSharcPhysics.h +# rootcint -f $@ -c $^ + +# dependances +TSharcData.o: TSharcData.cxx TSharcData.h +#TSharcPhysics.o: TSharcPhysics.cxx TSharcPhysics.h +####################################### + +############# Clean and More ########## +clean: + @rm -f core *~ *.o *Dict* + +distclean: + make clean; rm -f *.so + +.SUFFIXES: .$(SrcSuf) + +### + +.$(SrcSuf).$(ObjSuf): + $(CXX) $(CXXFLAGS) $(INCLUDE) -c $< + + diff --git a/NPLib/Sharc/TSharcData.cxx b/NPLib/Sharc/TSharcData.cxx new file mode 100644 index 0000000000000000000000000000000000000000..c57d9b2e5fe28e5658da3052697f5b578ab62bac --- /dev/null +++ b/NPLib/Sharc/TSharcData.cxx @@ -0,0 +1,75 @@ +/***************************************************************************** + * Copyright (C) 2009-2010 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: matta@ipno.in2p3.fr * + * * + * Creation Date : febuary 2009 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class hold Sharc Raw data * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include <iostream> +using namespace std; + +#include "TSharcData.h" + +ClassImp(TSharcData) + +///////////////////////// +TSharcData::TSharcData() +{ + // Default constructor + Clear(); +} + +///////////////////////// +TSharcData::~TSharcData() +{ + Clear(); +} + +///////////////////////// +void TSharcData::Clear() +{ + fSharc_StripFront_DetectorNbr.clear(); + fSharc_StripFront_StripNbr.clear(); + fSharc_StripFront_Energy.clear(); + fSharc_StripFront_Time.clear(); + + fSharc_StripBack_DetectorNbr.clear(); + fSharc_StripBack_StripNbr.clear(); + fSharc_StripBack_Energy.clear(); + fSharc_StripBack_Time.clear(); +} + +///////////////////////// +void TSharcData::Dump() const +{ + // Energy + cout << "Sharc_StripFront_Mult = " << fSharc_StripFront_DetectorNbr.size() << endl; + + // Front + for (UShort_t i = 0; i < fSharc_StripFront_DetectorNbr.size(); i++){ + cout << "DetNbr: " << fSharc_StripFront_DetectorNbr[i] + << " Strip: " << fSharc_StripFront_StripNbr[i] + << " Energy: " << fSharc_StripFront_Energy[i] << endl; + } + + // Back + for (UShort_t i = 0; i < fSharc_StripFront_DetectorNbr.size(); i++){ + cout << "DetNbr: " << fSharc_StripFront_DetectorNbr[i] + << " Strip: " << fSharc_StripFront_StripNbr[i] + << " Energy: " << fSharc_StripFront_Energy[i] << endl; + } +} \ No newline at end of file diff --git a/NPLib/Sharc/TSharcData.h b/NPLib/Sharc/TSharcData.h new file mode 100644 index 0000000000000000000000000000000000000000..a0ac1063d86daab03189b89b94e0539a4292a5de --- /dev/null +++ b/NPLib/Sharc/TSharcData.h @@ -0,0 +1,75 @@ +#ifndef __SharcDATA__ +#define __SharcDATA__ +/***************************************************************************** + * Copyright (C) 2009-2010 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 hold the Sharc Silicon array raw data (Made for TIG64 card) * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include <vector> +#include "TObject.h" +using namespace std ; + +class TSharcData : public TObject { +private: + // Sharc + // Energy + vector<UShort_t> fSharc_StripFront_DetectorNbr; + vector<UShort_t> fSharc_StripFront_StripNbr; + vector<Double_t> fSharc_StripFront_Energy; + vector<Double_t> fSharc_StripFront_Time; + + vector<UShort_t> fSharc_StripBack_DetectorNbr; + vector<UShort_t> fSharc_StripBack_StripNbr; + vector<Double_t> fSharc_StripBack_Energy; + vector<Double_t> fSharc_StripBack_Time; + +public: + TSharcData(); + virtual ~TSharcData(); + + void Clear(); + void Clear(const Option_t*) {}; + void Dump() const; + + ///////////////////// SETTERS //////////////////////// + void SetFrontE_DetectorNbr(UShort_t DetNbr){fSharc_StripFront_DetectorNbr.push_back(DetNbr);} + void SetFrontE_StripNbr(UShort_t StripNbr){fSharc_StripFront_StripNbr.push_back(StripNbr);} + void SetFrontE_Energy(Double_t Energy){fSharc_StripFront_Energy.push_back(Energy);} + void SetFrontE_Time(Double_t Time){fSharc_StripFront_Time.push_back(Time);} + + void SetBackE_DetectorNbr(UShort_t DetNbr){fSharc_StripBack_DetectorNbr.push_back(DetNbr);} + void SetBackE_StripNbr(UShort_t StripNbr){fSharc_StripBack_StripNbr.push_back(StripNbr);} + void SetBackE_Energy(Double_t Energy){fSharc_StripBack_Energy.push_back(Energy);} + void SetBackE_Time(Double_t Time){fSharc_StripBack_Time.push_back(Time);} + + ///////////////////// GETTERS //////////////////////// + UShort_t GetFrontE_DetectorNbr(unsigned int i){return fSharc_StripFront_DetectorNbr[i];} + UShort_t GetFrontE_StripNbr(unsigned int i) {return fSharc_StripFront_StripNbr[i];} + Double_t GetFrontE_Energy(unsigned int i) {return fSharc_StripFront_Energy[i];} + Double_t GetFrontE_Time(unsigned int i) {return fSharc_StripFront_Time[i];} + + UShort_t GetBackE_DetectorNbr(unsigned int i) {return fSharc_StripFront_DetectorNbr[i];} + UShort_t GetBackE_StripNbr(unsigned int i) {return fSharc_StripFront_StripNbr[i];} + Double_t GetBackE_Energy(unsigned int i) {return fSharc_StripFront_Energy[i];} + Double_t GetBackE_Time(unsigned int i) {return fSharc_StripFront_Time[i];} + + ClassDef(TSharcData,1) // SharcData structure +}; + +#endif diff --git a/NPLib/Sharc/TSharcDataDict.cxx b/NPLib/Sharc/TSharcDataDict.cxx new file mode 100644 index 0000000000000000000000000000000000000000..27df52633e0506377ff93686f079f624dd2a439e --- /dev/null +++ b/NPLib/Sharc/TSharcDataDict.cxx @@ -0,0 +1,1090 @@ +// +// File generated by rootcint at Sat Nov 17 13:59:38 2012 + +// Do NOT change. Changes will be lost next time file is generated +// + +#define R__DICTIONARY_FILENAME TSharcDataDict +#include "RConfig.h" //rootcint 4834 +#if !defined(R__ACCESS_IN_SYMBOL) +//Break the privacy of classes -- Disabled for the moment +#define private public +#define protected public +#endif + +// Since CINT ignores the std namespace, we need to do so in this file. +namespace std {} using namespace std; +#include "TSharcDataDict.h" + +#include "TCollectionProxyInfo.h" +#include "TClass.h" +#include "TBuffer.h" +#include "TMemberInspector.h" +#include "TError.h" + +#ifndef G__ROOT +#define G__ROOT +#endif + +#include "RtypesImp.h" +#include "TIsAProxy.h" +#include "TFileMergeInfo.h" + +// START OF SHADOWS + +namespace ROOT { + namespace Shadow { + } // of namespace Shadow +} // of namespace ROOT +// END OF SHADOWS + +namespace ROOT { + void TSharcData_ShowMembers(void *obj, TMemberInspector &R__insp); + static void *new_TSharcData(void *p = 0); + static void *newArray_TSharcData(Long_t size, void *p); + static void delete_TSharcData(void *p); + static void deleteArray_TSharcData(void *p); + static void destruct_TSharcData(void *p); + static void streamer_TSharcData(TBuffer &buf, void *obj); + + // Function generating the singleton type initializer + static TGenericClassInfo *GenerateInitInstanceLocal(const ::TSharcData*) + { + ::TSharcData *ptr = 0; + static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TSharcData >(0); + static ::ROOT::TGenericClassInfo + instance("TSharcData", ::TSharcData::Class_Version(), "./TSharcData.h", 28, + typeid(::TSharcData), DefineBehavior(ptr, ptr), + &::TSharcData::Dictionary, isa_proxy, 0, + sizeof(::TSharcData) ); + instance.SetNew(&new_TSharcData); + instance.SetNewArray(&newArray_TSharcData); + instance.SetDelete(&delete_TSharcData); + instance.SetDeleteArray(&deleteArray_TSharcData); + instance.SetDestructor(&destruct_TSharcData); + instance.SetStreamerFunc(&streamer_TSharcData); + return &instance; + } + TGenericClassInfo *GenerateInitInstance(const ::TSharcData*) + { + return GenerateInitInstanceLocal((::TSharcData*)0); + } + // Static variable to force the class initialization + static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TSharcData*)0x0); R__UseDummy(_R__UNIQUE_(Init)); +} // end of namespace ROOT + +//______________________________________________________________________________ +TClass *TSharcData::fgIsA = 0; // static to hold class pointer + +//______________________________________________________________________________ +const char *TSharcData::Class_Name() +{ + return "TSharcData"; +} + +//______________________________________________________________________________ +const char *TSharcData::ImplFileName() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TSharcData*)0x0)->GetImplFileName(); +} + +//______________________________________________________________________________ +int TSharcData::ImplFileLine() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TSharcData*)0x0)->GetImplFileLine(); +} + +//______________________________________________________________________________ +void TSharcData::Dictionary() +{ + fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TSharcData*)0x0)->GetClass(); +} + +//______________________________________________________________________________ +TClass *TSharcData::Class() +{ + if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TSharcData*)0x0)->GetClass(); + return fgIsA; +} + +//______________________________________________________________________________ +void TSharcData::Streamer(TBuffer &R__b) +{ + // Stream an object of class TSharcData. + + UInt_t R__s, R__c; + if (R__b.IsReading()) { + Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { } + TObject::Streamer(R__b); + { + vector<UShort_t> &R__stl = fSharc_StripFront_DetectorNbr; + R__stl.clear(); + int R__i, R__n; + R__b >> R__n; + R__stl.reserve(R__n); + for (R__i = 0; R__i < R__n; R__i++) { + unsigned short R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<UShort_t> &R__stl = fSharc_StripFront_StripNbr; + R__stl.clear(); + int R__i, R__n; + R__b >> R__n; + R__stl.reserve(R__n); + for (R__i = 0; R__i < R__n; R__i++) { + unsigned short R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<Double_t> &R__stl = fSharc_StripFront_Energy; + R__stl.clear(); + int R__i, R__n; + R__b >> R__n; + R__stl.reserve(R__n); + for (R__i = 0; R__i < R__n; R__i++) { + double R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<Double_t> &R__stl = fSharc_StripFront_Time; + R__stl.clear(); + int R__i, R__n; + R__b >> R__n; + R__stl.reserve(R__n); + for (R__i = 0; R__i < R__n; R__i++) { + double R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<UShort_t> &R__stl = fSharc_StripBack_DetectorNbr; + R__stl.clear(); + int R__i, R__n; + R__b >> R__n; + R__stl.reserve(R__n); + for (R__i = 0; R__i < R__n; R__i++) { + unsigned short R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<UShort_t> &R__stl = fSharc_StripBack_StripNbr; + R__stl.clear(); + int R__i, R__n; + R__b >> R__n; + R__stl.reserve(R__n); + for (R__i = 0; R__i < R__n; R__i++) { + unsigned short R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<Double_t> &R__stl = fSharc_StripBack_Energy; + R__stl.clear(); + int R__i, R__n; + R__b >> R__n; + R__stl.reserve(R__n); + for (R__i = 0; R__i < R__n; R__i++) { + double R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<Double_t> &R__stl = fSharc_StripBack_Time; + R__stl.clear(); + int R__i, R__n; + R__b >> R__n; + R__stl.reserve(R__n); + for (R__i = 0; R__i < R__n; R__i++) { + double R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + R__b.CheckByteCount(R__s, R__c, TSharcData::IsA()); + } else { + R__c = R__b.WriteVersion(TSharcData::IsA(), kTRUE); + TObject::Streamer(R__b); + { + vector<UShort_t> &R__stl = fSharc_StripFront_DetectorNbr; + int R__n=(&R__stl) ? int(R__stl.size()) : 0; + R__b << R__n; + if(R__n) { + vector<UShort_t>::iterator R__k; + for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) { + R__b << (*R__k); + } + } + } + { + vector<UShort_t> &R__stl = fSharc_StripFront_StripNbr; + int R__n=(&R__stl) ? int(R__stl.size()) : 0; + R__b << R__n; + if(R__n) { + vector<UShort_t>::iterator R__k; + for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) { + R__b << (*R__k); + } + } + } + { + vector<Double_t> &R__stl = fSharc_StripFront_Energy; + int R__n=(&R__stl) ? int(R__stl.size()) : 0; + R__b << R__n; + if(R__n) { + vector<Double_t>::iterator R__k; + for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) { + R__b << (*R__k); + } + } + } + { + vector<Double_t> &R__stl = fSharc_StripFront_Time; + int R__n=(&R__stl) ? int(R__stl.size()) : 0; + R__b << R__n; + if(R__n) { + vector<Double_t>::iterator R__k; + for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) { + R__b << (*R__k); + } + } + } + { + vector<UShort_t> &R__stl = fSharc_StripBack_DetectorNbr; + int R__n=(&R__stl) ? int(R__stl.size()) : 0; + R__b << R__n; + if(R__n) { + vector<UShort_t>::iterator R__k; + for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) { + R__b << (*R__k); + } + } + } + { + vector<UShort_t> &R__stl = fSharc_StripBack_StripNbr; + int R__n=(&R__stl) ? int(R__stl.size()) : 0; + R__b << R__n; + if(R__n) { + vector<UShort_t>::iterator R__k; + for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) { + R__b << (*R__k); + } + } + } + { + vector<Double_t> &R__stl = fSharc_StripBack_Energy; + int R__n=(&R__stl) ? int(R__stl.size()) : 0; + R__b << R__n; + if(R__n) { + vector<Double_t>::iterator R__k; + for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) { + R__b << (*R__k); + } + } + } + { + vector<Double_t> &R__stl = fSharc_StripBack_Time; + int R__n=(&R__stl) ? int(R__stl.size()) : 0; + R__b << R__n; + if(R__n) { + vector<Double_t>::iterator R__k; + for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) { + R__b << (*R__k); + } + } + } + R__b.SetByteCount(R__c, kTRUE); + } +} + +//______________________________________________________________________________ +void TSharcData::ShowMembers(TMemberInspector &R__insp) +{ + // Inspect the data members of an object of class TSharcData. + TClass *R__cl = ::TSharcData::IsA(); + if (R__cl || R__insp.IsA()) { } + R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripFront_DetectorNbr", (void*)&fSharc_StripFront_DetectorNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fSharc_StripFront_DetectorNbr, "fSharc_StripFront_DetectorNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripFront_StripNbr", (void*)&fSharc_StripFront_StripNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fSharc_StripFront_StripNbr, "fSharc_StripFront_StripNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripFront_Energy", (void*)&fSharc_StripFront_Energy); + R__insp.InspectMember("vector<Double_t>", (void*)&fSharc_StripFront_Energy, "fSharc_StripFront_Energy.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripFront_Time", (void*)&fSharc_StripFront_Time); + R__insp.InspectMember("vector<Double_t>", (void*)&fSharc_StripFront_Time, "fSharc_StripFront_Time.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripBack_DetectorNbr", (void*)&fSharc_StripBack_DetectorNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fSharc_StripBack_DetectorNbr, "fSharc_StripBack_DetectorNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripBack_StripNbr", (void*)&fSharc_StripBack_StripNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fSharc_StripBack_StripNbr, "fSharc_StripBack_StripNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripBack_Energy", (void*)&fSharc_StripBack_Energy); + R__insp.InspectMember("vector<Double_t>", (void*)&fSharc_StripBack_Energy, "fSharc_StripBack_Energy.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripBack_Time", (void*)&fSharc_StripBack_Time); + R__insp.InspectMember("vector<Double_t>", (void*)&fSharc_StripBack_Time, "fSharc_StripBack_Time.", false); + TObject::ShowMembers(R__insp); +} + +namespace ROOT { + // Wrappers around operator new + static void *new_TSharcData(void *p) { + return p ? new(p) ::TSharcData : new ::TSharcData; + } + static void *newArray_TSharcData(Long_t nElements, void *p) { + return p ? new(p) ::TSharcData[nElements] : new ::TSharcData[nElements]; + } + // Wrapper around operator delete + static void delete_TSharcData(void *p) { + delete ((::TSharcData*)p); + } + static void deleteArray_TSharcData(void *p) { + delete [] ((::TSharcData*)p); + } + static void destruct_TSharcData(void *p) { + typedef ::TSharcData current_t; + ((current_t*)p)->~current_t(); + } + // Wrapper around a custom streamer member function. + static void streamer_TSharcData(TBuffer &buf, void *obj) { + ((::TSharcData*)obj)->::TSharcData::Streamer(buf); + } +} // end of namespace ROOT for class ::TSharcData + +namespace ROOT { + void vectorlEdoublegR_ShowMembers(void *obj, TMemberInspector &R__insp); + static void vectorlEdoublegR_Dictionary(); + static void *new_vectorlEdoublegR(void *p = 0); + static void *newArray_vectorlEdoublegR(Long_t size, void *p); + static void delete_vectorlEdoublegR(void *p); + static void deleteArray_vectorlEdoublegR(void *p); + static void destruct_vectorlEdoublegR(void *p); + + // Function generating the singleton type initializer + static TGenericClassInfo *GenerateInitInstanceLocal(const vector<double>*) + { + vector<double> *ptr = 0; + static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(typeid(vector<double>),0); + static ::ROOT::TGenericClassInfo + instance("vector<double>", -2, "vector.dll", 0, + typeid(vector<double>), DefineBehavior(ptr, ptr), + 0, &vectorlEdoublegR_Dictionary, isa_proxy, 0, + sizeof(vector<double>) ); + instance.SetNew(&new_vectorlEdoublegR); + instance.SetNewArray(&newArray_vectorlEdoublegR); + instance.SetDelete(&delete_vectorlEdoublegR); + instance.SetDeleteArray(&deleteArray_vectorlEdoublegR); + instance.SetDestructor(&destruct_vectorlEdoublegR); + instance.AdoptCollectionProxyInfo(TCollectionProxyInfo::Generate(TCollectionProxyInfo::Pushback< vector<double> >())); + return &instance; + } + // Static variable to force the class initialization + static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const vector<double>*)0x0); R__UseDummy(_R__UNIQUE_(Init)); + + // Dictionary for non-ClassDef classes + static void vectorlEdoublegR_Dictionary() { + ::ROOT::GenerateInitInstanceLocal((const vector<double>*)0x0)->GetClass(); + } + +} // end of namespace ROOT + +namespace ROOT { + // Wrappers around operator new + static void *new_vectorlEdoublegR(void *p) { + return p ? ::new((::ROOT::TOperatorNewHelper*)p) vector<double> : new vector<double>; + } + static void *newArray_vectorlEdoublegR(Long_t nElements, void *p) { + return p ? ::new((::ROOT::TOperatorNewHelper*)p) vector<double>[nElements] : new vector<double>[nElements]; + } + // Wrapper around operator delete + static void delete_vectorlEdoublegR(void *p) { + delete ((vector<double>*)p); + } + static void deleteArray_vectorlEdoublegR(void *p) { + delete [] ((vector<double>*)p); + } + static void destruct_vectorlEdoublegR(void *p) { + typedef vector<double> current_t; + ((current_t*)p)->~current_t(); + } +} // end of namespace ROOT for class vector<double> + +namespace ROOT { + void vectorlEunsignedsPshortgR_ShowMembers(void *obj, TMemberInspector &R__insp); + static void vectorlEunsignedsPshortgR_Dictionary(); + static void *new_vectorlEunsignedsPshortgR(void *p = 0); + static void *newArray_vectorlEunsignedsPshortgR(Long_t size, void *p); + static void delete_vectorlEunsignedsPshortgR(void *p); + static void deleteArray_vectorlEunsignedsPshortgR(void *p); + static void destruct_vectorlEunsignedsPshortgR(void *p); + + // Function generating the singleton type initializer + static TGenericClassInfo *GenerateInitInstanceLocal(const vector<unsigned short>*) + { + vector<unsigned short> *ptr = 0; + static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(typeid(vector<unsigned short>),0); + static ::ROOT::TGenericClassInfo + instance("vector<unsigned short>", -2, "vector.dll", 0, + typeid(vector<unsigned short>), DefineBehavior(ptr, ptr), + 0, &vectorlEunsignedsPshortgR_Dictionary, isa_proxy, 0, + sizeof(vector<unsigned short>) ); + instance.SetNew(&new_vectorlEunsignedsPshortgR); + instance.SetNewArray(&newArray_vectorlEunsignedsPshortgR); + instance.SetDelete(&delete_vectorlEunsignedsPshortgR); + instance.SetDeleteArray(&deleteArray_vectorlEunsignedsPshortgR); + instance.SetDestructor(&destruct_vectorlEunsignedsPshortgR); + instance.AdoptCollectionProxyInfo(TCollectionProxyInfo::Generate(TCollectionProxyInfo::Pushback< vector<unsigned short> >())); + return &instance; + } + // Static variable to force the class initialization + static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const vector<unsigned short>*)0x0); R__UseDummy(_R__UNIQUE_(Init)); + + // Dictionary for non-ClassDef classes + static void vectorlEunsignedsPshortgR_Dictionary() { + ::ROOT::GenerateInitInstanceLocal((const vector<unsigned short>*)0x0)->GetClass(); + } + +} // end of namespace ROOT + +namespace ROOT { + // Wrappers around operator new + static void *new_vectorlEunsignedsPshortgR(void *p) { + return p ? ::new((::ROOT::TOperatorNewHelper*)p) vector<unsigned short> : new vector<unsigned short>; + } + static void *newArray_vectorlEunsignedsPshortgR(Long_t nElements, void *p) { + return p ? ::new((::ROOT::TOperatorNewHelper*)p) vector<unsigned short>[nElements] : new vector<unsigned short>[nElements]; + } + // Wrapper around operator delete + static void delete_vectorlEunsignedsPshortgR(void *p) { + delete ((vector<unsigned short>*)p); + } + static void deleteArray_vectorlEunsignedsPshortgR(void *p) { + delete [] ((vector<unsigned short>*)p); + } + static void destruct_vectorlEunsignedsPshortgR(void *p) { + typedef vector<unsigned short> current_t; + ((current_t*)p)->~current_t(); + } +} // end of namespace ROOT for class vector<unsigned short> + +/******************************************************** +* TSharcDataDict.cxx +* CAUTION: DON'T CHANGE THIS FILE. THIS FILE IS AUTOMATICALLY GENERATED +* FROM HEADER FILES LISTED IN G__setup_cpp_environmentXXX(). +* CHANGE THOSE HEADER FILES AND REGENERATE THIS FILE. +********************************************************/ + +#ifdef G__MEMTEST +#undef malloc +#undef free +#endif + +#if defined(__GNUC__) && __GNUC__ >= 4 && ((__GNUC_MINOR__ == 2 && __GNUC_PATCHLEVEL__ >= 1) || (__GNUC_MINOR__ >= 3)) +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif + +extern "C" void G__cpp_reset_tagtableTSharcDataDict(); + +extern "C" void G__set_cpp_environmentTSharcDataDict() { + G__add_compiledheader("TObject.h"); + G__add_compiledheader("TMemberInspector.h"); + G__add_compiledheader("TSharcData.h"); + G__cpp_reset_tagtableTSharcDataDict(); +} +#include <new> +extern "C" int G__cpp_dllrevTSharcDataDict() { return(30051515); } + +/********************************************************* +* Member function Interface Method +*********************************************************/ + +/* TSharcData */ +static int G__TSharcDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TSharcData* p = NULL; + char* gvp = (char*) G__getgvp(); + int n = G__getaryconstruct(); + if (n) { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TSharcData[n]; + } else { + p = new((void*) gvp) TSharcData[n]; + } + } else { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TSharcData; + } else { + p = new((void*) gvp) TSharcData; + } + } + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData)); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TSharcData*) G__getstructoffset())->Clear(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TSharcData*) G__getstructoffset())->SetFrontE_DetectorNbr((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TSharcData*) G__getstructoffset())->SetFrontE_StripNbr((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TSharcData*) G__getstructoffset())->SetFrontE_Energy((Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TSharcData*) G__getstructoffset())->SetFrontE_Time((Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TSharcData*) G__getstructoffset())->SetBackE_DetectorNbr((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TSharcData*) G__getstructoffset())->SetBackE_StripNbr((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TSharcData*) G__getstructoffset())->SetBackE_Energy((Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TSharcData*) G__getstructoffset())->SetBackE_Time((Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TSharcData*) G__getstructoffset())->GetFrontE_DetectorNbr((unsigned int) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TSharcData*) G__getstructoffset())->GetFrontE_StripNbr((unsigned int) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((TSharcData*) G__getstructoffset())->GetFrontE_Energy((unsigned int) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_16(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((TSharcData*) G__getstructoffset())->GetFrontE_Time((unsigned int) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_17(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TSharcData*) G__getstructoffset())->GetBackE_DetectorNbr((unsigned int) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_18(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TSharcData*) G__getstructoffset())->GetBackE_StripNbr((unsigned int) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((TSharcData*) G__getstructoffset())->GetBackE_Energy((unsigned int) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((TSharcData*) G__getstructoffset())->GetBackE_Time((unsigned int) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 85, (long) TSharcData::Class()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TSharcData::Class_Name()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 115, (long) TSharcData::Class_Version()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_24(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TSharcData::Dictionary(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_28(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TSharcData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_29(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TSharcData::DeclFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_30(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TSharcData::ImplFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_31(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TSharcData::ImplFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TSharcDataDict_162_0_32(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TSharcData::DeclFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic copy constructor +static int G__TSharcDataDict_162_0_33(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) + +{ + TSharcData* p; + void* tmp = (void*) G__int(libp->para[0]); + p = new TSharcData(*(TSharcData*) tmp); + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData)); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic destructor +typedef TSharcData G__TTSharcData; +static int G__TSharcDataDict_162_0_34(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + char* gvp = (char*) G__getgvp(); + long soff = G__getstructoffset(); + int n = G__getaryconstruct(); + // + //has_a_delete: 1 + //has_own_delete1arg: 0 + //has_own_delete2arg: 0 + // + if (!soff) { + return(1); + } + if (n) { + if (gvp == (char*)G__PVOID) { + delete[] (TSharcData*) soff; + } else { + G__setgvp((long) G__PVOID); + for (int i = n - 1; i >= 0; --i) { + ((TSharcData*) (soff+(sizeof(TSharcData)*i)))->~G__TTSharcData(); + } + G__setgvp((long)gvp); + } + } else { + if (gvp == (char*)G__PVOID) { + delete (TSharcData*) soff; + } else { + G__setgvp((long) G__PVOID); + ((TSharcData*) (soff))->~G__TTSharcData(); + G__setgvp((long)gvp); + } + } + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic assignment operator +static int G__TSharcDataDict_162_0_35(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TSharcData* dest = (TSharcData*) G__getstructoffset(); + *dest = *(TSharcData*) libp->para[0].ref; + const TSharcData& obj = *dest; + result7->ref = (long) (&obj); + result7->obj.i = (long) (&obj); + return(1 || funcname || hash || result7 || libp) ; +} + + +/* Setting up global function */ + +/********************************************************* +* Member function Stub +*********************************************************/ + +/* TSharcData */ + +/********************************************************* +* Global function Stub +*********************************************************/ + +/********************************************************* +* Get size of pointer to member function +*********************************************************/ +class G__Sizep2memfuncTSharcDataDict { + public: + G__Sizep2memfuncTSharcDataDict(): p(&G__Sizep2memfuncTSharcDataDict::sizep2memfunc) {} + size_t sizep2memfunc() { return(sizeof(p)); } + private: + size_t (G__Sizep2memfuncTSharcDataDict::*p)(); +}; + +size_t G__get_sizep2memfuncTSharcDataDict() +{ + G__Sizep2memfuncTSharcDataDict a; + G__setsizep2memfunc((int)a.sizep2memfunc()); + return((size_t)a.sizep2memfunc()); +} + + +/********************************************************* +* virtual base class offset calculation interface +*********************************************************/ + + /* Setting up class inheritance */ + +/********************************************************* +* Inheritance information setup/ +*********************************************************/ +extern "C" void G__cpp_setup_inheritanceTSharcDataDict() { + + /* Setting up class inheritance */ + if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData))) { + TSharcData *G__Lderived; + G__Lderived=(TSharcData*)0x1000; + { + TObject *G__Lpbase=(TObject*)G__Lderived; + G__inheritance_setup(G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData),G__get_linked_tagnum(&G__TSharcDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1); + } + } +} + +/********************************************************* +* typedef information setup/ +*********************************************************/ +extern "C" void G__cpp_setup_typetableTSharcDataDict() { + + /* Setting up typedef entry */ + G__search_typename2("UShort_t",114,-1,0,-1); + G__setnewtype(-1,"Unsigned Short integer 2 bytes (unsigned short)",0); + G__search_typename2("Double_t",100,-1,0,-1); + G__setnewtype(-1,"Double 8 bytes",0); + G__search_typename2("Version_t",115,-1,0,-1); + G__setnewtype(-1,"Class version identifier (short)",0); + G__search_typename2("vector<ROOT::TSchemaHelper>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<UShort_t>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<Double_t>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),0,-1); + G__setnewtype(-1,NULL,0); +} + +/********************************************************* +* Data Member information setup/ +*********************************************************/ + + /* Setting up class,struct,union tag member variable */ + + /* TSharcData */ +static void G__setup_memvarTSharcData(void) { + G__tag_memvar_setup(G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData)); + { TSharcData *p; p=(TSharcData*)0x1000; if (p) { } + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fSharc_StripFront_DetectorNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fSharc_StripFront_StripNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fSharc_StripFront_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fSharc_StripFront_Time=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fSharc_StripBack_DetectorNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fSharc_StripBack_StripNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fSharc_StripBack_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fSharc_StripBack_Time=",0,(char*)NULL); + G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL); + } + G__tag_memvar_reset(); +} + +extern "C" void G__cpp_setup_memvarTSharcDataDict() { +} +/*********************************************************** +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +***********************************************************/ + +/********************************************************* +* Member function information setup for each class +*********************************************************/ +static void G__setup_memfuncTSharcData(void) { + /* TSharcData */ + G__tag_memfunc_setup(G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData)); + G__memfunc_setup("TSharcData",959,G__TSharcDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Clear",487,G__TSharcDataDict_162_0_2, 121, -1, -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Clear",487,(G__InterfaceMethod) NULL,121, -1, -1, 0, 1, 1, 1, 0, "C - 'Option_t' 10 - -", (char*)NULL, (void*) NULL, 1); + G__memfunc_setup("Dump",406,(G__InterfaceMethod) NULL,121, -1, -1, 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 1); + G__memfunc_setup("SetFrontE_DetectorNbr",2101,G__TSharcDataDict_162_0_5, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetFrontE_StripNbr",1805,G__TSharcDataDict_162_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - StripNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetFrontE_Energy",1603,G__TSharcDataDict_162_0_7, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 0 - Energy", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetFrontE_Time",1384,G__TSharcDataDict_162_0_8, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 0 - Time", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetBackE_DetectorNbr",1949,G__TSharcDataDict_162_0_9, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetBackE_StripNbr",1653,G__TSharcDataDict_162_0_10, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - StripNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetBackE_Energy",1451,G__TSharcDataDict_162_0_11, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 0 - Energy", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetBackE_Time",1232,G__TSharcDataDict_162_0_12, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 0 - Time", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetFrontE_DetectorNbr",2089,G__TSharcDataDict_162_0_13, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetFrontE_StripNbr",1793,G__TSharcDataDict_162_0_14, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetFrontE_Energy",1591,G__TSharcDataDict_162_0_15, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetFrontE_Time",1372,G__TSharcDataDict_162_0_16, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetBackE_DetectorNbr",1937,G__TSharcDataDict_162_0_17, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetBackE_StripNbr",1641,G__TSharcDataDict_162_0_18, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetBackE_Energy",1439,G__TSharcDataDict_162_0_19, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetBackE_Time",1220,G__TSharcDataDict_162_0_20, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Class",502,G__TSharcDataDict_162_0_21, 85, G__get_linked_tagnum(&G__TSharcDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TSharcData::Class) ), 0); + G__memfunc_setup("Class_Name",982,G__TSharcDataDict_162_0_22, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TSharcData::Class_Name) ), 0); + G__memfunc_setup("Class_Version",1339,G__TSharcDataDict_162_0_23, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TSharcData::Class_Version) ), 0); + G__memfunc_setup("Dictionary",1046,G__TSharcDataDict_162_0_24, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TSharcData::Dictionary) ), 0); + G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TSharcDataDictLN_TClass), -1, 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 1); + G__memfunc_setup("ShowMembers",1132,(G__InterfaceMethod) NULL,121, -1, -1, 0, 1, 1, 1, 0, "u 'TMemberInspector' - 1 - insp", (char*)NULL, (void*) NULL, 1); + G__memfunc_setup("Streamer",835,(G__InterfaceMethod) NULL,121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 1); + G__memfunc_setup("StreamerNVirtual",1656,G__TSharcDataDict_162_0_28, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("DeclFileName",1145,G__TSharcDataDict_162_0_29, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TSharcData::DeclFileName) ), 0); + G__memfunc_setup("ImplFileLine",1178,G__TSharcDataDict_162_0_30, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TSharcData::ImplFileLine) ), 0); + G__memfunc_setup("ImplFileName",1171,G__TSharcDataDict_162_0_31, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TSharcData::ImplFileName) ), 0); + G__memfunc_setup("DeclFileLine",1152,G__TSharcDataDict_162_0_32, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TSharcData::DeclFileLine) ), 0); + // automatic copy constructor + G__memfunc_setup("TSharcData", 959, G__TSharcDataDict_162_0_33, (int) ('i'), G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData), -1, 0, 1, 1, 1, 0, "u 'TSharcData' - 11 - -", (char*) NULL, (void*) NULL, 0); + // automatic destructor + G__memfunc_setup("~TSharcData", 1085, G__TSharcDataDict_162_0_34, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1); + // automatic assignment operator + G__memfunc_setup("operator=", 937, G__TSharcDataDict_162_0_35, (int) ('u'), G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData), -1, 1, 1, 1, 1, 0, "u 'TSharcData' - 11 - -", (char*) NULL, (void*) NULL, 0); + G__tag_memfunc_reset(); +} + + +/********************************************************* +* Member function information setup +*********************************************************/ +extern "C" void G__cpp_setup_memfuncTSharcDataDict() { +} + +/********************************************************* +* Global variable information setup for each class +*********************************************************/ +static void G__cpp_setup_global0() { + + /* Setting up global variables */ + G__resetplocal(); + +} + +static void G__cpp_setup_global1() { +} + +static void G__cpp_setup_global2() { + + G__resetglobalenv(); +} +extern "C" void G__cpp_setup_globalTSharcDataDict() { + G__cpp_setup_global0(); + G__cpp_setup_global1(); + G__cpp_setup_global2(); +} + +/********************************************************* +* Global function information setup for each class +*********************************************************/ +static void G__cpp_setup_func0() { + G__lastifuncposition(); + +} + +static void G__cpp_setup_func1() { +} + +static void G__cpp_setup_func2() { +} + +static void G__cpp_setup_func3() { +} + +static void G__cpp_setup_func4() { +} + +static void G__cpp_setup_func5() { +} + +static void G__cpp_setup_func6() { +} + +static void G__cpp_setup_func7() { +} + +static void G__cpp_setup_func8() { +} + +static void G__cpp_setup_func9() { +} + +static void G__cpp_setup_func10() { +} + +static void G__cpp_setup_func11() { +} + +static void G__cpp_setup_func12() { + + G__resetifuncposition(); +} + +extern "C" void G__cpp_setup_funcTSharcDataDict() { + G__cpp_setup_func0(); + G__cpp_setup_func1(); + G__cpp_setup_func2(); + G__cpp_setup_func3(); + G__cpp_setup_func4(); + G__cpp_setup_func5(); + G__cpp_setup_func6(); + G__cpp_setup_func7(); + G__cpp_setup_func8(); + G__cpp_setup_func9(); + G__cpp_setup_func10(); + G__cpp_setup_func11(); + G__cpp_setup_func12(); +} + +/********************************************************* +* Class,struct,union,enum tag information setup +*********************************************************/ +/* Setup class/struct taginfo */ +G__linked_taginfo G__TSharcDataDictLN_TClass = { "TClass" , 99 , -1 }; +G__linked_taginfo G__TSharcDataDictLN_TBuffer = { "TBuffer" , 99 , -1 }; +G__linked_taginfo G__TSharcDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 }; +G__linked_taginfo G__TSharcDataDictLN_TObject = { "TObject" , 99 , -1 }; +G__linked_taginfo G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR = { "vector<unsigned short,allocator<unsigned short> >" , 99 , -1 }; +G__linked_taginfo G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR = { "vector<double,allocator<double> >" , 99 , -1 }; +G__linked_taginfo G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 }; +G__linked_taginfo G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 }; +G__linked_taginfo G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TSharcDataDictLN_TSharcData = { "TSharcData" , 99 , -1 }; + +/* Reset class/struct taginfo */ +extern "C" void G__cpp_reset_tagtableTSharcDataDict() { + G__TSharcDataDictLN_TClass.tagnum = -1 ; + G__TSharcDataDictLN_TBuffer.tagnum = -1 ; + G__TSharcDataDictLN_TMemberInspector.tagnum = -1 ; + G__TSharcDataDictLN_TObject.tagnum = -1 ; + G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR.tagnum = -1 ; + G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR.tagnum = -1 ; + G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ; + G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ; + G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TSharcDataDictLN_TSharcData.tagnum = -1 ; +} + + +extern "C" void G__cpp_setup_tagtableTSharcDataDict() { + + /* Setting up class,struct,union tag entry */ + G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_TClass); + G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_TBuffer); + G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_TMemberInspector); + G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_TObject); + G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR); + G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR); + G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR); + G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR); + G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR); + G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR); + G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_TSharcData),sizeof(TSharcData),-1,29952,"SharcData structure",G__setup_memvarTSharcData,G__setup_memfuncTSharcData); +} +extern "C" void G__cpp_setupTSharcDataDict(void) { + G__check_setup_version(30051515,"G__cpp_setupTSharcDataDict()"); + G__set_cpp_environmentTSharcDataDict(); + G__cpp_setup_tagtableTSharcDataDict(); + + G__cpp_setup_inheritanceTSharcDataDict(); + + G__cpp_setup_typetableTSharcDataDict(); + + G__cpp_setup_memvarTSharcDataDict(); + + G__cpp_setup_memfuncTSharcDataDict(); + G__cpp_setup_globalTSharcDataDict(); + G__cpp_setup_funcTSharcDataDict(); + + if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTSharcDataDict(); + return; +} +class G__cpp_setup_initTSharcDataDict { + public: + G__cpp_setup_initTSharcDataDict() { G__add_setup_func("TSharcDataDict",(G__incsetup)(&G__cpp_setupTSharcDataDict)); G__call_setup_funcs(); } + ~G__cpp_setup_initTSharcDataDict() { G__remove_setup_func("TSharcDataDict"); } +}; +G__cpp_setup_initTSharcDataDict G__cpp_setup_initializerTSharcDataDict; + diff --git a/NPLib/Sharc/TSharcDataDict.h b/NPLib/Sharc/TSharcDataDict.h new file mode 100644 index 0000000000000000000000000000000000000000..8356ea9d2bf7649f2733d602189e2a6c318680ed --- /dev/null +++ b/NPLib/Sharc/TSharcDataDict.h @@ -0,0 +1,54 @@ +/******************************************************************** +* TSharcDataDict.h +* CAUTION: DON'T CHANGE THIS FILE. THIS FILE IS AUTOMATICALLY GENERATED +* FROM HEADER FILES LISTED IN G__setup_cpp_environmentXXX(). +* CHANGE THOSE HEADER FILES AND REGENERATE THIS FILE. +********************************************************************/ +#ifdef __CINT__ +#error TSharcDataDict.h/C is only for compilation. Abort cint. +#endif +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> +#include <math.h> +#include <string.h> +#define G__ANSIHEADER +#define G__DICTIONARY +#define G__PRIVATE_GVALUE +#include "G__ci.h" +#include "FastAllocString.h" +extern "C" { +extern void G__cpp_setup_tagtableTSharcDataDict(); +extern void G__cpp_setup_inheritanceTSharcDataDict(); +extern void G__cpp_setup_typetableTSharcDataDict(); +extern void G__cpp_setup_memvarTSharcDataDict(); +extern void G__cpp_setup_globalTSharcDataDict(); +extern void G__cpp_setup_memfuncTSharcDataDict(); +extern void G__cpp_setup_funcTSharcDataDict(); +extern void G__set_cpp_environmentTSharcDataDict(); +} + + +#include "TObject.h" +#include "TMemberInspector.h" +#include "TSharcData.h" +#include <algorithm> +namespace std { } +using namespace std; + +#ifndef G__MEMFUNCBODY +#endif + +extern G__linked_taginfo G__TSharcDataDictLN_TClass; +extern G__linked_taginfo G__TSharcDataDictLN_TBuffer; +extern G__linked_taginfo G__TSharcDataDictLN_TMemberInspector; +extern G__linked_taginfo G__TSharcDataDictLN_TObject; +extern G__linked_taginfo G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR; +extern G__linked_taginfo G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR; +extern G__linked_taginfo G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR; +extern G__linked_taginfo G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR; +extern G__linked_taginfo G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TSharcDataDictLN_TSharcData; + +/* STUB derived class for protected member access */ diff --git a/NPSimulation/include/Sharc.hh b/NPSimulation/include/Sharc.hh index 3d9afe5012d2eb36153584cc587b370726ad2c82..03e84caf925b1887a04cf793c90c07d6dce92626 100644 --- a/NPSimulation/include/Sharc.hh +++ b/NPSimulation/include/Sharc.hh @@ -51,26 +51,20 @@ namespace SHARC // BOX // // BOX PCB - const G4double BOX_PCB_Width = 61.0*mm; + const G4double BOX_PCB_Width = 61.10*mm; const G4double BOX_PCB_Length = 104.00*mm; - const G4double BOX_PCB_Thickness = 3.5*mm; + const G4double BOX_PCB_Thickness = 3.4*mm; const G4double BOX_PCB_Border_LongSide = 1*mm; const G4double BOX_PCB_Border_ShortSide = 2*mm; // Single stage box case (DSSD only) - const G4double BOX_PCB_Slot1_Width = 3.5*mm; - const G4double BOX_PCB_Slot1_Border = 5*mm; - const G4double BOX_PCB_Slot1_Deepness = 0.75*mm; - - // Double stage box case (DSSD+PAD) - const G4double BOX_PCB_Slot2_Width = 7*mm; - const G4double BOX_PCB_Slot2_Border = 3*mm; - const G4double BOX_PCB_Slot2_Deepness = 0.75*mm; + const G4double BOX_PCB_Slot1_Width = BOX_PCB_Thickness; + const G4double BOX_PCB_Slot1_Border = 4*mm; + const G4double BOX_PCB_Slot1_Deepness = 0.8*mm; // BOX Wafer - const G4double BOX_Wafer_Width = 51.00*mm; - const G4double BOX_Wafer_Length = 77.00*mm; - const G4double BOX_Wafer_Thickness = 100*um; + const G4double BOX_Wafer_Width = 52.20*mm; + const G4double BOX_Wafer_Length = 76.20*mm; const G4double BOX_Wafer_DeadLayer_Thickness = 0.1*um; const G4int BOX_Wafer_Front_NumberOfStrip = 16 ; @@ -81,25 +75,20 @@ namespace SHARC BOX_PCB_Width/2. - BOX_PCB_Border_LongSide - BOX_Wafer_Width/2.; const G4double BOX_Wafer_Length_Offset = BOX_PCB_Length/2. - BOX_PCB_Border_ShortSide - BOX_Wafer_Length/2.; - const G4double BOX_PCB_Slot1_Position =(BOX_Wafer_Length/2.-BOX_Wafer_Length_Offset) + BOX_PCB_Slot1_Border + BOX_PCB_Slot1_Width/2.; - const G4double BOX_PCB_Slot2_Position =(BOX_Wafer_Length/2.-BOX_Wafer_Length_Offset) + BOX_PCB_Slot2_Border + BOX_PCB_Slot2_Width/2.; + const G4double BOX_PCB_Slot1_Position =-(BOX_Wafer_Length_Offset-BOX_Wafer_Length/2.-BOX_PCB_Slot1_Border - BOX_PCB_Slot1_Width/2.); + // PAD // // PAD PCB - const G4double PAD_PCB_Width = 61.0*mm; + const G4double PAD_PCB_Width = 61.10*mm; const G4double PAD_PCB_Length = 104.00*mm; - const G4double PAD_PCB_Thickness = 3.5*mm; + const G4double PAD_PCB_Thickness = 3.4*mm; const G4double PAD_PCB_Border_LongSide = 1*mm; - const G4double PAD_PCB_Border_ShortSide = 2*mm; - - const G4double PAD_PCB_Slot_Width = 3*mm; - const G4double PAD_PCB_Slot_Border = 5*mm; - const G4double PAD_PCB_Slot_Deepness = 1*mm; + const G4double PAD_PCB_Border_ShortSide = 2.5*mm; // PAD Wafer const G4double PAD_Wafer_Width = 51.00*mm; const G4double PAD_Wafer_Length = 77.00*mm; - const G4double PAD_Wafer_Thickness = 100*um; const G4double PAD_Wafer_DeadLayer_Thickness = 0.1*um; // Compute @@ -107,6 +96,11 @@ namespace SHARC PAD_PCB_Width/2. - PAD_PCB_Border_LongSide - PAD_Wafer_Width/2.; const G4double PAD_Wafer_Length_Offset = PAD_PCB_Length/2. - PAD_PCB_Border_ShortSide - PAD_Wafer_Length/2.; + // Double stage box case (DSSD+PAD) + const G4double BOX_PCB_Slot2_Width = BOX_PCB_Thickness+PAD_PCB_Thickness; + const G4double BOX_PCB_Slot2_Border = 2.7*mm; + const G4double BOX_PCB_Slot2_Deepness = 0.8*mm; + const G4double BOX_PCB_Slot2_Position =(BOX_Wafer_Length/2.-BOX_Wafer_Length_Offset) + BOX_PCB_Slot2_Border + BOX_PCB_Slot2_Width/2.; // QQQ // // QQQ PCB diff --git a/NPSimulation/src/Sharc.cc b/NPSimulation/src/Sharc.cc index 88f8718a34f8d2b38099768a9cd68ea64375b0da..d3341fa750c0104a21af45c8e67757717e31d6f5 100644 --- a/NPSimulation/src/Sharc.cc +++ b/NPSimulation/src/Sharc.cc @@ -342,13 +342,7 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world) for(unsigned int i = 0 ; i < m_Z.size() ; i++){ for (unsigned int j = 0 ; j < 4; j++) { // create the Box DSSD - // Make the a single detector geometry - G4Box* BoxDetector = new G4Box("BoxDetector" , - BOX_PCB_Length/2., - BOX_PCB_Width/2., - BOX_PCB_Thickness/2.); - G4Box* PCBFull = new G4Box("PCBFull" , BOX_PCB_Length/2., BOX_PCB_Width/2., @@ -364,27 +358,48 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world) BOX_Wafer_Width/2., m_ThicknessBOX[i][j]/2.); + + G4double BOX_PCB_Slot_Width; + G4double BOX_PCB_Slot_Deepness; + G4double BOX_PCB_Slot_Border; + G4double BOX_PCB_Slot_Position; + + if(m_ThicknessPAD[i][j]>0){ + BOX_PCB_Slot_Width = BOX_PCB_Slot2_Width; + BOX_PCB_Slot_Deepness = BOX_PCB_Slot2_Deepness; + BOX_PCB_Slot_Border = BOX_PCB_Slot2_Border; + BOX_PCB_Slot_Position = BOX_PCB_Slot2_Position; + } + + else{ + BOX_PCB_Slot_Width = BOX_PCB_Slot1_Width; + BOX_PCB_Slot_Deepness = BOX_PCB_Slot1_Deepness; + BOX_PCB_Slot_Border = BOX_PCB_Slot1_Border; + BOX_PCB_Slot_Position = BOX_PCB_Slot1_Position; + } + G4Box* SlotShape = new G4Box("SlotShape", - BOX_PCB_Slot1_Width/2., + BOX_PCB_Slot_Width/2., BOX_PCB_Width/2.+0.1*mm, - BOX_PCB_Slot1_Deepness); + BOX_PCB_Slot_Deepness); G4ThreeVector Box_Wafer_Offset = G4ThreeVector(BOX_Wafer_Length_Offset, BOX_Wafer_Width_Offset,0 ); - G4SubtractionSolid* PCB1 = new G4SubtractionSolid("PCB1", PCBFull, WaferShape,new G4RotationMatrix,Box_Wafer_Offset); + G4SubtractionSolid* PCB1 = new G4SubtractionSolid("PCB", PCBFull, SlotShape,new G4RotationMatrix,G4ThreeVector(-BOX_PCB_Slot_Position, 0,0.5*BOX_PCB_Thickness)); - G4SubtractionSolid* PCB = new G4SubtractionSolid("PCB", PCB1, SlotShape,new G4RotationMatrix,G4ThreeVector(-BOX_PCB_Slot1_Position, 0,BOX_PCB_Slot1_Deepness)); + G4SubtractionSolid* PCB = new G4SubtractionSolid("PCB", PCB1, WaferShape,new G4RotationMatrix,Box_Wafer_Offset); // Master Volume G4LogicalVolume* logicBoxDetector = - new G4LogicalVolume(BoxDetector,m_MaterialVacuum,"logicBoxDetector", 0, 0, 0); + new G4LogicalVolume(PCB1,m_MaterialVacuum,"logicBoxDetector", 0, 0, 0); logicBoxDetector->SetVisAttributes(G4VisAttributes::Invisible); // Sub Volume PCB G4LogicalVolume* logicPCB = new G4LogicalVolume(PCB,m_MaterialPCB,"logicPCB", 0, 0, 0); - logicPCB->SetVisAttributes(PCBVisAtt); - + //logicPCB->SetVisAttributes(PCBVisAtt); + logicPCB->SetVisAttributes(new G4VisAttributes(G4Colour(j/4., (4-j)/4., 0.5)) ); + // Sub Volume Wafer G4LogicalVolume* logicWafer = new G4LogicalVolume(Wafer,m_MaterialSilicon,"logicWafer", 0, 0, 0); @@ -394,20 +409,105 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world) new G4PVPlacement(new G4RotationMatrix(0,0,0), G4ThreeVector(0,0,0), logicPCB,"Box_PCB",logicBoxDetector,false,i*4+j+1); + if(m_ThicknessBOX[i][j]>0) new G4PVPlacement(new G4RotationMatrix(0,0,0), Box_Wafer_Offset, logicWafer,"Box_Wafer",logicBoxDetector,false,i*4+j+1); - // Place the detector in the world + // create the PAD + + // Make the a single detector geometry + G4LogicalVolume* logicPADDetector; + G4ThreeVector PAD_Wafer_Offset = + G4ThreeVector(PAD_Wafer_Length_Offset, PAD_Wafer_Width_Offset,0 ); + if(m_ThicknessPAD[i][j]>0){ + G4Box* PADDetector = new G4Box("PADDetector" , + PAD_PCB_Length/2., + PAD_PCB_Width/2., + PAD_PCB_Thickness/2.); + + G4Box* PADPCBFull = new G4Box("PCBFull" , + PAD_PCB_Length/2., + PAD_PCB_Width/2., + PAD_PCB_Thickness/2.); + + G4Box* PADWaferShape = new G4Box("PADWaferShape", + PAD_Wafer_Length/2., + PAD_Wafer_Width/2., + PAD_PCB_Thickness/2.+0.1*mm); + + G4Box* PADWafer = new G4Box("PADWafer", + PAD_Wafer_Length/2., + PAD_Wafer_Width/2., + m_ThicknessPAD[i][j]/2.); + + G4SubtractionSolid* PADPCB = new G4SubtractionSolid("PADPCB", PADPCBFull, PADWaferShape,new G4RotationMatrix,PAD_Wafer_Offset); + + // Master Volume + logicPADDetector = + new G4LogicalVolume(PADDetector,m_MaterialVacuum,"logicPADDetector", 0, 0, 0); + logicPADDetector->SetVisAttributes(G4VisAttributes::Invisible); + + // Sub Volume PCB + G4LogicalVolume* logicPADPCB = + new G4LogicalVolume(PADPCB,m_MaterialPCB,"logicPADPCB", 0, 0, 0); + logicPADPCB->SetVisAttributes(PADVisAtt); + + // Sub Volume Wafer + G4LogicalVolume* logicPADWafer = + new G4LogicalVolume(PADWafer,m_MaterialSilicon,"logicPADWafer", 0, 0, 0); + logicPADWafer->SetVisAttributes(SiliconVisAtt); + + + // Place the sub volume in the master volume + new G4PVPlacement(new G4RotationMatrix(0,0,0), + G4ThreeVector(0,0,0), + logicPADPCB,"PAD_PCB",logicPADDetector,false,i*4+j+1); + + new G4PVPlacement(new G4RotationMatrix(0,0,0), + PAD_Wafer_Offset, + logicPADWafer,"PAD_Wafer",logicPADDetector,false,i*4+j+1); + } + + /////////////////////////////////////////////////////////////////////////////////// + // Place the detector in the world + // Position of the center of the PCB + G4double Exposed_Length= BOX_PCB_Border_ShortSide - BOX_PCB_Slot_Deepness + + BOX_Wafer_Length + + BOX_PCB_Slot_Border + BOX_PCB_Slot_Width*0.5; + G4double DetectorOffset= -0.5*(BOX_PCB_Length-Exposed_Length); + G4ThreeVector DetectorPosition = - -Box_Wafer_Offset+0.5*G4ThreeVector(BOX_PCB_Slot1_Border + 0.5*BOX_PCB_Slot1_Width -(BOX_PCB_Border_ShortSide - BOX_PCB_Slot1_Deepness),0,0); + G4ThreeVector(DetectorOffset,-Box_Wafer_Offset.y(),0); + - G4ThreeVector DetectorSpacing = - -G4ThreeVector(0, 0,0.5*(BOX_Wafer_Length+(BOX_PCB_Border_ShortSide- BOX_PCB_Slot1_Deepness)+BOX_PCB_Slot1_Border+0.5*BOX_PCB_Slot1_Width)); + cout << "PCB Length " << BOX_PCB_Length << endl; + cout << " Sum " << BOX_Wafer_Length+BOX_PCB_Border_ShortSide+BOX_PCB_Slot_Border+BOX_PCB_Slot_Width << endl; + //-Box_Wafer_Offset+G4ThreeVector(DetectorOffset,0,0); + //-Box_Wafer_Offset+G4ThreeVector(BOX_PCB_Slot_Border + 0.5*BOX_PCB_Slot_Width +(BOX_PCB_Border_ShortSide - BOX_PCB_Slot_Deepness),0,0); + + // Distance of the PCB to the target + G4ThreeVector DetectorSpacing = + -G4ThreeVector(0, 0,0.5*Exposed_Length); + // -G4ThreeVector(0, 0,0.5*(BOX_Wafer_Length+(BOX_PCB_Border_ShortSide- BOX_PCB_Slot_Deepness)+BOX_PCB_Slot_Border+0.5*BOX_PCB_Slot_Width)); + // If a PAD is present, DSSD is not in the center of the Slot: + G4ThreeVector PAD_OFFSET=-G4ThreeVector(0.5*PAD_PCB_Thickness,0,0); + if(m_ThicknessPAD[i][j]>0) DetectorPosition+=PAD_OFFSET; + DetectorPosition+=DetectorSpacing; + G4ThreeVector PADDetectorPosition = + -PAD_Wafer_Offset+0.5*G4ThreeVector(BOX_PCB_Slot_Border + 0.5*BOX_PCB_Slot_Width -(BOX_PCB_Border_ShortSide - BOX_PCB_Slot_Deepness),0,-BOX_PCB_Thickness-PAD_PCB_Thickness+(BOX_PCB_Slot_Width-BOX_PCB_Thickness)); + + G4ThreeVector PADDetectorSpacing = + -G4ThreeVector(0, 0,0.5*(PAD_Wafer_Length+(PAD_PCB_Border_ShortSide- BOX_PCB_Slot_Deepness)+BOX_PCB_Slot_Border+BOX_PCB_Slot_Width)); + + if(m_ThicknessPAD[i][j]>0) PADDetectorPosition+=PAD_OFFSET; + + PADDetectorPosition+=PADDetectorSpacing; + G4RotationMatrix* DetectorRotation= new G4RotationMatrix; // The Rotation Matrix is different for each detector if(j==0){ @@ -431,271 +531,17 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world) DetectorPosition.transform(*DetectorRotation); DetectorPosition+=G4ThreeVector(0,0,m_Z[i]); - new G4PVPlacement(G4Transform3D(*DetectorRotation,DetectorPosition), logicBoxDetector,"Box",world,true,i*4+j+1); + PADDetectorPosition.transform(*DetectorRotation); + PADDetectorPosition+=G4ThreeVector(0,0,m_Z[i]); + + new G4PVPlacement(G4Transform3D(*DetectorRotation,DetectorPosition), logicBoxDetector,"Box",world,false,i*4+j+1); + + if(logicPADDetector!=NULL) + new G4PVPlacement(G4Transform3D(*DetectorRotation, PADDetectorPosition), + logicPADDetector,"PAD",world,false,i*4+j+1); } } } -/////////////////////////////////////////////////// -/*void Sharc::ConstructBOXDetector(G4LogicalVolume* world) -{ - // Vis Attribute: - // Visual Attribute: - // Dark Grey - const G4VisAttributes* SiliconVisAtt = new G4VisAttributes(G4Colour(0.3, 0.3, 0.3)) ; - // Green - const G4VisAttributes* PCBVisAtt = new G4VisAttributes(G4Colour(0.2, 0.5, 0.2)) ; - // Gold Yellow - const G4VisAttributes* PADVisAtt = new G4VisAttributes(G4Colour(0.5, 0.5, 0.2)) ; - // Light Grey - const G4VisAttributes* FrameVisAtt = new G4VisAttributes(G4Colour(0.5, 0.5, 0.5)) ; - - - // create the Box DSSD - - // Make the a single detector geometry - G4Box* BoxDetector = new G4Box("BoxDetector" , - BOX_PCB_Length/2., - BOX_PCB_Width/2., - BOX_PCB_Thickness/2.); - - G4Box* PCBFull = new G4Box("PCBFull" , - BOX_PCB_Length/2., - BOX_PCB_Width/2., - BOX_PCB_Thickness/2.); - - G4Box* WaferShape = new G4Box("WaferShape", - BOX_Wafer_Length/2., - BOX_Wafer_Width/2., - BOX_PCB_Thickness/2.+0.1*mm); - - G4Box* Wafer = new G4Box("Wafer", - BOX_Wafer_Length/2., - BOX_Wafer_Width/2., - BOX_Wafer_Thickness/2.); - - G4Box* SlotShape = new G4Box("SlotShape", - BOX_PCB_Slot1_Width/2., - BOX_PCB_Width/2.+0.1*mm, - BOX_PCB_Slot1_Deepness); - - G4ThreeVector Box_Wafer_Offset = - G4ThreeVector(BOX_Wafer_Length_Offset, BOX_Wafer_Width_Offset,0 ); - - G4SubtractionSolid* PCB1 = new G4SubtractionSolid("PCB1", PCBFull, WaferShape,new G4RotationMatrix,Box_Wafer_Offset); - - G4SubtractionSolid* PCB = new G4SubtractionSolid("PCB", PCB1, SlotShape,new G4RotationMatrix,G4ThreeVector(-BOX_PCB_Slot1_Position, 0,BOX_PCB_Slot1_Deepness)); - - // Master Volume - G4LogicalVolume* logicBoxDetector = - new G4LogicalVolume(BoxDetector,m_MaterialVacuum,"logicBoxDetector", 0, 0, 0); - logicBoxDetector->SetVisAttributes(G4VisAttributes::Invisible); - // Sub Volume PCB - G4LogicalVolume* logicPCB = - new G4LogicalVolume(PCB,m_MaterialPCB,"logicPCB", 0, 0, 0); - logicPCB->SetVisAttributes(PCBVisAtt); - - // Sub Volume Wafer - G4LogicalVolume* logicWafer = - new G4LogicalVolume(Wafer,m_MaterialSilicon,"logicWafer", 0, 0, 0); - logicWafer->SetVisAttributes(SiliconVisAtt); - - // Place the sub volume in the master volume - new G4PVPlacement(new G4RotationMatrix(0,0,0), - G4ThreeVector(0,0,0), - logicPCB,"Box_PCB",logicBoxDetector,false,0); - - new G4PVPlacement(new G4RotationMatrix(0,0,0), - Box_Wafer_Offset, - logicWafer,"Box_Wafer",logicBoxDetector,false,0); - - // Place the detector in the world - for(unsigned int i = 0 ; i < m_Z.size() ; i++){ - G4ThreeVector DetectorPosition = - -Box_Wafer_Offset+0.5*G4ThreeVector(BOX_PCB_Slot1_Border + 0.5*BOX_PCB_Slot1_Width -(BOX_PCB_Border_ShortSide - BOX_PCB_Slot1_Deepness),0,0); - - G4ThreeVector DetectorSpacing = - -G4ThreeVector(0, 0,0.5*(BOX_Wafer_Length+(BOX_PCB_Border_ShortSide- BOX_PCB_Slot1_Deepness)+BOX_PCB_Slot1_Border+0.5*BOX_PCB_Slot1_Width)); - - DetectorPosition+=DetectorSpacing; - - // Det 1 - G4RotationMatrix* DetectorRotation1= new G4RotationMatrix; - DetectorRotation1->rotateX(90*deg); - if(m_Z[i]>0) DetectorRotation1->rotateY(180*deg); - G4ThreeVector DetectorPosition1=DetectorPosition; - DetectorPosition1.transform(*DetectorRotation1); - DetectorPosition1+=G4ThreeVector(0,0,m_Z[i]); - - G4PVPlacement* detector1 = new G4PVPlacement(G4Transform3D(*DetectorRotation1,DetectorPosition1), logicBoxDetector,"Box",world,true,i+0); - - new G4PVPlacement(new G4RotationMatrix(0,0,0), - Box_Wafer_Offset, - logicWafer,"Box_Wafer",detector1->GetLogicalVolume(),false,0); - - // Det2 - G4RotationMatrix* DetectorRotation2= new G4RotationMatrix; - DetectorRotation2->rotateZ(180*deg); - DetectorRotation2->rotateX(-90*deg); - if(m_Z[i]>0) DetectorRotation2->rotateY(180*deg); - G4ThreeVector DetectorPosition2=DetectorPosition; - DetectorPosition2.transform(*DetectorRotation2); - DetectorPosition2+=G4ThreeVector(0,0,m_Z[i]); - - new G4PVPlacement(G4Transform3D(*DetectorRotation2, DetectorPosition2), - logicBoxDetector,"Box",world,false,i+1); - - G4RotationMatrix* DetectorRotation3= new G4RotationMatrix; - DetectorRotation3->rotateX(90*deg); - DetectorRotation3->rotateZ(90*deg); - if(m_Z[i]>0) DetectorRotation3->rotateY(180*deg); - G4ThreeVector DetectorPosition3=DetectorPosition; - DetectorPosition3.transform(*DetectorRotation3); - DetectorPosition3+=G4ThreeVector(0,0,m_Z[i]); - - new G4PVPlacement(G4Transform3D(*DetectorRotation3, DetectorPosition3), - logicBoxDetector,"Box",world,false,i+2); - - // Det 4 - G4RotationMatrix* DetectorRotation4= new G4RotationMatrix; - DetectorRotation4->rotateX(90*deg); - DetectorRotation4->rotateZ(-90*deg); - if(m_Z[i]>0) DetectorRotation4->rotateY(180*deg); - G4ThreeVector DetectorPosition4=DetectorPosition; - DetectorPosition4.transform(*DetectorRotation4); - DetectorPosition4+=G4ThreeVector(0,0,m_Z[i]); - new G4PVPlacement(G4Transform3D(*DetectorRotation4, DetectorPosition4), - logicBoxDetector,"Box",world,false,i+3); - } - - - - // create the PAD - - // Make the a single detector geometry - G4Box* PADDetector = new G4Box("PADDetector" , - PAD_PCB_Length/2., - PAD_PCB_Width/2., - PAD_PCB_Thickness/2.); - - G4Box* PADPCBFull = new G4Box("PCBFull" , - PAD_PCB_Length/2., - PAD_PCB_Width/2., - PAD_PCB_Thickness/2.); - - G4Box* PADWaferShape = new G4Box("PADWaferShape", - PAD_Wafer_Length/2., - PAD_Wafer_Width/2., - PAD_PCB_Thickness/2.+0.1*mm); - - G4Box* PADWafer = new G4Box("PADWafer", - PAD_Wafer_Length/2., - PAD_Wafer_Width/2., - PAD_Wafer_Thickness/2.); - - G4ThreeVector PAD_Wafer_Offset = - G4ThreeVector(PAD_Wafer_Length_Offset, PAD_Wafer_Width_Offset,0 ); - - G4SubtractionSolid* PADPCB = new G4SubtractionSolid("PADPCB", PADPCBFull, PADWaferShape,new G4RotationMatrix,PAD_Wafer_Offset); - - // Master Volume - G4LogicalVolume* logicPADDetector = - new G4LogicalVolume(PADDetector,m_MaterialVacuum,"logicPADDetector", 0, 0, 0); - logicPADDetector->SetVisAttributes(G4VisAttributes::Invisible); - - // Sub Volume PCB - G4LogicalVolume* logicPADPCB = - new G4LogicalVolume(PADPCB,m_MaterialPCB,"logicPADPCB", 0, 0, 0); - logicPADPCB->SetVisAttributes(PADVisAtt); - - // Sub Volume Wafer - G4LogicalVolume* logicPADWafer = - new G4LogicalVolume(PADWafer,m_MaterialSilicon,"logicPADWafer", 0, 0, 0); - logicPADWafer->SetVisAttributes(SiliconVisAtt); - - - - // Place the sub volume in the master volume - new G4PVPlacement(new G4RotationMatrix(0,0,0), - G4ThreeVector(0,0,0), - logicPADPCB,"PAD_PCB",logicPADDetector,false,0); - - new G4PVPlacement(new G4RotationMatrix(0,0,0), - PAD_Wafer_Offset, - logicPADWafer,"PAD_Wafer",logicPADDetector,false,0); - - // Place the detector in the world - for(unsigned int i = 0 ; i < m_Z.size() ; i++){ - G4ThreeVector DetectorPosition = - -PAD_Wafer_Offset+0.5*G4ThreeVector(PAD_PCB_Slot_Border + 0.5*PAD_PCB_Slot_Width -(PAD_PCB_Border_ShortSide - PAD_PCB_Slot_Deepness),0,-BOX_PCB_Thickness-PAD_PCB_Thickness); - - G4ThreeVector DetectorSpacing = - -G4ThreeVector(0, 0,0.5*(PAD_Wafer_Length+(PAD_PCB_Border_ShortSide- PAD_PCB_Slot_Deepness)+PAD_PCB_Slot_Border+0.5*PAD_PCB_Slot_Width)); - - DetectorPosition+=DetectorSpacing; - - // Det 1 - if(m_ThicknessPAD1[i]!=0){ - G4RotationMatrix* DetectorRotation1= new G4RotationMatrix; - - - DetectorRotation1->rotateX(90*deg); - if(m_Z[i]>0) DetectorRotation1->rotateY(180*deg); - G4ThreeVector DetectorPosition1=DetectorPosition; - DetectorPosition1.transform(*DetectorRotation1); - DetectorPosition1+=G4ThreeVector(0,0,m_Z[i]); - - new G4PVPlacement(G4Transform3D(*DetectorRotation1, DetectorPosition1), - logicPADDetector,"PAD",world,false,i+0); - } - - // Det2 - if(m_ThicknessPAD2[i]!=0){ - G4RotationMatrix* DetectorRotation2= new G4RotationMatrix; - DetectorRotation2->rotateZ(180*deg); - DetectorRotation2->rotateX(-90*deg); - if(m_Z[i]>0) DetectorRotation2->rotateY(180*deg); - G4ThreeVector DetectorPosition2=DetectorPosition; - DetectorPosition2.transform(*DetectorRotation2); - DetectorPosition2+=G4ThreeVector(0,0,m_Z[i]); - - new G4PVPlacement(G4Transform3D(*DetectorRotation2, DetectorPosition2), - logicPADDetector,"PAD",world,false,i+1); - } - - // Det 3 - if(m_ThicknessPAD3[i]!=0){ - G4RotationMatrix* DetectorRotation3= new G4RotationMatrix; - DetectorRotation3->rotateX(90*deg); - DetectorRotation3->rotateZ(90*deg); - if(m_Z[i]>0) DetectorRotation3->rotateY(180*deg); - G4ThreeVector DetectorPosition3=DetectorPosition; - DetectorPosition3.transform(*DetectorRotation3); - DetectorPosition3+=G4ThreeVector(0,0,m_Z[i]); - - new G4PVPlacement(G4Transform3D(*DetectorRotation3, DetectorPosition3), - logicPADDetector,"PAD",world,false,i+2); - } - - // Det 4 - if(m_ThicknessPAD4[i]!=0){ - G4RotationMatrix* DetectorRotation4= new G4RotationMatrix; - DetectorRotation4->rotateX(90*deg); - DetectorRotation4->rotateZ(-90*deg); - if(m_Z[i]>0) DetectorRotation4->rotateY(180*deg); - G4ThreeVector DetectorPosition4=DetectorPosition; - DetectorPosition4.transform(*DetectorRotation4); - DetectorPosition4+=G4ThreeVector(0,0,m_Z[i]); - new G4PVPlacement(G4Transform3D(*DetectorRotation4, DetectorPosition4), - logicPADDetector,"PAD",world,false,i+3); - } - - } - - - - -}*/ - /////////////////////////////////////////////////// void Sharc::ConstructQQQDetector(G4LogicalVolume* world) {