diff --git a/NPLib/ComptonTelescope/Makefile b/NPLib/ComptonTelescope/Makefile new file mode 100755 index 0000000000000000000000000000000000000000..2c60a271fad4d28b3f87ba09f3134406b30ac71c --- /dev/null +++ b/NPLib/ComptonTelescope/Makefile @@ -0,0 +1,40 @@ +include ../Makefile.arch + +#------------------------------------------------------------------------------ +SHARELIB = libComptonTelescopeData.so + +all: $(SHARELIB) +#------------------------------------------------------------------------------ +############### Detector ############## + +## MUST2 ## +libComptonTelescopeData.so: TComptonTelescopeData.o TComptonTelescopeDataDict.o \ + TComptonTelescopeProcessData.o TComptonTelescopeProcessDataDict.o + $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ + +TComptonTelescopeDataDict.cxx: TComptonTelescopeData.h + rootcint -f $@ -c $^ + +TComptonTelescopeProcessDataDict.cxx: TComptonTelescopeProcessData.h + rootcint -f $@ -c $^ + +# dependances +TComptonTelescopeData.o: TComptonTelescopeData.cxx TComptonTelescopeData.h +TComptonTelescopeProcessData.o: TComptonTelescopeProcessData.cxx TComptonTelescopeProcessData.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/ComptonTelescope/TComptonTelescopeData.cxx b/NPLib/ComptonTelescope/TComptonTelescopeData.cxx new file mode 100755 index 0000000000000000000000000000000000000000..a77eaa918ca8d3e56b857996b98092e0e4ce7447 --- /dev/null +++ b/NPLib/ComptonTelescope/TComptonTelescopeData.cxx @@ -0,0 +1,113 @@ +/***************************************************************************** + * 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: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * * + * Creation Date : July 2012 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class holds the raw data for a Compton telescope prototype made of * + * a silicon tracker detector and a LaBr3 calorimeter * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include <iostream> +using namespace std; + +#include "TComptonTelescopeData.h" + +ClassImp(TComptonTelescopeData) + +TComptonTelescopeData::TComptonTelescopeData() +{ + // Default constructor + Clear(); +} + + + +TComptonTelescopeData::~TComptonTelescopeData() +{ +} + + + +void TComptonTelescopeData::Clear() +{ + // DSSSD + // (X,E) + fCT_Tracker_FrontE_TowerNbr.clear(); + fCT_Tracker_FrontE_DetectorNbr.clear(); + fCT_Tracker_FrontE_StripNbr.clear(); + fCT_Tracker_FrontE_Energy.clear(); + // (X,T) + fCT_Tracker_FrontT_TowerNbr.clear(); + fCT_Tracker_FrontT_DetectorNbr.clear(); + fCT_Tracker_FrontT_StripNbr.clear(); + fCT_Tracker_FrontT_Time.clear(); + // (Y,E) + fCT_Tracker_BackE_TowerNbr.clear(); + fCT_Tracker_BackE_DetectorNbr.clear(); + fCT_Tracker_BackE_StripNbr.clear(); + fCT_Tracker_BackE_Energy.clear(); + // (Y,T) + fCT_Tracker_BackT_TowerNbr.clear(); + fCT_Tracker_BackT_DetectorNbr.clear(); + fCT_Tracker_BackT_StripNbr.clear(); + fCT_Tracker_BackT_Time.clear(); + + // Calorimeter E + fCT_Calorimeter_E_TowerNbr.clear(); + fCT_Calorimeter_E_DetectorNbr.clear(); + fCT_Calorimeter_E_ChannelNbr.clear() ; + fCT_Calorimeter_E_Energy.clear(); + // Calorimeter T + fCT_Calorimeter_T_TowerNbr.clear(); + fCT_Calorimeter_T_DetectorNbr.clear(); + fCT_Calorimeter_T_ChannelNbr.clear(); + fCT_Calorimeter_T_Time.clear(); +} + + + +void TComptonTelescopeData::Dump() const +{ + cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event: Compton Telescope XXXXXXXXXXXXXXXXX" << endl; + + // DSSSD + // (X,E) + cout << "CT_Tracker_FrontE_Mult = " << fCT_Tracker_FrontE_DetectorNbr.size() << endl; + for (UShort_t i = 0; i < fCT_Tracker_FrontE_DetectorNbr.size(); i++) + cout << "TowNbr: " << fCT_Tracker_FrontE_TowerNbr[i] << " DetNbr: " << fCT_Tracker_FrontE_DetectorNbr[i] << " Strip: " << fCT_Tracker_FrontE_StripNbr[i] << " Energy: " << fCT_Tracker_FrontE_Energy[i] << endl; + // (X,T) + cout << "CT_Tracker_FrontT_Mult = " << fCT_Tracker_FrontT_DetectorNbr.size() << endl; + for (UShort_t i = 0; i < fCT_Tracker_FrontT_DetectorNbr.size(); i++) + cout << "TowNbr: " << fCT_Tracker_FrontT_TowerNbr[i] << " DetNbr: " << fCT_Tracker_FrontT_DetectorNbr[i] << " Strip: " << fCT_Tracker_FrontT_StripNbr[i] << " Time: " << fCT_Tracker_FrontT_Time[i] << endl; + // (Y,E) + cout << "CT_Tracker_BackE_Mult = " << fCT_Tracker_BackE_DetectorNbr.size() << endl; + for (UShort_t i = 0; i < fCT_Tracker_BackE_DetectorNbr.size(); i++) + cout << "TowNbr: " << fCT_Tracker_BackE_TowerNbr[i] << " DetNbr: " << fCT_Tracker_BackE_DetectorNbr[i] << " Strip: " << fCT_Tracker_BackE_StripNbr[i] << " Energy: " << fCT_Tracker_BackE_Energy[i] << endl; + // (Y,T) + cout << "CT_Tracker_BackT_Mult = " << fCT_Tracker_BackT_DetectorNbr.size() << endl; + for (UShort_t i = 0; i < fCT_Tracker_BackT_DetectorNbr.size(); i++) + cout << "TowNbr: " << fCT_Tracker_BackT_TowerNbr[i] << " DetNbr: " << fCT_Tracker_BackT_DetectorNbr[i] << " Strip: " << fCT_Tracker_BackT_StripNbr[i] << " Time: " << fCT_Tracker_BackT_Time[i] << endl; + + // Calorimeter + // Energy + cout << "CT_Calorimeter_E_Mult = " << fCT_Calorimeter_E_DetectorNbr.size() << endl; + for (UShort_t i = 0; i < fCT_Calorimeter_E_DetectorNbr.size(); i++) + cout << "TowNbr: " << fCT_Calorimeter_E_TowerNbr[i] << " Det: " << fCT_Calorimeter_E_DetectorNbr[i] << " Pad: " << fCT_Calorimeter_E_ChannelNbr[i] << " Energy: " << fCT_Calorimeter_E_Energy[i] << endl; + // Time + cout << "CT_Calorimeter_T_Mult = " << fCT_Calorimeter_T_DetectorNbr.size() << endl; + for (UShort_t i = 0; i < fCT_Calorimeter_T_DetectorNbr.size(); i++) + cout << "TowNbr: " << fCT_Calorimeter_E_TowerNbr[i] << " Det: " << fCT_Calorimeter_T_DetectorNbr[i] << " Pad: " << fCT_Calorimeter_T_ChannelNbr[i] << " Time: " << fCT_Calorimeter_T_Time[i] << endl; +} diff --git a/NPLib/ComptonTelescope/TComptonTelescopeData.h b/NPLib/ComptonTelescope/TComptonTelescopeData.h new file mode 100755 index 0000000000000000000000000000000000000000..966f19a6089113f7c47e9bd901198a0ae70a3de0 --- /dev/null +++ b/NPLib/ComptonTelescope/TComptonTelescopeData.h @@ -0,0 +1,155 @@ +#ifndef __COMPTONTELESCOPEDATA__ +#define __COMPTONTELESCOPEDATA__ +/***************************************************************************** + * 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: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * * + * Creation Date : July 2012 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class holds the raw data for a Compton telescope prototype made of * + * a silicon tracker detector and a LaBr3 calorimeter * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include <vector> +#include "TObject.h" + +using namespace std ; +class TComptonTelescopeData : public TObject { + private: + // DSSSD tracker + // X strips + // Energy + vector<UShort_t> fCT_Tracker_FrontE_TowerNbr; + vector<UShort_t> fCT_Tracker_FrontE_DetectorNbr; + vector<UShort_t> fCT_Tracker_FrontE_StripNbr; + vector<Double_t> fCT_Tracker_FrontE_Energy; + // Time + vector<UShort_t> fCT_Tracker_FrontT_TowerNbr; + vector<UShort_t> fCT_Tracker_FrontT_DetectorNbr; + vector<UShort_t> fCT_Tracker_FrontT_StripNbr; + vector<Double_t> fCT_Tracker_FrontT_Time; + // Y strips + // Energy + vector<UShort_t> fCT_Tracker_BackE_TowerNbr; + vector<UShort_t> fCT_Tracker_BackE_DetectorNbr; + vector<UShort_t> fCT_Tracker_BackE_StripNbr; + vector<Double_t> fCT_Tracker_BackE_Energy; + // Time + vector<UShort_t> fCT_Tracker_BackT_TowerNbr; + vector<UShort_t> fCT_Tracker_BackT_DetectorNbr; + vector<UShort_t> fCT_Tracker_BackT_StripNbr; + vector<Double_t> fCT_Tracker_BackT_Time; + + // Calorimeter + // Energy + vector<UShort_t> fCT_Calorimeter_E_TowerNbr; + vector<UShort_t> fCT_Calorimeter_E_DetectorNbr; + vector<UShort_t> fCT_Calorimeter_E_ChannelNbr; + vector<Double_t> fCT_Calorimeter_E_Energy; + // Time + vector<UShort_t> fCT_Calorimeter_T_TowerNbr; + vector<UShort_t> fCT_Calorimeter_T_DetectorNbr; + vector<UShort_t> fCT_Calorimeter_T_ChannelNbr; + vector<Double_t> fCT_Calorimeter_T_Time; + + public: + TComptonTelescopeData(); + virtual ~TComptonTelescopeData(); + + void Clear(); + void Clear(const Option_t*) {}; + void Dump() const; + + ///////////////////// SETTERS //////////////////////// + // DSSD + // (X,E) + void SetCTTrackerFrontETowerNbr(const UShort_t TowNbr) {fCT_Tracker_FrontE_TowerNbr.push_back(TowNbr);} + void SetCTTrackerFrontEDetectorNbr(const UShort_t DetNbr) {fCT_Tracker_FrontE_DetectorNbr.push_back(DetNbr);} + void SetCTTrackerFrontEStripNbr(const UShort_t StripNbr) {fCT_Tracker_FrontE_StripNbr.push_back(StripNbr);} + void SetCTTrackerFrontEEnergy(const Double_t Energy) {fCT_Tracker_FrontE_Energy.push_back(Energy);} + // (X,T) + void SetCTTrackerFrontTTowerNbr(const UShort_t TowNbr) {fCT_Tracker_FrontT_TowerNbr.push_back(TowNbr);} + void SetCTTrackerFrontTDetectorNbr(const UShort_t DetNbr) {fCT_Tracker_FrontT_DetectorNbr.push_back(DetNbr);} + void SetCTTrackerFrontTStripNbr(const UShort_t StripNbr) {fCT_Tracker_FrontT_StripNbr.push_back(StripNbr);} + void SetCTTrackerFrontTTime(const Double_t Time) {fCT_Tracker_FrontT_Time.push_back(Time);} + // (Y,E) + void SetCTTrackerBackETowerNbr(const UShort_t TowNbr) {fCT_Tracker_BackE_TowerNbr.push_back(TowNbr);} + void SetCTTrackerBackEDetectorNbr(const UShort_t DetNbr) {fCT_Tracker_BackE_DetectorNbr.push_back(DetNbr);} + void SetCTTrackerBackEStripNbr(const UShort_t StripNbr) {fCT_Tracker_BackE_StripNbr.push_back(StripNbr);} + void SetCTTrackerBackEEnergy(const Double_t Energy) {fCT_Tracker_BackE_Energy.push_back(Energy);} + // (Y,T) + void SetCTTrackerBackTTowerNbr(const UShort_t TowNbr) {fCT_Tracker_BackT_TowerNbr.push_back(TowNbr);} + void SetCTTrackerBackTDetectorNbr(const UShort_t DetNbr) {fCT_Tracker_BackT_DetectorNbr.push_back(DetNbr);} + void SetCTTrackerBackTStripNbr(const UShort_t StripNbr) {fCT_Tracker_BackT_StripNbr.push_back(StripNbr);} + void SetCTTrackerBackTTime(const Double_t Time) {fCT_Tracker_BackT_Time.push_back(Time);} + + // Calorimeter + // (E) + void SetCTCalorimeterETowerNbr(const UShort_t TowNbr) {fCT_Calorimeter_E_TowerNbr.push_back(TowNbr);} + void SetCTCalorimeterEDetectorNbr(const UShort_t DetNbr) {fCT_Calorimeter_E_TowerNbr.push_back(DetNbr);} + void SetCTCalorimeterEChannelNbr(const UShort_t ChannelNbr) {fCT_Calorimeter_E_ChannelNbr.push_back(ChannelNbr);} + void SetCTCalorimeterEEnergy(const Double_t Energy) {fCT_Calorimeter_E_Energy.push_back(Energy);} + // (T) + void SetCTCalorimeterTTowerNbr(const UShort_t TowNbr) {fCT_Calorimeter_T_TowerNbr.push_back(TowNbr);} + void SetCTCalorimeterTDetectorNbr(const UShort_t DetNbr) {fCT_Calorimeter_T_TowerNbr.push_back(DetNbr);} + void SetCTCalorimeterTChannelNbr(const UShort_t ChannelNbr) {fCT_Calorimeter_T_ChannelNbr.push_back(ChannelNbr);} + void SetCTCalorimeterTTime(const Double_t Time) {fCT_Calorimeter_T_Time.push_back(Time);} + + + ///////////////////// GETTERS //////////////////////// + // DSSD + // (X,E) + UShort_t GetCTTrackerFrontEMult() const {return fCT_Tracker_FrontE_TowerNbr.size();} + UShort_t GetCTTrackerFrontETowerNbr(const Int_t i) const {return fCT_Tracker_FrontE_TowerNbr[i];} + UShort_t GetCTTrackerFrontEDetectorNbr(const Int_t i) const {return fCT_Tracker_FrontE_DetectorNbr[i];} + UShort_t GetCTTrackerFrontEStripNbr(const Int_t i) const {return fCT_Tracker_FrontE_StripNbr[i];} + Double_t GetCTTrackerFrontEEnergy(const Int_t i) const {return fCT_Tracker_FrontE_Energy[i];} + // (X,T) + UShort_t GetCTTrackerFrontTMult() const {return fCT_Tracker_FrontT_TowerNbr.size();} + UShort_t GetCTTrackerFrontTTowerNbr(const Int_t i) const {return fCT_Tracker_FrontT_TowerNbr[i];} + UShort_t GetCTTrackerFrontTDetectorNbr(const Int_t i) const {return fCT_Tracker_FrontT_DetectorNbr[i];} + UShort_t GetCTTrackerFrontTStripNbr(const Int_t i) const {return fCT_Tracker_FrontT_StripNbr[i];} + Double_t GetCTTrackerFrontTTime(const Int_t i) const {return fCT_Tracker_FrontT_Time[i];} + // (Y,E) + UShort_t GetCTTrackerBackEMult() const {return fCT_Tracker_BackE_TowerNbr.size();} + UShort_t GetCTTrackerBackETowerNbr(const Int_t i) const {return fCT_Tracker_BackE_TowerNbr[i];} + UShort_t GetCTTrackerBackEDetectorNbr(const Int_t i) const {return fCT_Tracker_BackE_DetectorNbr[i];} + UShort_t GetCTTrackerBackEStripNbr(const Int_t i) const {return fCT_Tracker_BackE_StripNbr[i];} + Double_t GetCTTrackerBackEEnergy(const Int_t i) const {return fCT_Tracker_BackE_Energy[i];} + // (Y,T) + UShort_t GetCTTrackerBackTMult() const {return fCT_Tracker_BackT_TowerNbr.size();} + UShort_t GetCTrackerTBackTTowerNbr(const Int_t i) const {return fCT_Tracker_BackT_TowerNbr[i];} + UShort_t GetCTTrackerBackTDetectorNbr(const Int_t i) const {return fCT_Tracker_BackT_DetectorNbr[i];} + UShort_t GetCTTrackerBackTStripNbr(const Int_t i) const {return fCT_Tracker_BackT_StripNbr[i];} + Double_t GetCTTrackerBackTTime(const Int_t i) const {return fCT_Tracker_BackT_Time[i];} + + // Calorimeter + //(E) + UShort_t GetCTCalorimeterEMult() const {return fCT_Calorimeter_E_TowerNbr.size();} + UShort_t GetCTCalorimeterETowerNbr(const Int_t i) const {return fCT_Calorimeter_E_TowerNbr[i];} + UShort_t GetCTCalorimeterEDetectorNbr(const Int_t i) const {return fCT_Calorimeter_E_DetectorNbr[i];} + UShort_t GetCTCalorimeterEChannelNbr(const Int_t i) const {return fCT_Calorimeter_E_ChannelNbr[i];} + Double_t GetCTCalorimeterEEnergy(const Int_t i) const {return fCT_Calorimeter_E_Energy[i];} + //(T) + UShort_t GetCTCalorimeterTMult() const {return fCT_Calorimeter_T_TowerNbr.size();} + UShort_t GetCTCalorimeterTTowerNbr(const Int_t i) const {return fCT_Calorimeter_T_TowerNbr[i];} + UShort_t GetCTCalorimeterTDetectorNbr(const Int_t i) const {return fCT_Calorimeter_T_DetectorNbr[i];} + UShort_t GetCTCalorimeterTChannelNbr(const Int_t i) const {return fCT_Calorimeter_T_ChannelNbr[i];} + Double_t GetCTCalorimeterTTime(const Int_t i) const {return fCT_Calorimeter_T_Time[i];} + + ClassDef(TComptonTelescopeData,1) // ComptonTelescopeData structure +}; + +#endif diff --git a/NPLib/ComptonTelescope/TComptonTelescopeDataDict.cxx b/NPLib/ComptonTelescope/TComptonTelescopeDataDict.cxx new file mode 100644 index 0000000000000000000000000000000000000000..02a4be261f2f1408b292318e3c19b180f158fd95 --- /dev/null +++ b/NPLib/ComptonTelescope/TComptonTelescopeDataDict.cxx @@ -0,0 +1,1787 @@ +// +// File generated by rootcint at Tue Jul 17 16:40:44 2012 + +// Do NOT change. Changes will be lost next time file is generated +// + +#define R__DICTIONARY_FILENAME TComptonTelescopeDataDict +#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 "TComptonTelescopeDataDict.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 TComptonTelescopeData_ShowMembers(void *obj, TMemberInspector &R__insp); + static void *new_TComptonTelescopeData(void *p = 0); + static void *newArray_TComptonTelescopeData(Long_t size, void *p); + static void delete_TComptonTelescopeData(void *p); + static void deleteArray_TComptonTelescopeData(void *p); + static void destruct_TComptonTelescopeData(void *p); + static void streamer_TComptonTelescopeData(TBuffer &buf, void *obj); + + // Function generating the singleton type initializer + static TGenericClassInfo *GenerateInitInstanceLocal(const ::TComptonTelescopeData*) + { + ::TComptonTelescopeData *ptr = 0; + static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TComptonTelescopeData >(0); + static ::ROOT::TGenericClassInfo + instance("TComptonTelescopeData", ::TComptonTelescopeData::Class_Version(), "./TComptonTelescopeData.h", 29, + typeid(::TComptonTelescopeData), DefineBehavior(ptr, ptr), + &::TComptonTelescopeData::Dictionary, isa_proxy, 0, + sizeof(::TComptonTelescopeData) ); + instance.SetNew(&new_TComptonTelescopeData); + instance.SetNewArray(&newArray_TComptonTelescopeData); + instance.SetDelete(&delete_TComptonTelescopeData); + instance.SetDeleteArray(&deleteArray_TComptonTelescopeData); + instance.SetDestructor(&destruct_TComptonTelescopeData); + instance.SetStreamerFunc(&streamer_TComptonTelescopeData); + return &instance; + } + TGenericClassInfo *GenerateInitInstance(const ::TComptonTelescopeData*) + { + return GenerateInitInstanceLocal((::TComptonTelescopeData*)0); + } + // Static variable to force the class initialization + static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TComptonTelescopeData*)0x0); R__UseDummy(_R__UNIQUE_(Init)); +} // end of namespace ROOT + +//______________________________________________________________________________ +TClass *TComptonTelescopeData::fgIsA = 0; // static to hold class pointer + +//______________________________________________________________________________ +const char *TComptonTelescopeData::Class_Name() +{ + return "TComptonTelescopeData"; +} + +//______________________________________________________________________________ +const char *TComptonTelescopeData::ImplFileName() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeData*)0x0)->GetImplFileName(); +} + +//______________________________________________________________________________ +int TComptonTelescopeData::ImplFileLine() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeData*)0x0)->GetImplFileLine(); +} + +//______________________________________________________________________________ +void TComptonTelescopeData::Dictionary() +{ + fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeData*)0x0)->GetClass(); +} + +//______________________________________________________________________________ +TClass *TComptonTelescopeData::Class() +{ + if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeData*)0x0)->GetClass(); + return fgIsA; +} + +//______________________________________________________________________________ +void TComptonTelescopeData::Streamer(TBuffer &R__b) +{ + // Stream an object of class TComptonTelescopeData. + + 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 = fCT_Tracker_FrontE_TowerNbr; + 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 = fCT_Tracker_FrontE_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 = fCT_Tracker_FrontE_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 = fCT_Tracker_FrontE_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<UShort_t> &R__stl = fCT_Tracker_FrontT_TowerNbr; + 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 = fCT_Tracker_FrontT_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 = fCT_Tracker_FrontT_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 = fCT_Tracker_FrontT_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 = fCT_Tracker_BackE_TowerNbr; + 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 = fCT_Tracker_BackE_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 = fCT_Tracker_BackE_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 = fCT_Tracker_BackE_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<UShort_t> &R__stl = fCT_Tracker_BackT_TowerNbr; + 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 = fCT_Tracker_BackT_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 = fCT_Tracker_BackT_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 = fCT_Tracker_BackT_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 = fCT_Calorimeter_E_TowerNbr; + 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 = fCT_Calorimeter_E_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 = fCT_Calorimeter_E_ChannelNbr; + 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 = fCT_Calorimeter_E_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<UShort_t> &R__stl = fCT_Calorimeter_T_TowerNbr; + 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 = fCT_Calorimeter_T_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 = fCT_Calorimeter_T_ChannelNbr; + 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 = fCT_Calorimeter_T_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, TComptonTelescopeData::IsA()); + } else { + R__c = R__b.WriteVersion(TComptonTelescopeData::IsA(), kTRUE); + TObject::Streamer(R__b); + { + vector<UShort_t> &R__stl = fCT_Tracker_FrontE_TowerNbr; + 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 = fCT_Tracker_FrontE_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 = fCT_Tracker_FrontE_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 = fCT_Tracker_FrontE_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<UShort_t> &R__stl = fCT_Tracker_FrontT_TowerNbr; + 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 = fCT_Tracker_FrontT_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 = fCT_Tracker_FrontT_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 = fCT_Tracker_FrontT_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 = fCT_Tracker_BackE_TowerNbr; + 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 = fCT_Tracker_BackE_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 = fCT_Tracker_BackE_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 = fCT_Tracker_BackE_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<UShort_t> &R__stl = fCT_Tracker_BackT_TowerNbr; + 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 = fCT_Tracker_BackT_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 = fCT_Tracker_BackT_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 = fCT_Tracker_BackT_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 = fCT_Calorimeter_E_TowerNbr; + 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 = fCT_Calorimeter_E_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 = fCT_Calorimeter_E_ChannelNbr; + 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 = fCT_Calorimeter_E_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<UShort_t> &R__stl = fCT_Calorimeter_T_TowerNbr; + 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 = fCT_Calorimeter_T_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 = fCT_Calorimeter_T_ChannelNbr; + 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 = fCT_Calorimeter_T_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 TComptonTelescopeData::ShowMembers(TMemberInspector &R__insp) +{ + // Inspect the data members of an object of class TComptonTelescopeData. + TClass *R__cl = ::TComptonTelescopeData::IsA(); + if (R__cl || R__insp.IsA()) { } + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontE_TowerNbr", (void*)&fCT_Tracker_FrontE_TowerNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_FrontE_TowerNbr, "fCT_Tracker_FrontE_TowerNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontE_DetectorNbr", (void*)&fCT_Tracker_FrontE_DetectorNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_FrontE_DetectorNbr, "fCT_Tracker_FrontE_DetectorNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontE_StripNbr", (void*)&fCT_Tracker_FrontE_StripNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_FrontE_StripNbr, "fCT_Tracker_FrontE_StripNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontE_Energy", (void*)&fCT_Tracker_FrontE_Energy); + R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Tracker_FrontE_Energy, "fCT_Tracker_FrontE_Energy.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontT_TowerNbr", (void*)&fCT_Tracker_FrontT_TowerNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_FrontT_TowerNbr, "fCT_Tracker_FrontT_TowerNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontT_DetectorNbr", (void*)&fCT_Tracker_FrontT_DetectorNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_FrontT_DetectorNbr, "fCT_Tracker_FrontT_DetectorNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontT_StripNbr", (void*)&fCT_Tracker_FrontT_StripNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_FrontT_StripNbr, "fCT_Tracker_FrontT_StripNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontT_Time", (void*)&fCT_Tracker_FrontT_Time); + R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Tracker_FrontT_Time, "fCT_Tracker_FrontT_Time.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackE_TowerNbr", (void*)&fCT_Tracker_BackE_TowerNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_BackE_TowerNbr, "fCT_Tracker_BackE_TowerNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackE_DetectorNbr", (void*)&fCT_Tracker_BackE_DetectorNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_BackE_DetectorNbr, "fCT_Tracker_BackE_DetectorNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackE_StripNbr", (void*)&fCT_Tracker_BackE_StripNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_BackE_StripNbr, "fCT_Tracker_BackE_StripNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackE_Energy", (void*)&fCT_Tracker_BackE_Energy); + R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Tracker_BackE_Energy, "fCT_Tracker_BackE_Energy.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackT_TowerNbr", (void*)&fCT_Tracker_BackT_TowerNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_BackT_TowerNbr, "fCT_Tracker_BackT_TowerNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackT_DetectorNbr", (void*)&fCT_Tracker_BackT_DetectorNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_BackT_DetectorNbr, "fCT_Tracker_BackT_DetectorNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackT_StripNbr", (void*)&fCT_Tracker_BackT_StripNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_BackT_StripNbr, "fCT_Tracker_BackT_StripNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackT_Time", (void*)&fCT_Tracker_BackT_Time); + R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Tracker_BackT_Time, "fCT_Tracker_BackT_Time.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_E_TowerNbr", (void*)&fCT_Calorimeter_E_TowerNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Calorimeter_E_TowerNbr, "fCT_Calorimeter_E_TowerNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_E_DetectorNbr", (void*)&fCT_Calorimeter_E_DetectorNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Calorimeter_E_DetectorNbr, "fCT_Calorimeter_E_DetectorNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_E_ChannelNbr", (void*)&fCT_Calorimeter_E_ChannelNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Calorimeter_E_ChannelNbr, "fCT_Calorimeter_E_ChannelNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_E_Energy", (void*)&fCT_Calorimeter_E_Energy); + R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Calorimeter_E_Energy, "fCT_Calorimeter_E_Energy.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_T_TowerNbr", (void*)&fCT_Calorimeter_T_TowerNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Calorimeter_T_TowerNbr, "fCT_Calorimeter_T_TowerNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_T_DetectorNbr", (void*)&fCT_Calorimeter_T_DetectorNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Calorimeter_T_DetectorNbr, "fCT_Calorimeter_T_DetectorNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_T_ChannelNbr", (void*)&fCT_Calorimeter_T_ChannelNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Calorimeter_T_ChannelNbr, "fCT_Calorimeter_T_ChannelNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_T_Time", (void*)&fCT_Calorimeter_T_Time); + R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Calorimeter_T_Time, "fCT_Calorimeter_T_Time.", false); + TObject::ShowMembers(R__insp); +} + +namespace ROOT { + // Wrappers around operator new + static void *new_TComptonTelescopeData(void *p) { + return p ? new(p) ::TComptonTelescopeData : new ::TComptonTelescopeData; + } + static void *newArray_TComptonTelescopeData(Long_t nElements, void *p) { + return p ? new(p) ::TComptonTelescopeData[nElements] : new ::TComptonTelescopeData[nElements]; + } + // Wrapper around operator delete + static void delete_TComptonTelescopeData(void *p) { + delete ((::TComptonTelescopeData*)p); + } + static void deleteArray_TComptonTelescopeData(void *p) { + delete [] ((::TComptonTelescopeData*)p); + } + static void destruct_TComptonTelescopeData(void *p) { + typedef ::TComptonTelescopeData current_t; + ((current_t*)p)->~current_t(); + } + // Wrapper around a custom streamer member function. + static void streamer_TComptonTelescopeData(TBuffer &buf, void *obj) { + ((::TComptonTelescopeData*)obj)->::TComptonTelescopeData::Streamer(buf); + } +} // end of namespace ROOT for class ::TComptonTelescopeData + +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> + +/******************************************************** +* TComptonTelescopeDataDict.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_tagtableTComptonTelescopeDataDict(); + +extern "C" void G__set_cpp_environmentTComptonTelescopeDataDict() { + G__add_compiledheader("TObject.h"); + G__add_compiledheader("TMemberInspector.h"); + G__add_compiledheader("TComptonTelescopeData.h"); + G__cpp_reset_tagtableTComptonTelescopeDataDict(); +} +#include <new> +extern "C" int G__cpp_dllrevTComptonTelescopeDataDict() { return(30051515); } + +/********************************************************* +* Member function Interface Method +*********************************************************/ + +/* TComptonTelescopeData */ +static int G__TComptonTelescopeDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TComptonTelescopeData* p = NULL; + char* gvp = (char*) G__getgvp(); + int n = G__getaryconstruct(); + if (n) { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TComptonTelescopeData[n]; + } else { + p = new((void*) gvp) TComptonTelescopeData[n]; + } + } else { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TComptonTelescopeData; + } else { + p = new((void*) gvp) TComptonTelescopeData; + } + } + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData)); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->Clear(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontETowerNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontEDetectorNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontEStripNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontEEnergy((const Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontTTowerNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontTDetectorNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontTStripNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontTTime((const Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackETowerNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackEDetectorNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackEStripNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_16(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackEEnergy((const Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_17(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackTTowerNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_18(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackTDetectorNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackTStripNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackTTime((const Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterETowerNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterEDetectorNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterEChannelNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_24(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterEEnergy((const Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_25(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterTTowerNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_26(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterTDetectorNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_27(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterTChannelNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_28(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterTTime((const Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_29(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontEMult()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_30(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontETowerNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_31(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontEDetectorNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_32(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontEStripNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_33(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontEEnergy((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_34(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontTMult()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_35(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontTTowerNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_36(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontTDetectorNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_37(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontTStripNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_38(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontTTime((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_39(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackEMult()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_40(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackETowerNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_41(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackEDetectorNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_42(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackEStripNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_43(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackEEnergy((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_44(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackTMult()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_45(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTrackerTBackTTowerNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_46(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackTDetectorNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_47(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackTStripNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_48(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackTTime((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_49(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterEMult()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_50(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterETowerNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_51(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterEDetectorNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_52(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterEChannelNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_53(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterEEnergy((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_54(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterTMult()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_55(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterTTowerNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_56(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterTDetectorNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_57(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterTChannelNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_58(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterTTime((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_59(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 85, (long) TComptonTelescopeData::Class()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_60(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TComptonTelescopeData::Class_Name()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_61(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 115, (long) TComptonTelescopeData::Class_Version()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_62(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TComptonTelescopeData::Dictionary(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_66(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_67(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TComptonTelescopeData::DeclFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_68(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TComptonTelescopeData::ImplFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_69(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TComptonTelescopeData::ImplFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeDataDict_162_0_70(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TComptonTelescopeData::DeclFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic copy constructor +static int G__TComptonTelescopeDataDict_162_0_71(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) + +{ + TComptonTelescopeData* p; + void* tmp = (void*) G__int(libp->para[0]); + p = new TComptonTelescopeData(*(TComptonTelescopeData*) tmp); + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData)); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic destructor +typedef TComptonTelescopeData G__TTComptonTelescopeData; +static int G__TComptonTelescopeDataDict_162_0_72(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[] (TComptonTelescopeData*) soff; + } else { + G__setgvp((long) G__PVOID); + for (int i = n - 1; i >= 0; --i) { + ((TComptonTelescopeData*) (soff+(sizeof(TComptonTelescopeData)*i)))->~G__TTComptonTelescopeData(); + } + G__setgvp((long)gvp); + } + } else { + if (gvp == (char*)G__PVOID) { + delete (TComptonTelescopeData*) soff; + } else { + G__setgvp((long) G__PVOID); + ((TComptonTelescopeData*) (soff))->~G__TTComptonTelescopeData(); + G__setgvp((long)gvp); + } + } + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic assignment operator +static int G__TComptonTelescopeDataDict_162_0_73(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TComptonTelescopeData* dest = (TComptonTelescopeData*) G__getstructoffset(); + *dest = *(TComptonTelescopeData*) libp->para[0].ref; + const TComptonTelescopeData& obj = *dest; + result7->ref = (long) (&obj); + result7->obj.i = (long) (&obj); + return(1 || funcname || hash || result7 || libp) ; +} + + +/* Setting up global function */ + +/********************************************************* +* Member function Stub +*********************************************************/ + +/* TComptonTelescopeData */ + +/********************************************************* +* Global function Stub +*********************************************************/ + +/********************************************************* +* Get size of pointer to member function +*********************************************************/ +class G__Sizep2memfuncTComptonTelescopeDataDict { + public: + G__Sizep2memfuncTComptonTelescopeDataDict(): p(&G__Sizep2memfuncTComptonTelescopeDataDict::sizep2memfunc) {} + size_t sizep2memfunc() { return(sizeof(p)); } + private: + size_t (G__Sizep2memfuncTComptonTelescopeDataDict::*p)(); +}; + +size_t G__get_sizep2memfuncTComptonTelescopeDataDict() +{ + G__Sizep2memfuncTComptonTelescopeDataDict 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_inheritanceTComptonTelescopeDataDict() { + + /* Setting up class inheritance */ + if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData))) { + TComptonTelescopeData *G__Lderived; + G__Lderived=(TComptonTelescopeData*)0x1000; + { + TObject *G__Lpbase=(TObject*)G__Lderived; + G__inheritance_setup(G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData),G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1); + } + } +} + +/********************************************************* +* typedef information setup/ +*********************************************************/ +extern "C" void G__cpp_setup_typetableTComptonTelescopeDataDict() { + + /* 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("Int_t",105,-1,0,-1); + G__setnewtype(-1,"Signed integer 4 bytes (int)",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__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<UShort_t>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<Double_t>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),0,-1); + G__setnewtype(-1,NULL,0); +} + +/********************************************************* +* Data Member information setup/ +*********************************************************/ + + /* Setting up class,struct,union tag member variable */ + + /* TComptonTelescopeData */ +static void G__setup_memvarTComptonTelescopeData(void) { + G__tag_memvar_setup(G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData)); + { TComptonTelescopeData *p; p=(TComptonTelescopeData*)0x1000; if (p) { } + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_FrontE_TowerNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_FrontE_DetectorNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_FrontE_StripNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Tracker_FrontE_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_FrontT_TowerNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_FrontT_DetectorNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_FrontT_StripNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Tracker_FrontT_Time=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_BackE_TowerNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_BackE_DetectorNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_BackE_StripNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Tracker_BackE_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_BackT_TowerNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_BackT_DetectorNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_BackT_StripNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Tracker_BackT_Time=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Calorimeter_E_TowerNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Calorimeter_E_DetectorNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Calorimeter_E_ChannelNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Calorimeter_E_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Calorimeter_T_TowerNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Calorimeter_T_DetectorNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Calorimeter_T_ChannelNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Calorimeter_T_Time=",0,(char*)NULL); + G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL); + } + G__tag_memvar_reset(); +} + +extern "C" void G__cpp_setup_memvarTComptonTelescopeDataDict() { +} +/*********************************************************** +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +***********************************************************/ + +/********************************************************* +* Member function information setup for each class +*********************************************************/ +static void G__setup_memfuncTComptonTelescopeData(void) { + /* TComptonTelescopeData */ + G__tag_memfunc_setup(G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData)); + G__memfunc_setup("TComptonTelescopeData",2130,G__TComptonTelescopeDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Clear",487,G__TComptonTelescopeDataDict_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("SetCTTrackerFrontETowerNbr",2576,G__TComptonTelescopeDataDict_162_0_5, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerFrontEDetectorNbr",2873,G__TComptonTelescopeDataDict_162_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerFrontEStripNbr",2577,G__TComptonTelescopeDataDict_162_0_7, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - StripNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerFrontEEnergy",2375,G__TComptonTelescopeDataDict_162_0_8, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Energy", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerFrontTTowerNbr",2591,G__TComptonTelescopeDataDict_162_0_9, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerFrontTDetectorNbr",2888,G__TComptonTelescopeDataDict_162_0_10, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerFrontTStripNbr",2592,G__TComptonTelescopeDataDict_162_0_11, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - StripNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerFrontTTime",2171,G__TComptonTelescopeDataDict_162_0_12, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Time", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerBackETowerNbr",2424,G__TComptonTelescopeDataDict_162_0_13, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerBackEDetectorNbr",2721,G__TComptonTelescopeDataDict_162_0_14, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerBackEStripNbr",2425,G__TComptonTelescopeDataDict_162_0_15, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - StripNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerBackEEnergy",2223,G__TComptonTelescopeDataDict_162_0_16, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Energy", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerBackTTowerNbr",2439,G__TComptonTelescopeDataDict_162_0_17, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerBackTDetectorNbr",2736,G__TComptonTelescopeDataDict_162_0_18, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerBackTStripNbr",2440,G__TComptonTelescopeDataDict_162_0_19, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - StripNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerBackTTime",2019,G__TComptonTelescopeDataDict_162_0_20, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Time", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTCalorimeterETowerNbr",2482,G__TComptonTelescopeDataDict_162_0_21, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTCalorimeterEDetectorNbr",2779,G__TComptonTelescopeDataDict_162_0_22, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTCalorimeterEChannelNbr",2650,G__TComptonTelescopeDataDict_162_0_23, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - ChannelNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTCalorimeterEEnergy",2281,G__TComptonTelescopeDataDict_162_0_24, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Energy", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTCalorimeterTTowerNbr",2497,G__TComptonTelescopeDataDict_162_0_25, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTCalorimeterTDetectorNbr",2794,G__TComptonTelescopeDataDict_162_0_26, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTCalorimeterTChannelNbr",2665,G__TComptonTelescopeDataDict_162_0_27, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - ChannelNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTCalorimeterTTime",2077,G__TComptonTelescopeDataDict_162_0_28, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Time", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerFrontEMult",2163,G__TComptonTelescopeDataDict_162_0_29, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerFrontETowerNbr",2564,G__TComptonTelescopeDataDict_162_0_30, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerFrontEDetectorNbr",2861,G__TComptonTelescopeDataDict_162_0_31, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerFrontEStripNbr",2565,G__TComptonTelescopeDataDict_162_0_32, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerFrontEEnergy",2363,G__TComptonTelescopeDataDict_162_0_33, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerFrontTMult",2178,G__TComptonTelescopeDataDict_162_0_34, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerFrontTTowerNbr",2579,G__TComptonTelescopeDataDict_162_0_35, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerFrontTDetectorNbr",2876,G__TComptonTelescopeDataDict_162_0_36, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerFrontTStripNbr",2580,G__TComptonTelescopeDataDict_162_0_37, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerFrontTTime",2159,G__TComptonTelescopeDataDict_162_0_38, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerBackEMult",2011,G__TComptonTelescopeDataDict_162_0_39, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerBackETowerNbr",2412,G__TComptonTelescopeDataDict_162_0_40, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerBackEDetectorNbr",2709,G__TComptonTelescopeDataDict_162_0_41, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerBackEStripNbr",2413,G__TComptonTelescopeDataDict_162_0_42, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerBackEEnergy",2211,G__TComptonTelescopeDataDict_162_0_43, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerBackTMult",2026,G__TComptonTelescopeDataDict_162_0_44, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTrackerTBackTTowerNbr",2427,G__TComptonTelescopeDataDict_162_0_45, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerBackTDetectorNbr",2724,G__TComptonTelescopeDataDict_162_0_46, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerBackTStripNbr",2428,G__TComptonTelescopeDataDict_162_0_47, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerBackTTime",2007,G__TComptonTelescopeDataDict_162_0_48, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTCalorimeterEMult",2069,G__TComptonTelescopeDataDict_162_0_49, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTCalorimeterETowerNbr",2470,G__TComptonTelescopeDataDict_162_0_50, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTCalorimeterEDetectorNbr",2767,G__TComptonTelescopeDataDict_162_0_51, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTCalorimeterEChannelNbr",2638,G__TComptonTelescopeDataDict_162_0_52, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTCalorimeterEEnergy",2269,G__TComptonTelescopeDataDict_162_0_53, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTCalorimeterTMult",2084,G__TComptonTelescopeDataDict_162_0_54, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTCalorimeterTTowerNbr",2485,G__TComptonTelescopeDataDict_162_0_55, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTCalorimeterTDetectorNbr",2782,G__TComptonTelescopeDataDict_162_0_56, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTCalorimeterTChannelNbr",2653,G__TComptonTelescopeDataDict_162_0_57, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTCalorimeterTTime",2065,G__TComptonTelescopeDataDict_162_0_58, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Class",502,G__TComptonTelescopeDataDict_162_0_59, 85, G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TComptonTelescopeData::Class) ), 0); + G__memfunc_setup("Class_Name",982,G__TComptonTelescopeDataDict_162_0_60, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TComptonTelescopeData::Class_Name) ), 0); + G__memfunc_setup("Class_Version",1339,G__TComptonTelescopeDataDict_162_0_61, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TComptonTelescopeData::Class_Version) ), 0); + G__memfunc_setup("Dictionary",1046,G__TComptonTelescopeDataDict_162_0_62, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TComptonTelescopeData::Dictionary) ), 0); + G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_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__TComptonTelescopeDataDict_162_0_66, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("DeclFileName",1145,G__TComptonTelescopeDataDict_162_0_67, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TComptonTelescopeData::DeclFileName) ), 0); + G__memfunc_setup("ImplFileLine",1178,G__TComptonTelescopeDataDict_162_0_68, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TComptonTelescopeData::ImplFileLine) ), 0); + G__memfunc_setup("ImplFileName",1171,G__TComptonTelescopeDataDict_162_0_69, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TComptonTelescopeData::ImplFileName) ), 0); + G__memfunc_setup("DeclFileLine",1152,G__TComptonTelescopeDataDict_162_0_70, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TComptonTelescopeData::DeclFileLine) ), 0); + // automatic copy constructor + G__memfunc_setup("TComptonTelescopeData", 2130, G__TComptonTelescopeDataDict_162_0_71, (int) ('i'), +G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData), -1, 0, 1, 1, 1, 0, "u 'TComptonTelescopeData' - 11 - -", (char*) NULL, (void*) NULL, 0); + // automatic destructor + G__memfunc_setup("~TComptonTelescopeData", 2256, G__TComptonTelescopeDataDict_162_0_72, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1); + // automatic assignment operator + G__memfunc_setup("operator=", 937, G__TComptonTelescopeDataDict_162_0_73, (int) ('u'), G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData), -1, 1, 1, 1, 1, 0, "u 'TComptonTelescopeData' - 11 - -", (char*) NULL, (void*) NULL, 0); + G__tag_memfunc_reset(); +} + + +/********************************************************* +* Member function information setup +*********************************************************/ +extern "C" void G__cpp_setup_memfuncTComptonTelescopeDataDict() { +} + +/********************************************************* +* 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() { + + G__resetglobalenv(); +} +extern "C" void G__cpp_setup_globalTComptonTelescopeDataDict() { + G__cpp_setup_global0(); + G__cpp_setup_global1(); +} + +/********************************************************* +* 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_funcTComptonTelescopeDataDict() { + 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__TComptonTelescopeDataDictLN_TClass = { "TClass" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeDataDictLN_TBuffer = { "TBuffer" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeDataDictLN_TObject = { "TObject" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR = { "vector<unsigned short,allocator<unsigned short> >" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR = { "vector<double,allocator<double> >" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeDataDictLN_TComptonTelescopeData = { "TComptonTelescopeData" , 99 , -1 }; + +/* Reset class/struct taginfo */ +extern "C" void G__cpp_reset_tagtableTComptonTelescopeDataDict() { + G__TComptonTelescopeDataDictLN_TClass.tagnum = -1 ; + G__TComptonTelescopeDataDictLN_TBuffer.tagnum = -1 ; + G__TComptonTelescopeDataDictLN_TMemberInspector.tagnum = -1 ; + G__TComptonTelescopeDataDictLN_TObject.tagnum = -1 ; + G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR.tagnum = -1 ; + G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR.tagnum = -1 ; + G__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ; + G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ; + G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TComptonTelescopeDataDictLN_TComptonTelescopeData.tagnum = -1 ; +} + + +extern "C" void G__cpp_setup_tagtableTComptonTelescopeDataDict() { + + /* Setting up class,struct,union tag entry */ + G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_TClass); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_TBuffer); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_TMemberInspector); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_TObject); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR); + G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData),sizeof(TComptonTelescopeData),-1,29952,"ComptonTelescopeData structure",G__setup_memvarTComptonTelescopeData,G__setup_memfuncTComptonTelescopeData); +} +extern "C" void G__cpp_setupTComptonTelescopeDataDict(void) { + G__check_setup_version(30051515,"G__cpp_setupTComptonTelescopeDataDict()"); + G__set_cpp_environmentTComptonTelescopeDataDict(); + G__cpp_setup_tagtableTComptonTelescopeDataDict(); + + G__cpp_setup_inheritanceTComptonTelescopeDataDict(); + + G__cpp_setup_typetableTComptonTelescopeDataDict(); + + G__cpp_setup_memvarTComptonTelescopeDataDict(); + + G__cpp_setup_memfuncTComptonTelescopeDataDict(); + G__cpp_setup_globalTComptonTelescopeDataDict(); + G__cpp_setup_funcTComptonTelescopeDataDict(); + + if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTComptonTelescopeDataDict(); + return; +} +class G__cpp_setup_initTComptonTelescopeDataDict { + public: + G__cpp_setup_initTComptonTelescopeDataDict() { G__add_setup_func("TComptonTelescopeDataDict",(G__incsetup)(&G__cpp_setupTComptonTelescopeDataDict)); G__call_setup_funcs(); } + ~G__cpp_setup_initTComptonTelescopeDataDict() { G__remove_setup_func("TComptonTelescopeDataDict"); } +}; +G__cpp_setup_initTComptonTelescopeDataDict G__cpp_setup_initializerTComptonTelescopeDataDict; + diff --git a/NPLib/ComptonTelescope/TComptonTelescopeDataDict.h b/NPLib/ComptonTelescope/TComptonTelescopeDataDict.h new file mode 100644 index 0000000000000000000000000000000000000000..a30944881c25f521652a8d74e97dedb2b13b876b --- /dev/null +++ b/NPLib/ComptonTelescope/TComptonTelescopeDataDict.h @@ -0,0 +1,54 @@ +/******************************************************************** +* TComptonTelescopeDataDict.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 TComptonTelescopeDataDict.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_tagtableTComptonTelescopeDataDict(); +extern void G__cpp_setup_inheritanceTComptonTelescopeDataDict(); +extern void G__cpp_setup_typetableTComptonTelescopeDataDict(); +extern void G__cpp_setup_memvarTComptonTelescopeDataDict(); +extern void G__cpp_setup_globalTComptonTelescopeDataDict(); +extern void G__cpp_setup_memfuncTComptonTelescopeDataDict(); +extern void G__cpp_setup_funcTComptonTelescopeDataDict(); +extern void G__set_cpp_environmentTComptonTelescopeDataDict(); +} + + +#include "TObject.h" +#include "TMemberInspector.h" +#include "TComptonTelescopeData.h" +#include <algorithm> +namespace std { } +using namespace std; + +#ifndef G__MEMFUNCBODY +#endif + +extern G__linked_taginfo G__TComptonTelescopeDataDictLN_TClass; +extern G__linked_taginfo G__TComptonTelescopeDataDictLN_TBuffer; +extern G__linked_taginfo G__TComptonTelescopeDataDictLN_TMemberInspector; +extern G__linked_taginfo G__TComptonTelescopeDataDictLN_TObject; +extern G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR; +extern G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR; +extern G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR; +extern G__linked_taginfo G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR; +extern G__linked_taginfo G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TComptonTelescopeDataDictLN_TComptonTelescopeData; + +/* STUB derived class for protected member access */ diff --git a/NPLib/ComptonTelescope/TComptonTelescopeProcessData.cxx b/NPLib/ComptonTelescope/TComptonTelescopeProcessData.cxx new file mode 100755 index 0000000000000000000000000000000000000000..faee2d725e23b171d69e9c07e539546221d7a9d6 --- /dev/null +++ b/NPLib/ComptonTelescope/TComptonTelescopeProcessData.cxx @@ -0,0 +1,64 @@ +/***************************************************************************** + * 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: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * * + * Creation Date : July 2012 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class holds the raw data for a Compton telescope prototype made of * + * a silicon tracker detector and a LaBr3 calorimeter * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include <iostream> +using namespace std; + +#include "TComptonTelescopeProcessData.h" + +ClassImp(TComptonTelescopeProcessData) + +TComptonTelescopeProcessData::TComptonTelescopeProcessData() +{ + // Default constructor + Clear(); +} + + + +TComptonTelescopeProcessData::~TComptonTelescopeProcessData() +{ +} + + + +void TComptonTelescopeProcessData::Clear() +{ + // DSSSD + // (X,E) + fCT_Tracker_Compton_TowerNbr.clear(); + fCT_Tracker_Compton_DetectorNbr.clear(); + fCT_Tracker_Compton_Energy.clear(); +} + + + +void TComptonTelescopeProcessData::Dump() const +{ + cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event: Compton Telescope Process XXXXXXXXXXXXXXXXX" << endl; + + // DSSSD + // (X,E) + cout << "CT_Tracker_Compton_Mult = " << fCT_Tracker_Compton_DetectorNbr.size() << endl; + for (UShort_t i = 0; i < fCT_Tracker_Compton_DetectorNbr.size(); i++) + cout << "TowNbr: " << fCT_Tracker_Compton_TowerNbr[i] << " DetNbr: " << fCT_Tracker_Compton_DetectorNbr[i] << " Energy: " << fCT_Tracker_Compton_Energy[i] << endl; +} diff --git a/NPLib/ComptonTelescope/TComptonTelescopeProcessData.h b/NPLib/ComptonTelescope/TComptonTelescopeProcessData.h new file mode 100755 index 0000000000000000000000000000000000000000..3852d7c830ac332de613b0c94c527e59133a68de --- /dev/null +++ b/NPLib/ComptonTelescope/TComptonTelescopeProcessData.h @@ -0,0 +1,65 @@ +#ifndef __COMPTONTELESCOPEPROCESSDATA__ +#define __COMPTONTELESCOPEPROCESSDATA__ +/***************************************************************************** + * 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: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * * + * Creation Date : July 2012 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class holds the raw data for a Compton telescope prototype made of * + * a silicon tracker detector and a LaBr3 calorimeter * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include <vector> +#include "TObject.h" + +using namespace std ; +class TComptonTelescopeProcessData : public TObject { + private: + // DSSSD tracker + // Energy + vector<UShort_t> fCT_Tracker_Compton_TowerNbr; + vector<UShort_t> fCT_Tracker_Compton_DetectorNbr; + vector<Double_t> fCT_Tracker_Compton_Energy; + + + public: + TComptonTelescopeProcessData(); + virtual ~TComptonTelescopeProcessData(); + + void Clear(); + void Clear(const Option_t*) {}; + void Dump() const; + + ///////////////////// SETTERS //////////////////////// + // DSSD + // (X,E) + void SetCTTrackerComptonTowerNbr(const UShort_t TowNbr) {fCT_Tracker_Compton_TowerNbr.push_back(TowNbr);} + void SetCTTrackerComptonDetectorNbr(const UShort_t DetNbr) {fCT_Tracker_Compton_DetectorNbr.push_back(DetNbr);} + void SetCTTrackerComptonEnergy(const Double_t Energy) {fCT_Tracker_Compton_Energy.push_back(Energy);} + + + ///////////////////// GETTERS //////////////////////// + // DSSD + // (X,E) + UShort_t GetCTTrackerComptonMult() const {return fCT_Tracker_Compton_TowerNbr.size();} + UShort_t GetCTTrackerComptonTowerNbr(const Int_t i) const {return fCT_Tracker_Compton_TowerNbr[i];} + UShort_t GetCTTrackerComptonDetectorNbr(const Int_t i) const {return fCT_Tracker_Compton_DetectorNbr[i];} + Double_t GetCTTrackerComptonEnergy(const Int_t i) const {return fCT_Tracker_Compton_Energy[i];} + + ClassDef(TComptonTelescopeProcessData,1) // ComptonTelescopeProcessData structure +}; + +#endif diff --git a/NPLib/ComptonTelescope/TComptonTelescopeProcessDataDict.cxx b/NPLib/ComptonTelescope/TComptonTelescopeProcessDataDict.cxx new file mode 100644 index 0000000000000000000000000000000000000000..b73fc8d7877819a4e9c3be59a976714e12b11711 --- /dev/null +++ b/NPLib/ComptonTelescope/TComptonTelescopeProcessDataDict.cxx @@ -0,0 +1,891 @@ +// +// File generated by rootcint at Tue Jul 17 16:40:46 2012 + +// Do NOT change. Changes will be lost next time file is generated +// + +#define R__DICTIONARY_FILENAME TComptonTelescopeProcessDataDict +#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 "TComptonTelescopeProcessDataDict.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 TComptonTelescopeProcessData_ShowMembers(void *obj, TMemberInspector &R__insp); + static void *new_TComptonTelescopeProcessData(void *p = 0); + static void *newArray_TComptonTelescopeProcessData(Long_t size, void *p); + static void delete_TComptonTelescopeProcessData(void *p); + static void deleteArray_TComptonTelescopeProcessData(void *p); + static void destruct_TComptonTelescopeProcessData(void *p); + static void streamer_TComptonTelescopeProcessData(TBuffer &buf, void *obj); + + // Function generating the singleton type initializer + static TGenericClassInfo *GenerateInitInstanceLocal(const ::TComptonTelescopeProcessData*) + { + ::TComptonTelescopeProcessData *ptr = 0; + static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TComptonTelescopeProcessData >(0); + static ::ROOT::TGenericClassInfo + instance("TComptonTelescopeProcessData", ::TComptonTelescopeProcessData::Class_Version(), "./TComptonTelescopeProcessData.h", 29, + typeid(::TComptonTelescopeProcessData), DefineBehavior(ptr, ptr), + &::TComptonTelescopeProcessData::Dictionary, isa_proxy, 0, + sizeof(::TComptonTelescopeProcessData) ); + instance.SetNew(&new_TComptonTelescopeProcessData); + instance.SetNewArray(&newArray_TComptonTelescopeProcessData); + instance.SetDelete(&delete_TComptonTelescopeProcessData); + instance.SetDeleteArray(&deleteArray_TComptonTelescopeProcessData); + instance.SetDestructor(&destruct_TComptonTelescopeProcessData); + instance.SetStreamerFunc(&streamer_TComptonTelescopeProcessData); + return &instance; + } + TGenericClassInfo *GenerateInitInstance(const ::TComptonTelescopeProcessData*) + { + return GenerateInitInstanceLocal((::TComptonTelescopeProcessData*)0); + } + // Static variable to force the class initialization + static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TComptonTelescopeProcessData*)0x0); R__UseDummy(_R__UNIQUE_(Init)); +} // end of namespace ROOT + +//______________________________________________________________________________ +TClass *TComptonTelescopeProcessData::fgIsA = 0; // static to hold class pointer + +//______________________________________________________________________________ +const char *TComptonTelescopeProcessData::Class_Name() +{ + return "TComptonTelescopeProcessData"; +} + +//______________________________________________________________________________ +const char *TComptonTelescopeProcessData::ImplFileName() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeProcessData*)0x0)->GetImplFileName(); +} + +//______________________________________________________________________________ +int TComptonTelescopeProcessData::ImplFileLine() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeProcessData*)0x0)->GetImplFileLine(); +} + +//______________________________________________________________________________ +void TComptonTelescopeProcessData::Dictionary() +{ + fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeProcessData*)0x0)->GetClass(); +} + +//______________________________________________________________________________ +TClass *TComptonTelescopeProcessData::Class() +{ + if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeProcessData*)0x0)->GetClass(); + return fgIsA; +} + +//______________________________________________________________________________ +void TComptonTelescopeProcessData::Streamer(TBuffer &R__b) +{ + // Stream an object of class TComptonTelescopeProcessData. + + 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 = fCT_Tracker_Compton_TowerNbr; + 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 = fCT_Tracker_Compton_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<Double_t> &R__stl = fCT_Tracker_Compton_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); + } + } + R__b.CheckByteCount(R__s, R__c, TComptonTelescopeProcessData::IsA()); + } else { + R__c = R__b.WriteVersion(TComptonTelescopeProcessData::IsA(), kTRUE); + TObject::Streamer(R__b); + { + vector<UShort_t> &R__stl = fCT_Tracker_Compton_TowerNbr; + 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 = fCT_Tracker_Compton_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<Double_t> &R__stl = fCT_Tracker_Compton_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); + } + } + } + R__b.SetByteCount(R__c, kTRUE); + } +} + +//______________________________________________________________________________ +void TComptonTelescopeProcessData::ShowMembers(TMemberInspector &R__insp) +{ + // Inspect the data members of an object of class TComptonTelescopeProcessData. + TClass *R__cl = ::TComptonTelescopeProcessData::IsA(); + if (R__cl || R__insp.IsA()) { } + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_Compton_TowerNbr", (void*)&fCT_Tracker_Compton_TowerNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_Compton_TowerNbr, "fCT_Tracker_Compton_TowerNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_Compton_DetectorNbr", (void*)&fCT_Tracker_Compton_DetectorNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_Compton_DetectorNbr, "fCT_Tracker_Compton_DetectorNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_Compton_Energy", (void*)&fCT_Tracker_Compton_Energy); + R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Tracker_Compton_Energy, "fCT_Tracker_Compton_Energy.", false); + TObject::ShowMembers(R__insp); +} + +namespace ROOT { + // Wrappers around operator new + static void *new_TComptonTelescopeProcessData(void *p) { + return p ? new(p) ::TComptonTelescopeProcessData : new ::TComptonTelescopeProcessData; + } + static void *newArray_TComptonTelescopeProcessData(Long_t nElements, void *p) { + return p ? new(p) ::TComptonTelescopeProcessData[nElements] : new ::TComptonTelescopeProcessData[nElements]; + } + // Wrapper around operator delete + static void delete_TComptonTelescopeProcessData(void *p) { + delete ((::TComptonTelescopeProcessData*)p); + } + static void deleteArray_TComptonTelescopeProcessData(void *p) { + delete [] ((::TComptonTelescopeProcessData*)p); + } + static void destruct_TComptonTelescopeProcessData(void *p) { + typedef ::TComptonTelescopeProcessData current_t; + ((current_t*)p)->~current_t(); + } + // Wrapper around a custom streamer member function. + static void streamer_TComptonTelescopeProcessData(TBuffer &buf, void *obj) { + ((::TComptonTelescopeProcessData*)obj)->::TComptonTelescopeProcessData::Streamer(buf); + } +} // end of namespace ROOT for class ::TComptonTelescopeProcessData + +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> + +/******************************************************** +* TComptonTelescopeProcessDataDict.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_tagtableTComptonTelescopeProcessDataDict(); + +extern "C" void G__set_cpp_environmentTComptonTelescopeProcessDataDict() { + G__add_compiledheader("TObject.h"); + G__add_compiledheader("TMemberInspector.h"); + G__add_compiledheader("TComptonTelescopeProcessData.h"); + G__cpp_reset_tagtableTComptonTelescopeProcessDataDict(); +} +#include <new> +extern "C" int G__cpp_dllrevTComptonTelescopeProcessDataDict() { return(30051515); } + +/********************************************************* +* Member function Interface Method +*********************************************************/ + +/* TComptonTelescopeProcessData */ +static int G__TComptonTelescopeProcessDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TComptonTelescopeProcessData* p = NULL; + char* gvp = (char*) G__getgvp(); + int n = G__getaryconstruct(); + if (n) { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TComptonTelescopeProcessData[n]; + } else { + p = new((void*) gvp) TComptonTelescopeProcessData[n]; + } + } else { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TComptonTelescopeProcessData; + } else { + p = new((void*) gvp) TComptonTelescopeProcessData; + } + } + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData)); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeProcessData*) G__getstructoffset())->Clear(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeProcessData*) G__getstructoffset())->SetCTTrackerComptonTowerNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeProcessData*) G__getstructoffset())->SetCTTrackerComptonDetectorNbr((const UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeProcessData*) G__getstructoffset())->SetCTTrackerComptonEnergy((const Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeProcessData*) G__getstructoffset())->GetCTTrackerComptonMult()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeProcessData*) G__getstructoffset())->GetCTTrackerComptonTowerNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((const TComptonTelescopeProcessData*) G__getstructoffset())->GetCTTrackerComptonDetectorNbr((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((const TComptonTelescopeProcessData*) G__getstructoffset())->GetCTTrackerComptonEnergy((const Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 85, (long) TComptonTelescopeProcessData::Class()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TComptonTelescopeProcessData::Class_Name()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 115, (long) TComptonTelescopeProcessData::Class_Version()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TComptonTelescopeProcessData::Dictionary(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TComptonTelescopeProcessData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TComptonTelescopeProcessData::DeclFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TComptonTelescopeProcessData::ImplFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TComptonTelescopeProcessData::ImplFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TComptonTelescopeProcessDataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TComptonTelescopeProcessData::DeclFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic copy constructor +static int G__TComptonTelescopeProcessDataDict_162_0_24(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) + +{ + TComptonTelescopeProcessData* p; + void* tmp = (void*) G__int(libp->para[0]); + p = new TComptonTelescopeProcessData(*(TComptonTelescopeProcessData*) tmp); + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData)); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic destructor +typedef TComptonTelescopeProcessData G__TTComptonTelescopeProcessData; +static int G__TComptonTelescopeProcessDataDict_162_0_25(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[] (TComptonTelescopeProcessData*) soff; + } else { + G__setgvp((long) G__PVOID); + for (int i = n - 1; i >= 0; --i) { + ((TComptonTelescopeProcessData*) (soff+(sizeof(TComptonTelescopeProcessData)*i)))->~G__TTComptonTelescopeProcessData(); + } + G__setgvp((long)gvp); + } + } else { + if (gvp == (char*)G__PVOID) { + delete (TComptonTelescopeProcessData*) soff; + } else { + G__setgvp((long) G__PVOID); + ((TComptonTelescopeProcessData*) (soff))->~G__TTComptonTelescopeProcessData(); + G__setgvp((long)gvp); + } + } + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic assignment operator +static int G__TComptonTelescopeProcessDataDict_162_0_26(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TComptonTelescopeProcessData* dest = (TComptonTelescopeProcessData*) G__getstructoffset(); + *dest = *(TComptonTelescopeProcessData*) libp->para[0].ref; + const TComptonTelescopeProcessData& obj = *dest; + result7->ref = (long) (&obj); + result7->obj.i = (long) (&obj); + return(1 || funcname || hash || result7 || libp) ; +} + + +/* Setting up global function */ + +/********************************************************* +* Member function Stub +*********************************************************/ + +/* TComptonTelescopeProcessData */ + +/********************************************************* +* Global function Stub +*********************************************************/ + +/********************************************************* +* Get size of pointer to member function +*********************************************************/ +class G__Sizep2memfuncTComptonTelescopeProcessDataDict { + public: + G__Sizep2memfuncTComptonTelescopeProcessDataDict(): p(&G__Sizep2memfuncTComptonTelescopeProcessDataDict::sizep2memfunc) {} + size_t sizep2memfunc() { return(sizeof(p)); } + private: + size_t (G__Sizep2memfuncTComptonTelescopeProcessDataDict::*p)(); +}; + +size_t G__get_sizep2memfuncTComptonTelescopeProcessDataDict() +{ + G__Sizep2memfuncTComptonTelescopeProcessDataDict 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_inheritanceTComptonTelescopeProcessDataDict() { + + /* Setting up class inheritance */ + if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData))) { + TComptonTelescopeProcessData *G__Lderived; + G__Lderived=(TComptonTelescopeProcessData*)0x1000; + { + TObject *G__Lpbase=(TObject*)G__Lderived; + G__inheritance_setup(G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData),G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1); + } + } +} + +/********************************************************* +* typedef information setup/ +*********************************************************/ +extern "C" void G__cpp_setup_typetableTComptonTelescopeProcessDataDict() { + + /* 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("Int_t",105,-1,0,-1); + G__setnewtype(-1,"Signed integer 4 bytes (int)",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__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<UShort_t>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<Double_t>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),0,-1); + G__setnewtype(-1,NULL,0); +} + +/********************************************************* +* Data Member information setup/ +*********************************************************/ + + /* Setting up class,struct,union tag member variable */ + + /* TComptonTelescopeProcessData */ +static void G__setup_memvarTComptonTelescopeProcessData(void) { + G__tag_memvar_setup(G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData)); + { TComptonTelescopeProcessData *p; p=(TComptonTelescopeProcessData*)0x1000; if (p) { } + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_Compton_TowerNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_Compton_DetectorNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Tracker_Compton_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL); + } + G__tag_memvar_reset(); +} + +extern "C" void G__cpp_setup_memvarTComptonTelescopeProcessDataDict() { +} +/*********************************************************** +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +***********************************************************/ + +/********************************************************* +* Member function information setup for each class +*********************************************************/ +static void G__setup_memfuncTComptonTelescopeProcessData(void) { + /* TComptonTelescopeProcessData */ + G__tag_memfunc_setup(G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData)); + G__memfunc_setup("TComptonTelescopeProcessData",2865,G__TComptonTelescopeProcessDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Clear",487,G__TComptonTelescopeProcessDataDict_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("SetCTTrackerComptonTowerNbr",2722,G__TComptonTelescopeProcessDataDict_162_0_5, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerComptonDetectorNbr",3019,G__TComptonTelescopeProcessDataDict_162_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetCTTrackerComptonEnergy",2521,G__TComptonTelescopeProcessDataDict_162_0_7, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Energy", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerComptonMult",2309,G__TComptonTelescopeProcessDataDict_162_0_8, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerComptonTowerNbr",2710,G__TComptonTelescopeProcessDataDict_162_0_9, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerComptonDetectorNbr",3007,G__TComptonTelescopeProcessDataDict_162_0_10, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetCTTrackerComptonEnergy",2509,G__TComptonTelescopeProcessDataDict_162_0_11, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Class",502,G__TComptonTelescopeProcessDataDict_162_0_12, 85, G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TComptonTelescopeProcessData::Class) ), 0); + G__memfunc_setup("Class_Name",982,G__TComptonTelescopeProcessDataDict_162_0_13, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TComptonTelescopeProcessData::Class_Name) ), 0); + G__memfunc_setup("Class_Version",1339,G__TComptonTelescopeProcessDataDict_162_0_14, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TComptonTelescopeProcessData::Class_Version) ), 0); + G__memfunc_setup("Dictionary",1046,G__TComptonTelescopeProcessDataDict_162_0_15, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TComptonTelescopeProcessData::Dictionary) ), 0); + G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_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__TComptonTelescopeProcessDataDict_162_0_19, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("DeclFileName",1145,G__TComptonTelescopeProcessDataDict_162_0_20, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TComptonTelescopeProcessData::DeclFileName) ), 0); + G__memfunc_setup("ImplFileLine",1178,G__TComptonTelescopeProcessDataDict_162_0_21, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TComptonTelescopeProcessData::ImplFileLine) ), 0); + G__memfunc_setup("ImplFileName",1171,G__TComptonTelescopeProcessDataDict_162_0_22, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TComptonTelescopeProcessData::ImplFileName) ), 0); + G__memfunc_setup("DeclFileLine",1152,G__TComptonTelescopeProcessDataDict_162_0_23, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TComptonTelescopeProcessData::DeclFileLine) ), 0); + // automatic copy constructor + G__memfunc_setup("TComptonTelescopeProcessData", 2865, G__TComptonTelescopeProcessDataDict_162_0_24, (int) ('i'), +G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData), -1, 0, 1, 1, 1, 0, "u 'TComptonTelescopeProcessData' - 11 - -", (char*) NULL, (void*) NULL, 0); + // automatic destructor + G__memfunc_setup("~TComptonTelescopeProcessData", 2991, G__TComptonTelescopeProcessDataDict_162_0_25, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1); + // automatic assignment operator + G__memfunc_setup("operator=", 937, G__TComptonTelescopeProcessDataDict_162_0_26, (int) ('u'), G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData), -1, 1, 1, 1, 1, 0, "u 'TComptonTelescopeProcessData' - 11 - -", (char*) NULL, (void*) NULL, 0); + G__tag_memfunc_reset(); +} + + +/********************************************************* +* Member function information setup +*********************************************************/ +extern "C" void G__cpp_setup_memfuncTComptonTelescopeProcessDataDict() { +} + +/********************************************************* +* 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() { + + G__resetglobalenv(); +} +extern "C" void G__cpp_setup_globalTComptonTelescopeProcessDataDict() { + G__cpp_setup_global0(); + G__cpp_setup_global1(); +} + +/********************************************************* +* 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_funcTComptonTelescopeProcessDataDict() { + 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__TComptonTelescopeProcessDataDictLN_TClass = { "TClass" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TBuffer = { "TBuffer" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TObject = { "TObject" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR = { "vector<unsigned short,allocator<unsigned short> >" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR = { "vector<double,allocator<double> >" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData = { "TComptonTelescopeProcessData" , 99 , -1 }; + +/* Reset class/struct taginfo */ +extern "C" void G__cpp_reset_tagtableTComptonTelescopeProcessDataDict() { + G__TComptonTelescopeProcessDataDictLN_TClass.tagnum = -1 ; + G__TComptonTelescopeProcessDataDictLN_TBuffer.tagnum = -1 ; + G__TComptonTelescopeProcessDataDictLN_TMemberInspector.tagnum = -1 ; + G__TComptonTelescopeProcessDataDictLN_TObject.tagnum = -1 ; + G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR.tagnum = -1 ; + G__TComptonTelescopeProcessDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR.tagnum = -1 ; + G__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ; + G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ; + G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData.tagnum = -1 ; +} + + +extern "C" void G__cpp_setup_tagtableTComptonTelescopeProcessDataDict() { + + /* Setting up class,struct,union tag entry */ + G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_TClass); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_TBuffer); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_TMemberInspector); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_TObject); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR); + G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR); + G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData),sizeof(TComptonTelescopeProcessData),-1,29952,"ComptonTelescopeProcessData structure",G__setup_memvarTComptonTelescopeProcessData,G__setup_memfuncTComptonTelescopeProcessData); +} +extern "C" void G__cpp_setupTComptonTelescopeProcessDataDict(void) { + G__check_setup_version(30051515,"G__cpp_setupTComptonTelescopeProcessDataDict()"); + G__set_cpp_environmentTComptonTelescopeProcessDataDict(); + G__cpp_setup_tagtableTComptonTelescopeProcessDataDict(); + + G__cpp_setup_inheritanceTComptonTelescopeProcessDataDict(); + + G__cpp_setup_typetableTComptonTelescopeProcessDataDict(); + + G__cpp_setup_memvarTComptonTelescopeProcessDataDict(); + + G__cpp_setup_memfuncTComptonTelescopeProcessDataDict(); + G__cpp_setup_globalTComptonTelescopeProcessDataDict(); + G__cpp_setup_funcTComptonTelescopeProcessDataDict(); + + if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTComptonTelescopeProcessDataDict(); + return; +} +class G__cpp_setup_initTComptonTelescopeProcessDataDict { + public: + G__cpp_setup_initTComptonTelescopeProcessDataDict() { G__add_setup_func("TComptonTelescopeProcessDataDict",(G__incsetup)(&G__cpp_setupTComptonTelescopeProcessDataDict)); G__call_setup_funcs(); } + ~G__cpp_setup_initTComptonTelescopeProcessDataDict() { G__remove_setup_func("TComptonTelescopeProcessDataDict"); } +}; +G__cpp_setup_initTComptonTelescopeProcessDataDict G__cpp_setup_initializerTComptonTelescopeProcessDataDict; + diff --git a/NPLib/ComptonTelescope/TComptonTelescopeProcessDataDict.h b/NPLib/ComptonTelescope/TComptonTelescopeProcessDataDict.h new file mode 100644 index 0000000000000000000000000000000000000000..9957accfe2d3e37aeed67d87e1acf736fe23f8d5 --- /dev/null +++ b/NPLib/ComptonTelescope/TComptonTelescopeProcessDataDict.h @@ -0,0 +1,54 @@ +/******************************************************************** +* TComptonTelescopeProcessDataDict.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 TComptonTelescopeProcessDataDict.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_tagtableTComptonTelescopeProcessDataDict(); +extern void G__cpp_setup_inheritanceTComptonTelescopeProcessDataDict(); +extern void G__cpp_setup_typetableTComptonTelescopeProcessDataDict(); +extern void G__cpp_setup_memvarTComptonTelescopeProcessDataDict(); +extern void G__cpp_setup_globalTComptonTelescopeProcessDataDict(); +extern void G__cpp_setup_memfuncTComptonTelescopeProcessDataDict(); +extern void G__cpp_setup_funcTComptonTelescopeProcessDataDict(); +extern void G__set_cpp_environmentTComptonTelescopeProcessDataDict(); +} + + +#include "TObject.h" +#include "TMemberInspector.h" +#include "TComptonTelescopeProcessData.h" +#include <algorithm> +namespace std { } +using namespace std; + +#ifndef G__MEMFUNCBODY +#endif + +extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TClass; +extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TBuffer; +extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TMemberInspector; +extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TObject; +extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR; +extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR; +extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR; +extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR; +extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData; + +/* STUB derived class for protected member access */ diff --git a/NPLib/Eurogam/Makefile b/NPLib/Eurogam/Makefile new file mode 100755 index 0000000000000000000000000000000000000000..745f0249cc2a2c2fcbc768a10cb62faa8b8681eb --- /dev/null +++ b/NPLib/Eurogam/Makefile @@ -0,0 +1,37 @@ +include ../Makefile.arch + + +#------------------------------------------------------------------------------ +SHARELIB = libEurogamData.so + +all: $(SHARELIB) +#------------------------------------------------------------------------------ + +############### Detector ############## + +## Eurogam ## +libEurogamData.so: TEurogamData.o TEurogamDataDict.o + $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ + +TEurogamDataDict.cxx: TEurogamData.h + rootcint -f $@ -c $^ + +# dependances +TEurogamData.o: TEurogamData.cxx TEurogamData.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/Eurogam/TEurogamData.cxx b/NPLib/Eurogam/TEurogamData.cxx new file mode 100755 index 0000000000000000000000000000000000000000..0511c1536478b01c3560f5dd26ece0d6ac93f2bb --- /dev/null +++ b/NPLib/Eurogam/TEurogamData.cxx @@ -0,0 +1,56 @@ +#include <iostream> +#include "TEurogamData.h" +/***************************************************************************** + * 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: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * * + * Creation Date : October 2009 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class described the raw data of a Eurogam germanium detector * + * * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +ClassImp(TEurogamData) + +TEurogamData::TEurogamData() +{ +} + + + +TEurogamData::~TEurogamData() +{ +} + + + +void TEurogamData::Clear() +{ + fEurogam_DetectorNumber.clear(); + fEurogam_Energy.clear(); + fEurogam_Time.clear(); +} + + + +void TEurogamData::Dump() const +{ + cout << "XXXXXXXXXXX TEurogamData: New Event XXXXXXXXXXXXXXXXX" << endl; + + for (UShort_t i = 0 ; i < fEurogam_DetectorNumber.size(); i ++) { + cout << "Eurogam Number " << fEurogam_DetectorNumber[i] << " Energy: " << fEurogam_Energy[i] << " Time: "<< fEurogam_Time[i] << endl; + } +} diff --git a/NPLib/Eurogam/TEurogamData.h b/NPLib/Eurogam/TEurogamData.h new file mode 100755 index 0000000000000000000000000000000000000000..c2e81d5d3859012df91edb4a41072af70a511e08 --- /dev/null +++ b/NPLib/Eurogam/TEurogamData.h @@ -0,0 +1,62 @@ +#ifndef __EurogamDATA__ +#define __EurogamDATA__ +/***************************************************************************** + * 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: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * * + * Creation Date : October 2009 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class described the raw data of a Eurogam germanium detector * + * * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include <vector> + +#include "TObject.h" +using namespace std ; + + +class TEurogamData : public TObject { + private: + vector<UShort_t> fEurogam_DetectorNumber; + vector<Double_t> fEurogam_Energy; + vector<Double_t> fEurogam_Time; + + public: + TEurogamData(); + virtual ~TEurogamData(); + + void Clear(); + void Clear(const Option_t*) {}; + void Dump() const; + + ///////////////////// GETTERS //////////////////////// + UShort_t GetEurogamDetectorNumber(Int_t i) {return fEurogam_DetectorNumber.at(i);} + Double_t GetEurogamEnergy(Int_t i) {return fEurogam_Energy.at(i);} + Double_t GetEurogamTime(Int_t i) {return fEurogam_Time.at(i);} + + Double_t GetEurogamEnergyMult() {return fEurogam_Energy.size();} + Double_t GetEurogamTimeMult() {return fEurogam_Time.size();} + + + ///////////////////// SETTERS //////////////////////// + void SetEurogamDetectorNumber(Int_t N) {fEurogam_DetectorNumber.push_back(N);} + void SetEurogamEnergy(Double_t E) {fEurogam_Energy.push_back(E);} + void SetEurogamTime(Double_t T) {fEurogam_Time.push_back(T);} + + ClassDef(TEurogamData,1) // EurogamData structure +}; + +#endif diff --git a/NPLib/Eurogam/TEurogamDataDict.cxx b/NPLib/Eurogam/TEurogamDataDict.cxx new file mode 100644 index 0000000000000000000000000000000000000000..e187cc5de0600099434503b814549db34582858b --- /dev/null +++ b/NPLib/Eurogam/TEurogamDataDict.cxx @@ -0,0 +1,897 @@ +// +// File generated by rootcint at Tue Jul 17 16:40:49 2012 + +// Do NOT change. Changes will be lost next time file is generated +// + +#define R__DICTIONARY_FILENAME TEurogamDataDict +#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 "TEurogamDataDict.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 TEurogamData_ShowMembers(void *obj, TMemberInspector &R__insp); + static void *new_TEurogamData(void *p = 0); + static void *newArray_TEurogamData(Long_t size, void *p); + static void delete_TEurogamData(void *p); + static void deleteArray_TEurogamData(void *p); + static void destruct_TEurogamData(void *p); + static void streamer_TEurogamData(TBuffer &buf, void *obj); + + // Function generating the singleton type initializer + static TGenericClassInfo *GenerateInitInstanceLocal(const ::TEurogamData*) + { + ::TEurogamData *ptr = 0; + static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TEurogamData >(0); + static ::ROOT::TGenericClassInfo + instance("TEurogamData", ::TEurogamData::Class_Version(), "./TEurogamData.h", 31, + typeid(::TEurogamData), DefineBehavior(ptr, ptr), + &::TEurogamData::Dictionary, isa_proxy, 0, + sizeof(::TEurogamData) ); + instance.SetNew(&new_TEurogamData); + instance.SetNewArray(&newArray_TEurogamData); + instance.SetDelete(&delete_TEurogamData); + instance.SetDeleteArray(&deleteArray_TEurogamData); + instance.SetDestructor(&destruct_TEurogamData); + instance.SetStreamerFunc(&streamer_TEurogamData); + return &instance; + } + TGenericClassInfo *GenerateInitInstance(const ::TEurogamData*) + { + return GenerateInitInstanceLocal((::TEurogamData*)0); + } + // Static variable to force the class initialization + static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TEurogamData*)0x0); R__UseDummy(_R__UNIQUE_(Init)); +} // end of namespace ROOT + +//______________________________________________________________________________ +TClass *TEurogamData::fgIsA = 0; // static to hold class pointer + +//______________________________________________________________________________ +const char *TEurogamData::Class_Name() +{ + return "TEurogamData"; +} + +//______________________________________________________________________________ +const char *TEurogamData::ImplFileName() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TEurogamData*)0x0)->GetImplFileName(); +} + +//______________________________________________________________________________ +int TEurogamData::ImplFileLine() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TEurogamData*)0x0)->GetImplFileLine(); +} + +//______________________________________________________________________________ +void TEurogamData::Dictionary() +{ + fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TEurogamData*)0x0)->GetClass(); +} + +//______________________________________________________________________________ +TClass *TEurogamData::Class() +{ + if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TEurogamData*)0x0)->GetClass(); + return fgIsA; +} + +//______________________________________________________________________________ +void TEurogamData::Streamer(TBuffer &R__b) +{ + // Stream an object of class TEurogamData. + + 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 = fEurogam_DetectorNumber; + 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 = fEurogam_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 = fEurogam_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, TEurogamData::IsA()); + } else { + R__c = R__b.WriteVersion(TEurogamData::IsA(), kTRUE); + TObject::Streamer(R__b); + { + vector<UShort_t> &R__stl = fEurogam_DetectorNumber; + 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 = fEurogam_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 = fEurogam_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 TEurogamData::ShowMembers(TMemberInspector &R__insp) +{ + // Inspect the data members of an object of class TEurogamData. + TClass *R__cl = ::TEurogamData::IsA(); + if (R__cl || R__insp.IsA()) { } + R__insp.Inspect(R__cl, R__insp.GetParent(), "fEurogam_DetectorNumber", (void*)&fEurogam_DetectorNumber); + R__insp.InspectMember("vector<UShort_t>", (void*)&fEurogam_DetectorNumber, "fEurogam_DetectorNumber.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fEurogam_Energy", (void*)&fEurogam_Energy); + R__insp.InspectMember("vector<Double_t>", (void*)&fEurogam_Energy, "fEurogam_Energy.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fEurogam_Time", (void*)&fEurogam_Time); + R__insp.InspectMember("vector<Double_t>", (void*)&fEurogam_Time, "fEurogam_Time.", false); + TObject::ShowMembers(R__insp); +} + +namespace ROOT { + // Wrappers around operator new + static void *new_TEurogamData(void *p) { + return p ? new(p) ::TEurogamData : new ::TEurogamData; + } + static void *newArray_TEurogamData(Long_t nElements, void *p) { + return p ? new(p) ::TEurogamData[nElements] : new ::TEurogamData[nElements]; + } + // Wrapper around operator delete + static void delete_TEurogamData(void *p) { + delete ((::TEurogamData*)p); + } + static void deleteArray_TEurogamData(void *p) { + delete [] ((::TEurogamData*)p); + } + static void destruct_TEurogamData(void *p) { + typedef ::TEurogamData current_t; + ((current_t*)p)->~current_t(); + } + // Wrapper around a custom streamer member function. + static void streamer_TEurogamData(TBuffer &buf, void *obj) { + ((::TEurogamData*)obj)->::TEurogamData::Streamer(buf); + } +} // end of namespace ROOT for class ::TEurogamData + +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> + +/******************************************************** +* TEurogamDataDict.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_tagtableTEurogamDataDict(); + +extern "C" void G__set_cpp_environmentTEurogamDataDict() { + G__add_compiledheader("TObject.h"); + G__add_compiledheader("TMemberInspector.h"); + G__add_compiledheader("TEurogamData.h"); + G__cpp_reset_tagtableTEurogamDataDict(); +} +#include <new> +extern "C" int G__cpp_dllrevTEurogamDataDict() { return(30051515); } + +/********************************************************* +* Member function Interface Method +*********************************************************/ + +/* TEurogamData */ +static int G__TEurogamDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TEurogamData* p = NULL; + char* gvp = (char*) G__getgvp(); + int n = G__getaryconstruct(); + if (n) { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TEurogamData[n]; + } else { + p = new((void*) gvp) TEurogamData[n]; + } + } else { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TEurogamData; + } else { + p = new((void*) gvp) TEurogamData; + } + } + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData)); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TEurogamData*) G__getstructoffset())->Clear(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TEurogamData*) G__getstructoffset())->GetEurogamDetectorNumber((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((TEurogamData*) G__getstructoffset())->GetEurogamEnergy((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((TEurogamData*) G__getstructoffset())->GetEurogamTime((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((TEurogamData*) G__getstructoffset())->GetEurogamEnergyMult()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letdouble(result7, 100, (double) ((TEurogamData*) G__getstructoffset())->GetEurogamTimeMult()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TEurogamData*) G__getstructoffset())->SetEurogamDetectorNumber((Int_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TEurogamData*) G__getstructoffset())->SetEurogamEnergy((Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TEurogamData*) G__getstructoffset())->SetEurogamTime((Double_t) G__double(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 85, (long) TEurogamData::Class()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TEurogamData::Class_Name()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 115, (long) TEurogamData::Class_Version()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_16(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TEurogamData::Dictionary(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TEurogamData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TEurogamData::DeclFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TEurogamData::ImplFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TEurogamData::ImplFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TEurogamDataDict_162_0_24(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TEurogamData::DeclFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic copy constructor +static int G__TEurogamDataDict_162_0_25(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) + +{ + TEurogamData* p; + void* tmp = (void*) G__int(libp->para[0]); + p = new TEurogamData(*(TEurogamData*) tmp); + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData)); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic destructor +typedef TEurogamData G__TTEurogamData; +static int G__TEurogamDataDict_162_0_26(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[] (TEurogamData*) soff; + } else { + G__setgvp((long) G__PVOID); + for (int i = n - 1; i >= 0; --i) { + ((TEurogamData*) (soff+(sizeof(TEurogamData)*i)))->~G__TTEurogamData(); + } + G__setgvp((long)gvp); + } + } else { + if (gvp == (char*)G__PVOID) { + delete (TEurogamData*) soff; + } else { + G__setgvp((long) G__PVOID); + ((TEurogamData*) (soff))->~G__TTEurogamData(); + G__setgvp((long)gvp); + } + } + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic assignment operator +static int G__TEurogamDataDict_162_0_27(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TEurogamData* dest = (TEurogamData*) G__getstructoffset(); + *dest = *(TEurogamData*) libp->para[0].ref; + const TEurogamData& obj = *dest; + result7->ref = (long) (&obj); + result7->obj.i = (long) (&obj); + return(1 || funcname || hash || result7 || libp) ; +} + + +/* Setting up global function */ + +/********************************************************* +* Member function Stub +*********************************************************/ + +/* TEurogamData */ + +/********************************************************* +* Global function Stub +*********************************************************/ + +/********************************************************* +* Get size of pointer to member function +*********************************************************/ +class G__Sizep2memfuncTEurogamDataDict { + public: + G__Sizep2memfuncTEurogamDataDict(): p(&G__Sizep2memfuncTEurogamDataDict::sizep2memfunc) {} + size_t sizep2memfunc() { return(sizeof(p)); } + private: + size_t (G__Sizep2memfuncTEurogamDataDict::*p)(); +}; + +size_t G__get_sizep2memfuncTEurogamDataDict() +{ + G__Sizep2memfuncTEurogamDataDict 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_inheritanceTEurogamDataDict() { + + /* Setting up class inheritance */ + if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData))) { + TEurogamData *G__Lderived; + G__Lderived=(TEurogamData*)0x1000; + { + TObject *G__Lpbase=(TObject*)G__Lderived; + G__inheritance_setup(G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData),G__get_linked_tagnum(&G__TEurogamDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1); + } + } +} + +/********************************************************* +* typedef information setup/ +*********************************************************/ +extern "C" void G__cpp_setup_typetableTEurogamDataDict() { + + /* 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("Int_t",105,-1,0,-1); + G__setnewtype(-1,"Signed integer 4 bytes (int)",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__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<UShort_t>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<Double_t>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),0,-1); + G__setnewtype(-1,NULL,0); +} + +/********************************************************* +* Data Member information setup/ +*********************************************************/ + + /* Setting up class,struct,union tag member variable */ + + /* TEurogamData */ +static void G__setup_memvarTEurogamData(void) { + G__tag_memvar_setup(G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData)); + { TEurogamData *p; p=(TEurogamData*)0x1000; if (p) { } + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fEurogam_DetectorNumber=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fEurogam_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fEurogam_Time=",0,(char*)NULL); + G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TEurogamDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL); + } + G__tag_memvar_reset(); +} + +extern "C" void G__cpp_setup_memvarTEurogamDataDict() { +} +/*********************************************************** +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +***********************************************************/ + +/********************************************************* +* Member function information setup for each class +*********************************************************/ +static void G__setup_memfuncTEurogamData(void) { + /* TEurogamData */ + G__tag_memfunc_setup(G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData)); + G__memfunc_setup("TEurogamData",1182,G__TEurogamDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Clear",487,G__TEurogamDataDict_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("GetEurogamDetectorNumber",2451,G__TEurogamDataDict_162_0_5, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetEurogamEnergy",1626,G__TEurogamDataDict_162_0_6, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetEurogamTime",1407,G__TEurogamDataDict_162_0_7, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetEurogamEnergyMult",2044,G__TEurogamDataDict_162_0_8, 100, -1, G__defined_typename("Double_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetEurogamTimeMult",1825,G__TEurogamDataDict_162_0_9, 100, -1, G__defined_typename("Double_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetEurogamDetectorNumber",2463,G__TEurogamDataDict_162_0_10, 121, -1, -1, 0, 1, 1, 1, 0, "i - 'Int_t' 0 - N", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetEurogamEnergy",1638,G__TEurogamDataDict_162_0_11, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 0 - E", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetEurogamTime",1419,G__TEurogamDataDict_162_0_12, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 0 - T", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Class",502,G__TEurogamDataDict_162_0_13, 85, G__get_linked_tagnum(&G__TEurogamDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TEurogamData::Class) ), 0); + G__memfunc_setup("Class_Name",982,G__TEurogamDataDict_162_0_14, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TEurogamData::Class_Name) ), 0); + G__memfunc_setup("Class_Version",1339,G__TEurogamDataDict_162_0_15, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TEurogamData::Class_Version) ), 0); + G__memfunc_setup("Dictionary",1046,G__TEurogamDataDict_162_0_16, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TEurogamData::Dictionary) ), 0); + G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TEurogamDataDictLN_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__TEurogamDataDict_162_0_20, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("DeclFileName",1145,G__TEurogamDataDict_162_0_21, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TEurogamData::DeclFileName) ), 0); + G__memfunc_setup("ImplFileLine",1178,G__TEurogamDataDict_162_0_22, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TEurogamData::ImplFileLine) ), 0); + G__memfunc_setup("ImplFileName",1171,G__TEurogamDataDict_162_0_23, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TEurogamData::ImplFileName) ), 0); + G__memfunc_setup("DeclFileLine",1152,G__TEurogamDataDict_162_0_24, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TEurogamData::DeclFileLine) ), 0); + // automatic copy constructor + G__memfunc_setup("TEurogamData", 1182, G__TEurogamDataDict_162_0_25, (int) ('i'), G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData), -1, 0, 1, 1, 1, 0, "u 'TEurogamData' - 11 - -", (char*) NULL, (void*) NULL, 0); + // automatic destructor + G__memfunc_setup("~TEurogamData", 1308, G__TEurogamDataDict_162_0_26, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1); + // automatic assignment operator + G__memfunc_setup("operator=", 937, G__TEurogamDataDict_162_0_27, (int) ('u'), G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData), -1, 1, 1, 1, 1, 0, "u 'TEurogamData' - 11 - -", (char*) NULL, (void*) NULL, 0); + G__tag_memfunc_reset(); +} + + +/********************************************************* +* Member function information setup +*********************************************************/ +extern "C" void G__cpp_setup_memfuncTEurogamDataDict() { +} + +/********************************************************* +* 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() { + + G__resetglobalenv(); +} +extern "C" void G__cpp_setup_globalTEurogamDataDict() { + G__cpp_setup_global0(); + G__cpp_setup_global1(); +} + +/********************************************************* +* 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_funcTEurogamDataDict() { + 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__TEurogamDataDictLN_TClass = { "TClass" , 99 , -1 }; +G__linked_taginfo G__TEurogamDataDictLN_TBuffer = { "TBuffer" , 99 , -1 }; +G__linked_taginfo G__TEurogamDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 }; +G__linked_taginfo G__TEurogamDataDictLN_TObject = { "TObject" , 99 , -1 }; +G__linked_taginfo G__TEurogamDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR = { "vector<unsigned short,allocator<unsigned short> >" , 99 , -1 }; +G__linked_taginfo G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR = { "vector<double,allocator<double> >" , 99 , -1 }; +G__linked_taginfo G__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 }; +G__linked_taginfo G__TEurogamDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 }; +G__linked_taginfo G__TEurogamDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TEurogamDataDictLN_TEurogamData = { "TEurogamData" , 99 , -1 }; + +/* Reset class/struct taginfo */ +extern "C" void G__cpp_reset_tagtableTEurogamDataDict() { + G__TEurogamDataDictLN_TClass.tagnum = -1 ; + G__TEurogamDataDictLN_TBuffer.tagnum = -1 ; + G__TEurogamDataDictLN_TMemberInspector.tagnum = -1 ; + G__TEurogamDataDictLN_TObject.tagnum = -1 ; + G__TEurogamDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR.tagnum = -1 ; + G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR.tagnum = -1 ; + G__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ; + G__TEurogamDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ; + G__TEurogamDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TEurogamDataDictLN_TEurogamData.tagnum = -1 ; +} + + +extern "C" void G__cpp_setup_tagtableTEurogamDataDict() { + + /* Setting up class,struct,union tag entry */ + G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_TClass); + G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_TBuffer); + G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_TMemberInspector); + G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_TObject); + G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR); + G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR); + G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR); + G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR); + G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR); + G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR); + G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_TEurogamData),sizeof(TEurogamData),-1,29952,"EurogamData structure",G__setup_memvarTEurogamData,G__setup_memfuncTEurogamData); +} +extern "C" void G__cpp_setupTEurogamDataDict(void) { + G__check_setup_version(30051515,"G__cpp_setupTEurogamDataDict()"); + G__set_cpp_environmentTEurogamDataDict(); + G__cpp_setup_tagtableTEurogamDataDict(); + + G__cpp_setup_inheritanceTEurogamDataDict(); + + G__cpp_setup_typetableTEurogamDataDict(); + + G__cpp_setup_memvarTEurogamDataDict(); + + G__cpp_setup_memfuncTEurogamDataDict(); + G__cpp_setup_globalTEurogamDataDict(); + G__cpp_setup_funcTEurogamDataDict(); + + if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTEurogamDataDict(); + return; +} +class G__cpp_setup_initTEurogamDataDict { + public: + G__cpp_setup_initTEurogamDataDict() { G__add_setup_func("TEurogamDataDict",(G__incsetup)(&G__cpp_setupTEurogamDataDict)); G__call_setup_funcs(); } + ~G__cpp_setup_initTEurogamDataDict() { G__remove_setup_func("TEurogamDataDict"); } +}; +G__cpp_setup_initTEurogamDataDict G__cpp_setup_initializerTEurogamDataDict; + diff --git a/NPLib/Eurogam/TEurogamDataDict.h b/NPLib/Eurogam/TEurogamDataDict.h new file mode 100644 index 0000000000000000000000000000000000000000..6e689cc41b53e95d4f13e986bde730b02fbf2b14 --- /dev/null +++ b/NPLib/Eurogam/TEurogamDataDict.h @@ -0,0 +1,54 @@ +/******************************************************************** +* TEurogamDataDict.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 TEurogamDataDict.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_tagtableTEurogamDataDict(); +extern void G__cpp_setup_inheritanceTEurogamDataDict(); +extern void G__cpp_setup_typetableTEurogamDataDict(); +extern void G__cpp_setup_memvarTEurogamDataDict(); +extern void G__cpp_setup_globalTEurogamDataDict(); +extern void G__cpp_setup_memfuncTEurogamDataDict(); +extern void G__cpp_setup_funcTEurogamDataDict(); +extern void G__set_cpp_environmentTEurogamDataDict(); +} + + +#include "TObject.h" +#include "TMemberInspector.h" +#include "TEurogamData.h" +#include <algorithm> +namespace std { } +using namespace std; + +#ifndef G__MEMFUNCBODY +#endif + +extern G__linked_taginfo G__TEurogamDataDictLN_TClass; +extern G__linked_taginfo G__TEurogamDataDictLN_TBuffer; +extern G__linked_taginfo G__TEurogamDataDictLN_TMemberInspector; +extern G__linked_taginfo G__TEurogamDataDictLN_TObject; +extern G__linked_taginfo G__TEurogamDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR; +extern G__linked_taginfo G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR; +extern G__linked_taginfo G__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR; +extern G__linked_taginfo G__TEurogamDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR; +extern G__linked_taginfo G__TEurogamDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TEurogamDataDictLN_TEurogamData; + +/* STUB derived class for protected member access */ diff --git a/NPLib/Maya/ConfigReader.cxx b/NPLib/Maya/ConfigReader.cxx new file mode 100755 index 0000000000000000000000000000000000000000..cd12a58ff02e947b483673e3167772cd7236bbfc --- /dev/null +++ b/NPLib/Maya/ConfigReader.cxx @@ -0,0 +1,434 @@ +/***************************************************************************** + * Copyright (C) 2008 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: M. Vandebrouck contact address: vandebro@ipno.in2p3.fr * + * J. Gibelin gibelin@lpccaen.in2p3.fr * + * * + * Creation Date : November 2011 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class holds a the configuration reader part for Maya * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ +#include <iostream> +#include "ConfigReader.h" + +using std::cout; +using std::endl; +using std::cerr; +using std::vector; + +//ClassImp(ConfigReader) + +ConfigReader::ConfigReader(){ + // ForceInstantiation() ; + number_of_files = -1 ; + files_already_read = false ; + list_of_files_.clear(); +} + +ConfigReader::ConfigReader( std::vector<string> &v ){ + // ForceInstantiation() ; + files_already_read = false ; + list_of_files_.assign(v.begin(),v.end()); + number_of_files = v.size() ; +} + +ConfigReader::ConfigReader( char *f1, ...){ + // ForceInstantiation() ; + va_list marker; + char *file ; + list_of_files_.clear(); + files_already_read = false ; + + number_of_files = 1 ; + va_start( marker, f1 ); /* Initialize variable arguments. */ + + + trim(f1) ; + + list_of_files_.push_back(f1) ; + + while((file = va_arg( marker, char*)) != NULL) + { + + trim(file) ; + + if(file !=NULL && strlen(file)>0){ + + list_of_files_.push_back(file); + number_of_files++ ; + + } + + } + va_end( marker ); /* Reset variable arguments. */ + + + +} + + +void ConfigReader::__ForceInstantiation__(){ + bool b ; + Read<bool>("",b); + + // + std::vector<int> iv1 ; + std::vector<std::vector<int> > iv2 ; + int i ; + Read<int>("",iv1,-1); + Read<int>("",iv2); + Read<int>("",i); + + // + std::vector<float> fv1 ; + std::vector<std::vector<float> > fv2 ; + float f ; + Read<float>("",fv1,-1); + Read<float>("",fv2); + Read<float>("",f); + + // + std::vector<double> dv1 ; + std::vector<std::vector<double> > dv2 ; + double d ; + Read<double>("",dv1,-1); + Read<double>("",dv2); + Read<double>("",d); + + + +} + + +int ConfigReader::AddFile(char *f){ + if(f != NULL) list_of_files_.push_back(f) ; + number_of_files = list_of_files_.size() ; + return number_of_files ; +} + +template<typename T> void ConfigReader::PrintVector( std::vector<T> & v1){ + if(v1.empty()) { + cout << "1D Vector empty" << endl ; + return ; + } + + for(unsigned int i=0;i<v1.size();i++){ + cout << v1[i] << ", " ; + } + cout << "" <<endl ; +} + +template<typename T> void ConfigReader::PrintVector( std::vector<std::vector<T> >& v2){ + if(v2.empty()) { + cout << "2D Vector empty" << endl ; + return ; + } + for(unsigned int i=0;i<v2.size();i++){ + PrintVector(v2[i]); + } + cout << endl ; +} + +void ConfigReader::trim( char *c ){ + string s(c); + trim(s); + c = (char*)s.c_str(); +} + +void ConfigReader::trim( string& s ) +{ + // Remove leading and trailing whitespace + static const char whitespace[] = " \n\t\v\r\f"; + s.erase( 0, s.find_first_not_of(whitespace) ); + s.erase( s.find_last_not_of(whitespace) + 1U ); +} + +void ConfigReader::clean( string& s ) +{ + //cout << "avant :" << s << endl ; + // Trim string + trim(s) ; + // Uncomment string + uncomment(s) ; + // Remove all possible delimiters other than space + static const string delimiters = ",\n\t\v\r\f"; + unsigned int position = s.find_first_of( delimiters ); + while ( position != (unsigned int)string::npos ) + { + s.replace( position, 1, " "); + position = s.find_first_of( delimiters, position + 1 ); + } + //cout << "apres :" << s << endl ; +} + +void ConfigReader::uncomment( string& s ) +{ + // Remove trailing comments + static const string comments = "//" ; + if(s.find(comments) < s.length()){ + s.erase( s.find(comments) ); + } + +} + + +int ConfigReader::FindTokenInFile(string filename){ + std::ifstream parfile; + string line,nextline,token ; + + parfile.open(filename.c_str()); + + if (!parfile) { + std::cerr << "Unable to open file " << filename << endl; + return -1 ; + } + + line = "" ; + nextline = "" ; + while(parfile) + { + // Read an entire line at a time + if(line.length()==0 && nextline.length()==0) { + std::getline( parfile, line ); + } + trim(line) ; + if(!line.compare(0,2,"//") || line.compare(0,1,"[")) { + line = "" ; nextline = "" ; + continue ; + } + if(!line.compare(0,1,"[")) { + token = line.substr(1,line.find("]")-1); + trim(token); + cout << " token \e[32m'" << token << "'\e[0m found "<<endl ; + + if((parameters_blocks.count(token)) == 0){ + parameters_blocks[token] = new std::stringstream(std::stringstream::in | std::stringstream::out) ; + parameters_nlines[token] = 0 ; + parameters_written_in[token] = filename ; + parameters_nparam[token] = 0 ; + while(parfile){ + std::getline( parfile, nextline ); + clean(nextline) ; + if(!nextline.compare(0,1,"[")) break ; + else if(nextline.length()==0) continue ; + *parameters_blocks[token] << "\n" ; + *parameters_blocks[token] << nextline ; + parameters_nlines[token]++ ; + // -- Count the number of parameters -- + std::stringstream ss(nextline); // Insert the string into a stream + std::string buf ; + while (ss >> buf){ + parameters_nparam[token]++; + } + + // -------- + } + line = nextline ; + nextline = "" ; + // cout << *parameters_blocks[token] << endl ; + } else { + cerr << "\nWarning: token \e[31m'" << token + << "'\e[0m in \e[31m" << filename + << "\e[0m already exists in \e[31m" << parameters_written_in[token] <<"\e[0m. Skip.\n "<<endl ; + line = "" ; nextline = "" ; + } + } + } + + parfile.close(); + files_already_read = true ; + + return files_already_read ; + +} + +int ConfigReader::FindAllToken(void){ + tot_number_of_token = 0 ; + if(number_of_files>0){ + for(int i=0;i<number_of_files;i++){ + cout << "Now reading " << list_of_files_.at(i) << endl ; + tot_number_of_token += FindTokenInFile(list_of_files_.at(i)) ; + } + return tot_number_of_token ; + } + return -1 ; +} + +int ConfigReader::PrintListofToken(void){ + if(PrintListofFiles()>0){ + for(int i=0;i<(int)list_of_files_.size();i++){ + cout << "In file: " << list_of_files_.at(i) << endl << endl ; + + for ( std::map< string,std::stringstream* >::const_iterator iter = parameters_blocks.begin(); + iter != parameters_blocks.end(); ++iter ){ + if(parameters_written_in[iter->first].compare(list_of_files_.at(i))==0){ + ((std::stringstream*)iter->second)->seekg(0,std::ios::beg); + cout << "\e[33m***** " << iter->first << " ******\e[0m\n" + << ((std::stringstream*)iter->second)->rdbuf() << '\n' << endl; + cout << "\e[34m### Stats: " << parameters_nlines[iter->first]<< " lines ### " ; + cout << parameters_nparam[iter->first] << " params ###\e[0m\n" << endl ; + } + } + + } + return (int)list_of_files_.size(); + } + return 0 ; +} + +int ConfigReader::PrintListofFiles(void){ + if(number_of_files>0){ + cout << number_of_files << " parameter file(s) defined :" << endl ; + for(int i=0;i<(int)list_of_files_.size();i++){ + cout << " " << i+1 << ") " << list_of_files_.at(i) << " " << endl ; + } + cout << endl ; + return number_of_files ; + } else { + cout << "No parameter files are defined" << endl << endl ; + return -1 ; + } +} + +template<typename T> int ConfigReader::Read(string token, std::vector<std::vector <T> >&v2){ + if(token.size()==0) return 0; + if(!files_already_read) { + if (FindAllToken() == -1) { + for(unsigned int i=0;i<v2.size();i++){ + v2.at(i).clear() ; // clear the vector. + } + v2.clear(); + return 0 ; + } + } + + if((parameters_nparam).count(token)==0){ + cout << "Warning: token \e[31m'" << token << "'\e[0m not found in any files " << endl ; + for(unsigned int i=0;i<v2.size();i++){ + v2.at(i).clear() ; // clear the vector. + } + v2.clear(); + return 0; + } + + // cout << "vec^2 of " << typeid(T).name() << " and size " << v2.size() << " " << v2.at(0).size() << endl ; + unsigned int npar = 0 ; + for(unsigned int i=0;i<v2.size();i++){ + npar += Read(token,v2.at(i),2); + } + + if(v2.size()*v2.at(0).size() != npar){ // mismatch between the number of parameters read and expected. + cerr << "\nWarning: 2D vector used to fill in parameters from token \e[31m'" << token + << "'\e[0m has a dimension of \e[31m" << v2.size() << "x" << (v2.at(0).size()) << "=" + << (v2.size()*(v2.at(0).size())) << "\e[0m" << endl ; + cerr << "\tbut \e[31m" << parameters_nparam[token] << "\e[0m parameters were read in \e[31m" + << parameters_written_in[token] << "\e[0m" << endl ; + for(unsigned int i=0;i<v2.size();i++){ + v2.at(i).clear() ; // clear the vector. + } + v2.clear(); + return 0 ; + } + // PrintVector(v2) ; + return npar ; +} + +template<typename T> int ConfigReader::Read(string token, std::vector<T> &v1, int dimension = 1){ + if((dimension<1) || (token.size()==0) ) return 0 ; + if(!files_already_read) { + if (FindAllToken() == -1) { + v1.clear() ; // if no file is found the vector is cleared ! + return 0 ; + } + } + + if((parameters_nparam).count(token)==0){ + cout << "Warning: token \e[31m'" << token << "'\e[0m not found in any files " << endl ; + v1.clear(); + return 0; + } + + + if(dimension==1){ // check if the function as been call directly to fill a 1D vector (default) + parameters_blocks[token]->seekg(0,std::ios::beg); // rewind only if 1D + if((int)v1.size() != parameters_nparam[token]){ // size mismatch + cerr << "\nWarning: 1D vector used to fill in parameters from token \e[31m'" << token + << "'\e[0m has a dimension of \e[31m" << v1.size() << "\e[0m" << endl ; + cerr << "\tbut \e[31m" << parameters_nparam[token] << "\e[0m parameters were read in \e[31m" + << parameters_written_in[token] << "\e[0m" << endl ; + v1.clear(); + return 0 ; + } + } + + // cout << "vec^1 of " << typeid(T).name() << ", size " << v1.size() << endl ; + // Tokenize + T buf ; + unsigned int npar = 0 ; + + while ((*parameters_blocks[token] >> buf)){ + v1.at(npar++) = static_cast<T>(buf); + if(npar>=v1.size()) break ; + } + return npar ; +} + +template<typename T> int ConfigReader::Read(string token, T &a){ + if(token.size()==0) return 0 ; + + if(!files_already_read) { + if (FindAllToken() == -1) { + a = 0 ; // if no file is found the coefficinnt is cleared + return 0 ; + } + } + + if((parameters_nparam).count(token)==0){ + cout << "Warning: token \e[31m'" << token << "'\e[0m not found in any files " << endl ; + a = 0 ; + return 0; + } + + *parameters_blocks[token] >> a ; + + return 1 ; +} + +/* +int main(void) { + + ConfigReader *cal_par = new ConfigReader(); + + cout << cal_par->AddFile("./test1.prm") << endl ; + cout << cal_par->AddFile("./test2.prm") << endl ; + + // ConfigReader *cal_par = new ConfigReader("./test1.prm","./test2.prm"); + + // cal_par->FindAllToken() ; + std::vector<std::vector <int> > matrice(3,vector<int>(4,0)) ; + cal_par->Read("par01",matrice); + + std::vector<float> vecteur(7,0) ; + cal_par->Read("par2",vecteur); + + cal_par->PrintVector(matrice); + cal_par->PrintVector(vecteur); + + // cout << cal_par->GetListofFiles().at(0) << endl ; + + //cal_par->PrintListofToken(); + delete cal_par ; + return 0 ; +} +*/ + diff --git a/NPLib/Maya/ConfigReader.h b/NPLib/Maya/ConfigReader.h new file mode 100755 index 0000000000000000000000000000000000000000..9ee70725a93ef9e26faa431e8fc9bc262a8faae5 --- /dev/null +++ b/NPLib/Maya/ConfigReader.h @@ -0,0 +1,105 @@ +/***************************************************************************** + * Copyright (C) 2008 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: M. Vandebrouck contact address: vandebro@ipno.in2p3.fr * + * J. Gibelin gibelin@lpccaen.in2p3.fr * + * * + * Creation Date : November 2011 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class holds a the configuration reader part for Maya * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ +#ifndef __CREADER__ +#define __CREADER__ + + +#include <string> +#include <vector> +#include <iostream> +#include <map> +#include <fstream> +#include <sstream> +#include <cstdarg> +#include <cstdio> +#include <cstring> + +using std::string; + +class ConfigReader{ + // Data + protected: + std::map<string,std::stringstream*> parameters_blocks ; // entire data black following the presence of a token + std::map<string,string> parameters_written_in ; // file name where a given token is written in + std::map<string,int> parameters_nlines ; // number of parameters line for a given token + std::map<string,int> parameters_nparam ; // total number of parameters for a gien token + std::vector<string> list_of_files_ ; // list of all the parameter files given + int number_of_files ; // number of parameter files + int tot_number_of_token ; // total number of token + std::vector<int> number_of_token_per_file ; // number of token per parameter file + bool files_already_read ; + + + // Methods + public: + ConfigReader( char*, ...); + ConfigReader( std::vector<string> &); + ConfigReader(); + ~ConfigReader(){ + std::cout << "ConfigReader: Clean the mess" << std::endl ; + + parameters_written_in.clear(); + + parameters_blocks.clear(); + //map<string,std::stringstream*>::iterator iter; + //for( iter = parameters_blocks.begin(); iter != parameters_blocks.end(); iter++ ) { + // + // ((std::stringstream*)iter->second) ==; + //} + + parameters_nlines.clear(); + parameters_nparam.clear(); + list_of_files_.clear(); + number_of_token_per_file.clear(); + }; + + //void Read(const string& , const std::vector<std::vector<int> >& ) const ; // call as read<T> + int AddFile(char*); + template<typename T> int Read(string, std::vector<std::vector<T> >&) ; + template<typename T> int Read(string, std::vector<T> &, int) ; + template<typename T> int Read(string, T &) ; + + int FindAllToken() ; + int FindTokenInFile(string) ; + + int Dump(void){ return PrintListofToken() ;}; + int PrintListofFiles(void); + int PrintListofToken(void); + + std::vector<string> &GetListofFiles() {return list_of_files_ ; } ; + + template<typename T> void PrintVector( std::vector<T> &) ; // not directly related but very usefull !! + template<typename T> void PrintVector( std::vector<std::vector<T> > &) ; // not directly related but very usefull !! + + private: + + void __ForceInstantiation__() ; + void trim( string&) ; + void trim( char *) ; + void clean(string&); + void uncomment( string&) ; + + // ClassDef(ConfigReader,1) + +}; + +#endif + diff --git a/NPLib/Maya/Makefile b/NPLib/Maya/Makefile new file mode 100755 index 0000000000000000000000000000000000000000..878923d9927ad7cc0b1b7d711f50424bda5c2917 --- /dev/null +++ b/NPLib/Maya/Makefile @@ -0,0 +1,49 @@ +include ../Makefile.arch + +#------------------------------------------------------------------------------ +SHARELIB = libMayaData.so libConfigReader.so libMayaHisto.so + +all: $(SHARELIB) +#------------------------------------------------------------------------------ +############### Detector ############## + +## Maya ## +libMayaData.so: TMayaData.o TMayaDataDict.o + $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ + +TMayaDataDict.cxx: TMayaData.h + rootcint -f $@ -c $^ + +libMayaHisto.so: TMayaHisto.o TMayaHistoDict.o + $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ + +TMayaHistoDict.cxx: TMayaHisto.h + rootcint -f $@ -c $^ + +libConfigReader.so: ConfigReader.o + $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ + +ConfigReaderDict.cxx: TConfigReader.h + rootcint -f $@ -c $^ + +# dependances +TMayaData.o: TMayaData.cxx TMayaData.h +TMayaHisto.o: TMayaHisto.cxx TMayaHisto.h +ConfigReader.o: ConfigReader.cxx ConfigReader.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/Maya/TMayaData.cxx b/NPLib/Maya/TMayaData.cxx new file mode 100755 index 0000000000000000000000000000000000000000..05f116081fcf00b9020894809f0d484e2e53efae --- /dev/null +++ b/NPLib/Maya/TMayaData.cxx @@ -0,0 +1,450 @@ +/***************************************************************************** + * Copyright (C) 2008 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: M. Vandebrouck contact address: vandebro@ipno.in2p3.fr * + * J. Gibelin gibelin@lpccaen.in2p3.fr * + * * + * Creation Date : November 2011 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class holds Maya raw data * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +#include <iostream> +#include <fstream> +#include <TMath.h> +using namespace std; + +#include "TMayaData.h" + +ClassImp(TMayaData) + +TMayaData::TMayaData() + : fMaya_PAD_E_calpar(MAYA_PAD_NCHCAL,vector<Float_t>(MAYA_PAD_NPARCAL)), + fMaya_QFIL_E_calpar(MAYA_QFIL_NCHCAL,vector<Float_t>(MAYA_QFIL_E_NPARCAL)), + fMaya_QFIL_T_calpar(MAYA_QFIL_NCHCAL,vector<Float_t>(MAYA_QFIL_T_NPARCAL)), + fMaya_Si_E_calpar(MAYA_SI_NCHCAL,vector<Float_t>(MAYA_SI_E_NPARCAL)), + fMaya_Si_T_calpar(MAYA_SI_NCHCAL,vector<Float_t>(MAYA_SI_T_NPARCAL)) +{ + // Default constructor + fMaya_PAD_E_cal_threshold = 0. ; + Clear(); + +} + +TMayaData::~TMayaData() +{ + Clear(); + fMaya_PAD_E_calpar.clear(); + fMaya_QFIL_E_calpar.clear(); + fMaya_QFIL_T_calpar.clear(); + fMaya_Si_E_calpar.clear(); + fMaya_Si_T_calpar.clear(); +} + +void TMayaData::Clear() +{ + // (PAD) + bMaya_IsPAD_Calibrated = false ; + fMaya_PAD_E.clear(); + fMaya_PAD_E_cal.clear(); + fMaya_PAD_Nbr.clear(); + fMaya_PAD_Col.clear(); + fMaya_PAD_Row.clear(); + fMaya_PAD_x.clear(); + fMaya_PAD_y.clear(); + fMaya_PAD_Sum = 0; + fMaya_PAD_Sum_cal = 0; + fMaya_PAD_Mult_cal = 0; + + fMaya_PAD_Neighbors.clear(); + fMaya_PAD_map_idx.clear() ; + memset(fMaya_PAD_Row_Mult,0,32*sizeof(UShort_t)) ; + memset(fMaya_PAD_Row_Sum_cal,0,32*sizeof(Float_t)) ; + memset(fMaya_PAD_Row_Max_cal,0,32*sizeof(Float_t)) ; + memset(fMaya_PAD_Col_Mult,0,32*sizeof(UShort_t)) ; + memset(fMaya_PAD_Col_Sum_cal,0,32*sizeof(Float_t)) ; + memset(fMaya_PAD_Col_Max_cal,0,32*sizeof(Float_t)) ; + + // (QFIL) + bMaya_IsQFIL_Calibrated = false ; + fMaya_QFIL_E_Nbr.clear(); + fMaya_QFIL_E.clear(); + fMaya_QFIL_E_cal.clear(); + fMaya_QFIL_T.clear(); + fMaya_QFIL_T_cal.clear(); + fMaya_QFIL_T_Nbr.clear(); + fMaya_QFIL_Sum = 0 ; + fMaya_QFIL_Sum_cal = 0 ; + fMaya_QFil_Pulse_Nbr.clear(); + fMaya_QFil_Pulse_E.clear(); + fMaya_QFil_Pulse_Ch.clear(); + fMaya_QFil_Pulse_map_Current_Nbr.clear(); + fMaya_QFil_Pulse_Sum_Ch.clear(); + fMaya_QFil_Pulse_Sum.clear(); + // (Max) + // fMaya_Max_cal = 0.; + // fMaya_Max_Nbr = 0 ; + + // Silicons + fMaya_Si_E_Nbr.clear(); + fMaya_Si_E.clear(); + fMaya_Si_E_cal.clear(); + // + fMaya_Si_T_Nbr.clear(); + fMaya_Si_T.clear(); + fMaya_Si_T_cal.clear(); +} + +void TMayaData::SetEnergyPad(UShort_t N, UShort_t E) { + SetEnergyPad_CR(GetPadCol(N),GetPadRow(N),E); +} + +void TMayaData::SetEnergyPad_CR(UShort_t C,UShort_t R, UShort_t E) { + /* cout << + fMaya_PAD_Col.size() << " " << + fMaya_PAD_Row.size() << " " << + fMaya_PAD_Nbr.size() << " " << + fMaya_PAD_E.size() << " " << + fMaya_PAD_map_idx.size() << endl ; + */ + // + + fMaya_PAD_map_idx[GetPadIdx(C,R)] = fMaya_PAD_Nbr.size()-1 ; + + fMaya_PAD_Col.push_back(C); + fMaya_PAD_Row.push_back(R); + fMaya_PAD_x.push_back(MAYA_PAD_HEIGHT*(2*C-R%2)); + fMaya_PAD_y.push_back((1+(R-1)*1.5)*MAYA_PAD_SIZE); + fMaya_PAD_Nbr.push_back(GetPadIdx(C,R)); + fMaya_PAD_E.push_back(E); + + // + + fMaya_PAD_map_idx[GetPadIdx(C,R)] = fMaya_PAD_Nbr.size()-1 ; + +} + +// SI +void TMayaData::SetEnergySi(UShort_t N,UShort_t E) { + fMaya_Si_E.push_back(E) ; + fMaya_Si_E_Nbr.push_back(N) ; + +} + +void TMayaData::SetTimeSi(UShort_t N,UShort_t T) { + fMaya_Si_T.push_back(T) ; + fMaya_Si_T_Nbr.push_back(N) ; + +} + +void TMayaData::SetQFilPulse(UShort_t N,UShort_t E) { + fMaya_QFil_Pulse_map_Current_Nbr[N]++ ; + if(E>0){ + fMaya_QFil_Pulse_Nbr.push_back(fMaya_QFil_Pulse_map_Current_Nbr[N]); + fMaya_QFil_Pulse_Ch.push_back(N); + fMaya_QFil_Pulse_E.push_back(E); + for (Int_t i = 0; i<(Int_t)fMaya_QFil_Pulse_Sum_Ch.size();i++){ + // cout << fMaya_QFil_Pulse_Sum_Nbr.at(i) << endl; + if(fMaya_QFil_Pulse_Sum_Ch.at(i) == N) { + fMaya_QFil_Pulse_Sum.at(i) += E ; + return ; + } + } + fMaya_QFil_Pulse_Sum_Ch.push_back(N); + fMaya_QFil_Pulse_Sum.push_back(E); + } +} + +// TOF +void TMayaData::SetTOF(UShort_t N,UShort_t T) { + if(N==1) { + fMaya_TOF_GAL_HF = T ; + return ; + } + if(N==2) { + fMaya_TOF_GAL_DIAM = T ; + return ; + } + if(N==3) { + fMaya_TOF_TM_TRIG = T ; + return ; + } +} + + +void TMayaData::Dump() +{ + //cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event XXXXXXXXXXXXXXXXX" << endl; + /* + // (PAD) + cout << "Maya_PQD.Size = " << fMaya_PAD_E.size() << endl; + for (UShort_t i = 0; i < fMaya_PAD_E.size(); i++) + cout << " Energy: " << fMaya_PAD_E.at(i) << endl; + //sum + cout<<"Maya_sum " << fMaya_Sum << endl; + // QFIL + cout<<"Maya_QFIL_E " << fMaya_QFIL_E << endl; + // Si + cout<<"Maya_Si_E " << fMaya_Si_E << endl; + */ +} + +bool TMayaData::InitCalibrate( std::vector<string> &list_of_cal_files) +{ + + ConfigReader *cal_par = new ConfigReader(list_of_cal_files); + cal_par->Read<Float_t>("PADS",fMaya_PAD_E_calpar); + cal_par->Read<Float_t>("PADS_THR",fMaya_PAD_E_cal_threshold); + cal_par->Read<bool>("PADS_CLEAN", bMaya_Clean_PADS); + cal_par->Read<Int_t>("PADS_MIN_NEIGHBORS", fMaya_PAD_Neighbors_Min); + cal_par->Read<Float_t>("FILS_TIMECAL", fMaya_QFIL_T_calpar); + cal_par->Read<Float_t>("SI", fMaya_Si_E_calpar); + + //cal_par->Read("tsi",fMaya_Si_E_calpar); + // cal_par->Dump(); +// vector<Float_t> u(MAYA_PAD_NPARCAL,0) ; +// u.at(1) = 1 ; +// for(unsigned int i=0;i<fMaya_PAD_E_calpar.size();i++){ +// fMaya_PAD_E_calpar.at(i) = u ; +// } + //fMaya_PAD_E_calpar.clear(); + delete cal_par ; + return kTRUE ; +} + + +bool TMayaData::Calibrate(){ + + //FILE *fichier_test; + //fichier_test = fopen("f.dat","w"); + int tmpNbr ; + Float_t tmpCal ; + fMaya_PAD_Mult_cal = 0 ; + fMaya_PAD_Sum_cal = 0 ; + //possible example + //if(!fMaya_PAD_E.empty()&& !fMaya_PAD_E_calpar.empty() ) +{ + + fMaya_PAD_E_cal.resize(fMaya_PAD_E.size()); + + for(unsigned int i=0;i<fMaya_PAD_E.size();i++){ + + tmpCal = 0 ; + + tmpNbr = fMaya_PAD_Nbr.at(i) - 1 ; + + if(fMaya_PAD_Nbr.at(i)<fMaya_PAD_E_calpar.size()){ + for(unsigned int j=0;j<fMaya_PAD_E_calpar.at(tmpNbr).size();j++){ + tmpCal += pow(fMaya_PAD_E.at(i),j)*fMaya_PAD_E_calpar.at(tmpNbr).at(j) ; + } + if(tmpCal>fMaya_PAD_E_cal_threshold){ + fMaya_PAD_E_cal.at(i) = tmpCal ; + fMaya_PAD_Mult_cal++ ; + fMaya_PAD_Row_Mult[ fMaya_PAD_Row.at(i)-1]++ ; + fMaya_PAD_Col_Mult[ fMaya_PAD_Col.at(i)-1]++ ; + fMaya_PAD_Sum_cal += tmpCal ; + } else { + fMaya_PAD_E_cal.at(i) = 0. ; + } + //cout << fMaya_PAD_E.at(i) << " " << + //fMaya_PAD_E_cal.at(i) << endl ; + } + + } + // cout << endl ; + bMaya_IsPAD_Calibrated = true ; + } + + +//else { +//cout << "out Pad " << fMaya_PAD_E.size() << " " << fMaya_PAD_E_calpar.size() << endl ; + // fMaya_PAD_E_cal.clear(); +// return false ; + // } + + if(bMaya_IsPAD_Calibrated && bMaya_Clean_PADS){ + // count the number of neighbors + // two cases have to be considered : + /* + + c-1 c c+1 + c-1 c c+1 + | | | | + / \ / \ / \ / \ + r+2 | | | | | odd + \ / \ / \ / \ / + r+1 | | B | | even + / \ / \ / \ / \ + r | | A | | | odd : ( r )%2 = 1 + \ / \ / \ / \ / + r-1 | | | | even : (r-1)%2 = 0 + / \ / \ / \ / \ + r-2 | | | | | odd : (r-2)%2 = 1 + \ / \ / \ / \ / + ------------------- + + + Example: + + * A(c,r) neighbors: (c-1,r-1)(c-1,r)(c-1,r+1)(c,r-1)(c+1,r)(c,r+1); + + * B(c,r') neighbors: (c,r'-1)(c-1,r')(c,r'+1)(c+1,r'-1)(c+1,r')(c+1,r'+1) + +Conclusion : all have two times r-1,r,r+1 combinaisons + odd raws (A) don't have (c+1,r-1)(c+1,r+1) , note r %2 = 1 + even raws (B) don't have (c-1,r'-1)(c-1,r'+1), note r'%2 = 0 + + */ + Int_t r0,c0 ; + for(unsigned int i=0;i<fMaya_PAD_E_cal.size();i++){ + fMaya_PAD_Neighbors.push_back(-1) ; // -1 because in the following + // the pad (c,r) will be also tested + if(fMaya_PAD_E_cal.at(i)>0){ + r0 = fMaya_PAD_Row.at(i) ; + c0 = fMaya_PAD_Col.at(i) ; + + for(int r=r0-1;r<=r0+1;r++){ + for(int c=c0-1;c<=c0+1;c++){ + if(!(abs(r-r0)==1 && c==c0-1+(r0%2)*2) && r>0 && c>0 && r<33 && c<33){ + if(fMaya_PAD_map_idx.count(GetPadIdx(c,r))>0) { +// cout << c0 << " " << r0 << " -> " << c << " " << r << endl ; + if(fMaya_PAD_E_cal.at(fMaya_PAD_map_idx[GetPadIdx(c,r)])>0){ + fMaya_PAD_Neighbors.at(i)++; + } + } + } + } + } + } + } + + memset(fMaya_PAD_Row_Mult,0,32*sizeof(UShort_t)) ; + memset(fMaya_PAD_Row_Sum_cal,0,32*sizeof(Float_t)) ; + memset(fMaya_PAD_Row_Max_cal,0,32*sizeof(Float_t)) ; + + memset(fMaya_PAD_Col_Mult,0,32*sizeof(UShort_t)) ; + memset(fMaya_PAD_Col_Sum_cal,0,32*sizeof(Float_t)) ; + memset(fMaya_PAD_Col_Max_cal,0,32*sizeof(Float_t)) ; + + // clean accordingly + for(unsigned int i=0;i<fMaya_PAD_E.size();i++){ + if(fMaya_PAD_Neighbors.at(i)<fMaya_PAD_Neighbors_Min) { + fMaya_PAD_E_cal.at(i)=0.; + fMaya_PAD_Mult_cal-- ; + } else if (fMaya_PAD_E_cal.at(i)>0){ + fMaya_PAD_Row_Mult[ fMaya_PAD_Row.at(i)-1]++ ; + fMaya_PAD_Row_Sum_cal[ fMaya_PAD_Row.at(i)-1] += fMaya_PAD_E_cal.at(i) ; + if(fMaya_PAD_Row_Max_cal[fMaya_PAD_Row.at(i)-1] < fMaya_PAD_E_cal.at(i)) { + fMaya_PAD_Row_Max_cal[fMaya_PAD_Row.at(i)-1] = fMaya_PAD_E_cal.at(i) ; + } ; + fMaya_PAD_Col_Mult[ fMaya_PAD_Col.at(i)-1]++ ; + fMaya_PAD_Col_Sum_cal[ fMaya_PAD_Col.at(i)-1] += fMaya_PAD_E_cal.at(i) ; + if(fMaya_PAD_Col_Max_cal[fMaya_PAD_Col.at(i)-1] < fMaya_PAD_E_cal.at(i)) { + fMaya_PAD_Col_Max_cal[fMaya_PAD_Col.at(i)-1] = fMaya_PAD_E_cal.at(i) ; + } ; + } + } + + } + + // if(!fMaya_QFIL_T.empty() && !fMaya_QFIL_T_calpar.empty() ) +{ + + fMaya_QFIL_T_cal.resize(fMaya_QFIL_T.size()); + + for(unsigned int i=0;i<fMaya_QFIL_T.size();i++){ + + tmpCal = 0 ; + + tmpNbr = fMaya_QFIL_T_Nbr.at(i) - 1 ; + if(fMaya_QFIL_T.at(i)>16380){ // timeout + fMaya_QFIL_T_cal.at(i) = 0 ; + } else { + if(fMaya_QFIL_T_Nbr.at(i)<fMaya_QFIL_T_calpar.size()){ + for(unsigned int j=0;j<fMaya_QFIL_T_calpar.at(tmpNbr).size();j++){ + tmpCal += pow(fMaya_QFIL_T.at(i),j)*fMaya_QFIL_T_calpar.at(tmpNbr).at(j) ; + } + fMaya_QFIL_T_cal.at(i) = tmpCal ; + //fprintf(fichier_test,"%f \n",fMaya_QFIL_T_cal.at(i)); + } + } + + + // std::cout << fMaya_QFIL_T.at(i) << " " << + // fMaya_QFIL_T_cal.at(i) << std::endl ; + } + + + } + +/*else { +cout << "out Qfil " << endl ; + fMaya_QFIL_T_cal.clear(); + + //fclose(fichier_test); + return false ; + + + } */ + +////////////////////////////// + + + + //if(!fMaya_Si_E.empty()&& !fMaya_Si_E_calpar.empty() ) +{ +//std::cout << "Do the calibration" << std::endl; + fMaya_Si_E_cal.resize(fMaya_Si_E.size()); + + for(unsigned int i=0;i<fMaya_Si_E.size();i++){ + + tmpCal = 0 ; + + tmpNbr = fMaya_Si_E_Nbr.at(i) - 1 ; + if(fMaya_Si_E.at(i)>16000){ // energy out + fMaya_Si_E_cal.at(i) = 0 ; + } else { + if(fMaya_Si_E_Nbr.at(i)<fMaya_Si_E_calpar.size()){ + for(unsigned int j=0;j<fMaya_Si_E_calpar.at(tmpNbr).size();j++){ + tmpCal += pow(fMaya_Si_E.at(i),j)*fMaya_Si_E_calpar.at(tmpNbr).at(j) ; + } + fMaya_Si_E_cal.at(i) = tmpCal ; + } + } + + + // std::cout << fMaya_Si_E.at(i) << " " << + //fMaya_Si_E_cal.at(i) << std::endl ; + } + + + } + +/*else { +std::cout << "No calib Si E Size:" << fMaya_Si_E.size() << " Calib size " << fMaya_Si_E_calpar.size() << std::endl; + fMaya_Si_E_cal.clear(); + return false ; + } */ + + + + +///////////////////////////// + return true ; +} + + + + + + diff --git a/NPLib/Maya/TMayaData.h b/NPLib/Maya/TMayaData.h new file mode 100755 index 0000000000000000000000000000000000000000..461c8c9b0318861582123df46493860956ed00e6 --- /dev/null +++ b/NPLib/Maya/TMayaData.h @@ -0,0 +1,235 @@ +/***************************************************************************** + * Copyright (C) 2008 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: M. Vandebrouck contact address: vandebro@ipno.in2p3.fr * + * J. Gibelin gibelin@lpccaen.in2p3.fr * + * * + * Creation Date : November 2011 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class holds Maya raw data * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ +#ifndef __MAYADATA__ +#define __MAYADATA__ + +#include <vector> +#include <map> + +#include "TObject.h" +#include <iostream> +#include "ConfigReader.h" + +#define MAYA_PAD_NPARCAL 3 +#define MAYA_PAD_NCHCAL 1024 +#define MAYA_PAD_SIZE 5 //mm +#define MAYA_PAD_HEIGHT (MAYA_PAD_SIZE*0.8660254) //mm +#define MAYA_QFIL_NCHCAL 33 +#define MAYA_QFIL_E_NPARCAL 2 +#define MAYA_QFIL_T_NPARCAL 2 +#define MAYA_SI_NCHCAL 20 +#define MAYA_SI_E_NPARCAL 2 +#define MAYA_SI_T_NPARCAL 2 + + + + +class TMayaData : public TObject { + private: + + + // (PAD)/CRAMS + vector<UShort_t> fMaya_PAD_Nbr; + vector<UShort_t> fMaya_PAD_Col; + vector<UShort_t> fMaya_PAD_Row; + vector<UShort_t> fMaya_PAD_E; + vector<Float_t> fMaya_PAD_x; + vector<Float_t> fMaya_PAD_y; + + map<UShort_t,UShort_t> fMaya_PAD_map_idx ; //! + + + bool bMaya_IsPAD_Calibrated ; + bool bMaya_Clean_PADS ; // boolean, parameter -> if true clean the PAD calibrated matrix + Int_t fMaya_PAD_Neighbors_Min; //! number of minimum Neighbors before cleaning + vector<vector<Float_t> > fMaya_PAD_E_calpar;//! + vector<Float_t> fMaya_PAD_E_cal ; + vector<UShort_t> fMaya_PAD_Neighbors ; + Float_t fMaya_PAD_E_cal_threshold; //! + UShort_t fMaya_PAD_Mult_cal ; + UShort_t fMaya_PAD_Row_Mult[32] ; + Float_t fMaya_PAD_Row_Sum_cal[32] ; + Float_t fMaya_PAD_Row_Max_cal[32] ; + UShort_t fMaya_PAD_Col_Mult[32] ; + Float_t fMaya_PAD_Col_Sum_cal[32] ; + Float_t fMaya_PAD_Col_Max_cal[32] ; + + ULong64_t fMaya_PAD_Sum ; + Float_t fMaya_PAD_Sum_cal ; + + // (QFIL) + bool bMaya_IsQFIL_Calibrated ; + vector<UShort_t> fMaya_QFIL_E_Nbr ; + vector<UShort_t> fMaya_QFIL_T_Nbr ; + + vector<vector<Float_t> > fMaya_QFIL_E_calpar;//! + vector<UShort_t> fMaya_QFIL_E ; + vector<Float_t> fMaya_QFIL_E_cal ; + vector<vector<Float_t> > fMaya_QFIL_T_calpar;//! + vector<UShort_t> fMaya_QFIL_T ; + vector<Float_t> fMaya_QFIL_T_cal ; + + ULong64_t fMaya_QFIL_Sum ; + Float_t fMaya_QFIL_Sum_cal ; + + // (Max) + // Float_t fMaya_Max_cal ; + // UShort_t fMaya_Max_Nbr ; + + // Silicons + bool bMaya_IsSi_Calibrated ; + // vector<UShort_t> fMaya_Si_Nbr; // TODO + // * Energy * // + vector<UShort_t> fMaya_Si_E_Nbr; + vector<UShort_t> fMaya_Si_E; + vector<vector<Float_t> > fMaya_Si_E_calpar;//! + vector<Float_t> fMaya_Si_E_cal; + // * Time * // + // map<UShort_t, UShort_t> fMaya_Si_EvsT_index; //! TODO + vector<UShort_t> fMaya_Si_T_Nbr; + vector<UShort_t> fMaya_Si_T; + vector<vector<Float_t> > fMaya_Si_T_calpar;//! + vector<Float_t> fMaya_Si_T_cal; + + // FADC : to record wire pulses + vector<UShort_t> fMaya_QFil_Pulse_E; + vector<UShort_t> fMaya_QFil_Pulse_Nbr; // sample number + vector<UShort_t> fMaya_QFil_Pulse_Ch; // FADC channel: [0:3] + map<UShort_t, UShort_t> fMaya_QFil_Pulse_map_Current_Nbr; //! keep track of current FADC sanple number within on channel, not save + vector<ULong64_t> fMaya_QFil_Pulse_Sum ; + vector<ULong64_t> fMaya_QFil_Pulse_Sum_Ch ; + + // TOF + UShort_t fMaya_TOF_GAL_HF ; + UShort_t fMaya_TOF_GAL_DIAM ; + UShort_t fMaya_TOF_TM_TRIG ; + + public: + TMayaData(); + virtual ~TMayaData(); + + void Clear(); + void Dump(); + + /* GETTERS */ + // (E) + UShort_t GetEsize(void) {return fMaya_PAD_E.size();} + UShort_t GetEnergy(Int_t i) {return fMaya_PAD_E.at(i);} + UShort_t GetNbr(Int_t i) {return fMaya_PAD_Nbr.at(i);} + UShort_t GetCol(Int_t i) {return GetPadCol(fMaya_PAD_Nbr.at(i));} + UShort_t GetRow(Int_t i) {return GetPadRow(fMaya_PAD_Nbr.at(i));} + // + Float_t GetEnergy_cal(Int_t i) {return fMaya_PAD_E_cal.at(i);} + /* + UShort_t *GetEnergy_cal(void) { + UShort_t *a = new UShort_t [fMaya_PAD_E_cal.size()]; + copy(fMaya_PAD_E_cal.begin(),fMaya_PAD_E_cal.end(), a); + return a; + } + */ + UShort_t GetPADMult_cal(){ return fMaya_PAD_Mult_cal ; } + + //sum + ULong64_t GetPADSum() {return fMaya_PAD_Sum;} + Float_t GetPADSum_cal() {return fMaya_PAD_Sum_cal;} + // si + UShort_t GetEnergySi(Int_t i) { return fMaya_Si_E.at(i) ;} // for backward compatibility + + UShort_t GetSi_E_size() {return fMaya_Si_E_Nbr.size();} + UShort_t GetSi_E(Int_t i) {return fMaya_Si_E.at(i);} + Float_t GetSi_E_cal(Int_t i) {return fMaya_Si_E_cal.at(i);} + UShort_t GetSi_E_Nbr(Int_t i) {return fMaya_Si_E_Nbr.at(i);} + + UShort_t GetSi_T_size() {return fMaya_Si_T_Nbr.size();} + UShort_t GetSi_T(Int_t i) {return fMaya_Si_T.at(i);} + UShort_t GetSi_T_Nbr(Int_t i) {return fMaya_Si_T_Nbr.at(i);} + + + // wires + UShort_t GetQFil_E_size() {return fMaya_QFIL_E_Nbr.size();} + UShort_t GetQFil_E(Int_t i) {return fMaya_QFIL_E.at(i);} + UShort_t GetQFil(Int_t i) {return fMaya_QFIL_E.at(i);} // for backward compatibility + UShort_t GetQFil_E_Nbr(Int_t i) {return fMaya_QFIL_E_Nbr.at(i);} + + UShort_t GetQFil_T_size() {return fMaya_QFIL_T_Nbr.size();} + UShort_t GetQFil_T(Int_t i) {return fMaya_QFIL_T.at(i);} + Float_t GetQFil_T_cal(Int_t i) {return fMaya_QFIL_T_cal.at(i);} + UShort_t GetQFil_T_Nbr(Int_t i) {return fMaya_QFIL_T_Nbr.at(i);} + + UShort_t GetQFilPulse_size(void) {return fMaya_QFil_Pulse_E.size();} + UShort_t GetQFilPulse(Int_t i) {return fMaya_QFil_Pulse_E.at(i);} + UShort_t GetQFilPulseCh(Int_t i) {return fMaya_QFil_Pulse_Ch.at(i);} + UShort_t GetQFilPulseNbr(Int_t i) {return fMaya_QFil_Pulse_Nbr.at(i);} + ULong64_t GetQFilPulseSum(Int_t i) {return fMaya_QFil_Pulse_Sum.at(i);} + UShort_t GetQFilPulseSumCh(Int_t i) {return fMaya_QFil_Pulse_Sum_Ch.at(i);} + + + /* SETTERS */ + //sum + void SetPADSum(UShort_t E) {fMaya_PAD_Sum += (Int_t)E ; } + void SetQFILSum(UShort_t E) {fMaya_QFIL_Sum += (Int_t)E ; } + // (PAD) + void SetEnergyPad_CR(UShort_t C, UShort_t R, UShort_t E) ; // column, row, energy + void SetEnergyPad(UShort_t N, UShort_t E) ; // cumulated index, energy + + Int_t GetPadIdx(UShort_t C, UShort_t R){ return (R-1)*32+C;}; // from 1 to 1024 + Int_t GetPadCol(UShort_t I){return int((I-1)%32)+1;}; + Int_t GetPadRow(UShort_t I){return int((I-1)/32)+1;}; + + + // QFIL + void SetQfil(UShort_t N,UShort_t E) { + fMaya_QFIL_E_Nbr.push_back(N); + fMaya_QFIL_E.push_back(E) ; + if(bMaya_IsQFIL_Calibrated){ + fMaya_QFIL_E_cal.push_back(-1) ; + } + } + + void SetTfil(UShort_t N,UShort_t T) { + fMaya_QFIL_T_Nbr.push_back(N); + fMaya_QFIL_T.push_back(T) ; + if(bMaya_IsQFIL_Calibrated){ + fMaya_QFIL_T_cal.push_back(-1) ; + } + } + + void SetQFilPulse(UShort_t N,UShort_t E); + + // SI + void SetEnergySi(UShort_t ,UShort_t ); + void SetTimeSi(UShort_t ,UShort_t ); + + /* CALIBRATION */ + bool InitCalibrate(std::vector<string>&) ; //! + bool Calibrate(void) ; //! + + // TOF + + void SetTOF(UShort_t ,UShort_t ) ; + UShort_t GetTOF_GAL_HF() { return fMaya_TOF_GAL_HF ; } ; + UShort_t GetTOF_GAL_DIAM() { return fMaya_TOF_GAL_DIAM ; } ; + UShort_t GetTOF_TM_TRIG() { return fMaya_TOF_TM_TRIG ; } ; + + ClassDef(TMayaData,2) // MayaData structure + }; + +#endif diff --git a/NPLib/Maya/TMayaHisto.cxx b/NPLib/Maya/TMayaHisto.cxx new file mode 100755 index 0000000000000000000000000000000000000000..fb60d48533ded43db9c510950a247efed5eea8ef --- /dev/null +++ b/NPLib/Maya/TMayaHisto.cxx @@ -0,0 +1,1781 @@ +/***************************************************************************** + * Copyright (C) 2008 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: M. Vandebrouck contact address: vandebro@ipno.in2p3.fr * + * J. Gibelin gibelin@lpccaen.in2p3.fr * + * * + * Creation Date : November 2011 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class holds a special 2D Maya histogram * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ +#include "TMayaHisto.h" + +//______________________________________________________________________________ +// TMayaHisto methods +// TMayaHisto a 2-D histogram with four bytes per cell (float) +//______________________________________________________________________________ + +ClassImp( TMayaHisto) + + //______________________________________________________________________________ +TMayaHisto::TMayaHisto() : + TH2F() { + fHoneyCombBins = NULL; + fGCuts = NULL; + fRanges = NULL; + fRangeFunction = NULL; + + fHoneyCombBins = new TClonesArray("TCutG", fNcells); + fRangeFunction = new TF1(); + fGCuts = new TList(); + fRanges = new TList(); + + fGCuts->SetOwner(); + fRanges->SetOwner(); + fHoneyCombBins->SetOwner(); + + // Constructor. +} + +//______________________________________________________________________________ +TMayaHisto::~TMayaHisto() { + if (fHoneyCombBins) { + delete (fHoneyCombBins); + fHoneyCombBins = NULL; + } + if (fRangeFunction) { + delete (fRangeFunction); + fRangeFunction = NULL; + } + if (fGCuts) { + delete (fGCuts); + fGCuts = NULL; + } + if (fRanges) { + delete (fRanges); + fRanges = NULL; + } + + // Destructor. +} +//______________________________________________________________________________ +TMayaHisto::TMayaHisto(const char *name, const char *title, Int_t nbinsx, + Int_t nbinsy, Double_t hsize) : + TH2F(name, title, nbinsx, 1.1, 1.1 + nbinsx, nbinsy, 1.1, 1.1 + nbinsx) +/* + :TH2(name,title, + nbinsx,0,(nbinsx+(nbinsx>1)/2.)*hsize*TMath::Sqrt(3), + nbinsy,0,(int((nbinsy)/2)*3+.5+nbinsy%2*1.5)*hsize) + */// fill by (x,y) +{ + + // Constructor. + + fMinimum = -1111; + fMaximum = -1111; + fHoneyCombBins = NULL; + fGCuts = NULL; + fRanges = NULL; + fRangeFunction = NULL; + + fHoneyCombSize = fabs(hsize); + fLineColor = 1; + if (hsize > 0) { + bShiftHexagon = 1; + } else { + bShiftHexagon = 0; + } + GetXaxis()->SetTickLength(0); + GetYaxis()->SetTickLength(0); + GetXaxis()->SetAxisColor(gStyle->GetCanvasColor()); + GetYaxis()->SetAxisColor(gStyle->GetCanvasColor()); + GetXaxis()->SetLabelColor(gStyle->GetCanvasColor()); + GetYaxis()->SetLabelColor(gStyle->GetCanvasColor()); + + //GetYaxis()->SetBinLabel(nbinsy,atoi(1)); + + TArrayF::Set(fNcells); + if (fgDefaultSumw2) + Sumw2(); + CreateHoneyCombStructure(); + + // Track + fLastNormalAxis = -1; + fOriginWeigh = .5; + + nTrack = 0; + fGCuts = new TList; + fRanges = new TList; + + fGCuts->SetOwner(); + fRanges->SetOwner(); + fHoneyCombBins->SetOwner(); + + fRangeFunction = new TF1("_dfltRangeFunction_", _dfltRangeFunction_, 0, + TMath::Sqrt(3* (TMath ::Power(nbinsx,2)+TMath::Power(nbinsy,2))),3); + fRangeFunction->SetParNames("base","range","slope"); + fSearchDiv = 10; + fRangeThresRatio = .1; + fRangePrecision = fHoneyCombSize*.1; + // Style + fTCutGPatternStyle = 3001; + } + + //______________________________________________________________________________ +TMayaHisto::TMayaHisto(const TMayaHisto &h2f) : + TH2F() { + // Copy constructor. + + ((TMayaHisto&) h2f).Copy(*this); +} +//______________________________________________________________________________ + +TCutG *TMayaHisto::Hexagon(TString name, Float_t x0, Float_t y0) { + // Float_t x [7] = {0},y[7] = {0} ; + Float_t x[7] = { -.5, 0, 0.5, 0.5, 0, -.5, -.5 }; + Float_t y[7] = { 1. / 3., 2. / 3., 1. / 3., -1. / 3., -2. / 3., -1. / 3., + 1. / 3. }; + for (int i = 0; i < 7; i++) { + // x[i] = x0 + TMath::Cos(TMath::Pi()/3.*i+TMath::PiOver2());//* fHoneyCombSize ; + // y[i] = y0 + TMath::Sin(TMath::Pi()/3.*i+TMath::PiOver2());//* fHoneyCombSize ; + x[i] *= 1 + 1e-3; // to be sure that boundaries overlap ! + y[i] *= 1 + 1e-3; // to be sure that boundaries overlap ! + x[i] += x0; + y[i] += y0; + } + TCutG *h = new TCutG(name.Data(), 7, x, y); + h->SetFillStyle(1000); + return h; +} + +//______________________________________________________________________________ +void TMayaHisto::CreateHoneyCombStructure() { + fHoneyCombBins = new TClonesArray("TCutG", fNcells); + fHoneyCombBins->BypassStreamer(kFALSE); + fHoneyCombBins->SetOwner(); + TString name; + TObject* obj; + Int_t bin; + Float_t x[7]; + Float_t y[7]; + // TClonesArray &ar = *fHoneyCombBins; + for (int i = 0; i < this->GetXaxis()->GetNbins(); i++) { + for (int j = 0; j < this->GetYaxis()->GetNbins(); j++) { + name = TString("pad_") + (Long_t)(i + 1) + TString("_") + (Long_t)( + j + 1); + bin = GetBin(i, j); + x[0]= -0.5; + x[1]= 0.0; + x[2]= 0.5; + x[3]= 0.5; + x[4]= 0.0; + x[5]= -0.5; + x[6]= -0.5; + y[0]= 1./3.; + y[1]= 2./3.; + y[2]= 1./3.; + y[3]= -1./3.; + y[4]= -2./3.; + y[5]= -1./3.; + y[6]= 1./3.; + for (int l = 0; l < 7; l++) { + x[l] *= 1 + 1e-3; // to be sure that boundaries overlap ! + y[l] *= 1 + 1e-3; // to be sure that boundaries overlap ! + x[l] += GetCdisp(i + 1, j + 1); + y[l] += GetRdisp(i + 1, j + 1); + } + + new ((*fHoneyCombBins)[bin]) TCutG(name.Data(), 7, x, y); + obj = (fHoneyCombBins)->At(bin); + ((TCutG*) obj)->SetFillStyle(1000); + + } + } +} + +// +// Fill histogram according to position, not PAD indexes. +//______________________________________________________________________________ + +Int_t TMayaHisto::FillXY(Double_t X, Double_t Y, Double_t W) { + Int_t C, R; + if (GetCR(X, Y, C, R)) + return Fill(C, R, W); + return 0; +} + +//______________________________________________________________________________ + +void TMayaHisto::Paint(Option_t *option = "") { + GetPainter(option); + // gPad->SetFrameLineColor(gStyle->GetCanvasColor()); + // gPad->SetFrameFillStyle(4000); + // gPad->SetFillStyle(4000); + // gPad->SetFrameLineColor(gStyle->GetCanvasColor()); + + Double_t min, max; + if (fMinimum == -1111) { + min = GetMinimum(); + if (min < 0) + min = 0; + fMinimum = min; + } else { + min = fMinimum; + } + if (fMaximum == -1111) { + max = GetMaximum(); + } else { + max = fMaximum; + } + + Int_t ncol = gStyle->GetNumberOfColors(); + + GetZaxis()->Set(ncol, min, max); + + if (fPainter) { + fPainter->Paint("colz,hist"); + fPainter->Paint("axis"); + gPad->Clear(); + if (GetEntries() != 0 + && (GetZaxis()->GetXmin() < GetZaxis()->GetXmax())) + ((THistPainter*) fPainter)->PaintPalette(); + } + gPad->Clear(); + + Int_t q = 0; + for (int i = 0; i < this->GetXaxis()->GetNbins(); i++) { + for (int j = 0; j < this->GetYaxis()->GetNbins(); j++) { + if (fArray[GetBin(i, j)] > min && max > 0) { + if (gPad->GetLogz()) { + q = int(log(fArray[GetBin(i, j)] - min + 1e-6) / log(max + - min + 1e-6) * ncol); + } else { + q = int((fArray[GetBin(i, j)] - min) / (max - min) * ncol); + } + GetPAD(i + 1, j + 1)->SetFillColor(gStyle->GetColorPalette(q + - 1)); + } else { + if (GetPAD(i + 1, j + 1)->GetFillStyle() == 1000) { + GetPAD(i + 1, j + 1)->SetFillStyle(0); + GetPAD(i + 1, j + 1)->SetFillColor( + GetPAD(i + 1, j + 1)->GetLineColor()); + } else { + GetPAD(i + 1, j + 1)->SetFillColor( + GetPAD(i + 1, j + 1)->GetLineColor()); + } + } + + // if(((TCutG*)fHoneyCombBins->At(GetBin(i,j)))->GetFillColor()>0){ + // ((TCutG*)fHoneyCombBins->At(GetBin(i,j)))->SetLineWidth(fLineWidth); + GetPAD(i + 1, j + 1)->SetLineColor(fLineColor); + // } + GetPAD(i + 1, j + 1)->Draw("f"); + GetPAD(i + 1, j + 1)->Draw(); + + } + } + + TIter next(GetListOfFunctions()); + TObject *obj; + + while ((obj = next())) { // loop over all functions + if (obj->InheritsFrom("TF1") && (strncmp(obj->GetName(), "disp", 4) + == 0)) { + obj->Draw("same"); + } else if (!obj->InheritsFrom("TF1") && !obj->InheritsFrom("TH1")) { + obj->Draw("same"); + } + /* + if (obj->InheritsFrom("TAttMarker") && !obj->InheritsFrom("TF1")){ + obj->Draw("same"); + } + if (obj->InheritsFrom("TAttMarker") && !obj->InheritsFrom("TF1")){ + obj->Draw("same"); + } + */ + } + + // if(GetFunction("TPolyMarker")) GetFunction("TPolyMarker")->Draw(); +} + +//______________________________________________________________________________ +void TMayaHisto::Copy(TObject &newth2) const { + // Copy. + + TH2F::Copy((TMayaHisto&) newth2); +} + +//______________________________________________________________________________ +TH1 *TMayaHisto::DrawCopy(Option_t *option) const { + // Draw copy. + + TString opt = option; + opt.ToLower(); + if (gPad && !opt.Contains("same")) + gPad->Clear(); + TMayaHisto *newth2 = (TMayaHisto*) Clone(); + newth2->SetDirectory(0); + newth2->SetBit(kCanDelete); + newth2->AppendPad(option); + return newth2; +} + +//______________________________________________________________________________ +Double_t TMayaHisto::GetBinContent(Int_t bin) const { + // Get bin content. + + if (fBuffer) + ((TH2C*) this)->BufferEmpty(); + if (bin < 0) + bin = 0; + if (bin >= fNcells) + bin = fNcells - 1; + if (!fArray) + return 0; + return Double_t(fArray[bin]); +} + +//______________________________________________________________________________ +void TMayaHisto::Reset(Option_t *option) { + //*-*-*-*-*-*-*-*Reset this histogram: contents, errors, etc*-*-*-*-*-*-*-* + //*-* =========================================== + + TH2F::Reset(option); + //TArrayF::Reset(); + nTrack = 0; + fLastNormalAxis = -1; + fGCuts->Clear(); + fRanges->Clear(); + + TIter next(GetArrayOfPADs()); + TObject *obj; + while ((obj = next())) { + ((TCutG*) obj)->SetFillStyle(1000); + ((TCutG*) obj)->SetFillColor(gStyle->GetCanvasColor()); + ((TCutG*) obj)->SetLineColor(fLineColor); + } + +} + +//______________________________________________________________________________ +void TMayaHisto::SetBinContent(Int_t bin, Double_t content) { + // Set bin content + if (bin < 0) + return; + if (bin >= fNcells) + return; + fArray[bin] = Float_t(content); + fEntries++; + fTsumw = 0; +} + +//______________________________________________________________________________ +void TMayaHisto::SetBinsLength(Int_t n) { + // Set total number of bins including under/overflow + // Reallocate bin contents array + + if (n < 0) + n = (fXaxis.GetNbins() + 2) * (fYaxis.GetNbins() + 2); + fNcells = n; + TArrayF::Set(n); +} + +// +// Return a pointer on the PAD at C,R +//______________________________________________________________________________ + +TCutG* TMayaHisto::GetPAD(Int_t C, Int_t R) { + return (TCutG*) fHoneyCombBins->At(GetBin(C - 1, R - 1)); +} + +// +// Return a pointer on the PAD at X,Y +//______________________________________________________________________________ + +TCutG* TMayaHisto::GetPADXY(Double_t X, Double_t Y) { + Int_t C, R; + if (GetCR(X, Y, C, R)) + return GetPAD(C, R); + return NULL; +} + +// +// Return the corresponding Y of the PAD in the ROOT referential +// +// we want : but we have in root : +// +// +----------> x (C) y (C) +// | ^ +// | | +// | | +// V | +// y (R) +----------> x (R) +//______________________________________________________________________________ + +Double_t TMayaHisto::GetCdisp(Double_t C, Double_t R) { + Double_t fR, iR; + fR = modf(R, &iR); + return C + (int(iR - bShiftHexagon) % 2) / 2. + Xview_corr; +} + +Double_t TMayaHisto::GetRdisp(Double_t C, Double_t R) { + return (GetYaxis()->GetNbins() - R) + Yview_corr + 1; +} + +// +// Give the X position corresponding to the PAD(c,r) +//______________________________________________________________________________ + +Double_t TMayaHisto::GetX(Int_t C, Int_t R) { + if (C > 0 && R > 0 && C <= GetXaxis()->GetNbins() && R + <= GetYaxis()->GetNbins()) { + return fHoneyCombSize * TMath::Sqrt(3) / 2. * (2* C - (R + 1 + - bShiftHexagon) % 2); // tested + } else { + return 0; + } +} + +// +// Give the Y position corresponding to the PAD(c,r) +//______________________________________________________________________________ + +Double_t TMayaHisto::GetY(Int_t C, Int_t R) { + if (C > 0 && R > 0 && C <= GetXaxis()->GetNbins() && R + <= GetYaxis()->GetNbins()) { + return fHoneyCombSize * (1 + (R - 1) * 1.5); // tested + } else { + return 0; + } +} + +// +// Give the PAD C and R position corresponding to the position (X,Y) +// To avoid complicated calculations : +// - find the "easiest" (in terms of analytical solution) pad +// - check if the point is inside this pad +// - otherwise check "intelligently" the neighbours +// - of course exit as soon as found ! +//______________________________________________________________________________ + + +Bool_t TMayaHisto::GetCR(Double_t X, Double_t Y, Int_t &C, Int_t &R) { + Double_t fC = (Double_t) C, fR = (Double_t) R; + if (__GetCR__(X, Y, fC, fR, kFALSE)) { + C = int(fC); + R = int(fR); + return kTRUE; + } + return kFALSE; +} + +// +// Return X,Y from C,R displayed +//______________________________________________________________________________ + + +Bool_t TMayaHisto::GetXY_CRdisp(Double_t fCd, Double_t fRd, Double_t &X, + Double_t &Y) { // from C,R fractional displayed to X + + if (fCd > GetXaxis()->GetXmin() && fRd > GetYaxis()->GetXmin() && fCd + < GetXaxis()->GetXmax() && fRd < GetYaxis()->GetXmax()) { // strictly to avoid border effects ! + + X = (fCd - (Xview_corr + .5)) * (fHoneyCombSize * TMath::Sqrt(3)) + * (GetXaxis()->GetXmax() - GetXaxis()->GetXmin()) + / GetXaxis()->GetNbins(); + + Y = ((Yview_corr - .4 - .1 / 3.) + GetYaxis()->GetXmax() - fRd) + * (fHoneyCombSize * 1.5) * (GetYaxis()->GetXmax() + - GetYaxis()->GetXmin()) / GetYaxis()->GetNbins(); + + return kTRUE; + } else { + return kFALSE; + } + return kFALSE; +} + +//Double_t GetY_CRdisp(Double_t,Double_t){ // from C,R fractional displayed to Y +// return +//} + +// +// +//______________________________________________________________________________ + +Bool_t TMayaHisto::GetCR(Double_t X, Double_t Y, Double_t &C, Double_t &R) { + return __GetCR__(X, Y, C, R, kTRUE); +} + +Bool_t TMayaHisto::GetCRdisp_XY(Double_t X, Double_t Y, Double_t &C, + Double_t &R) { + + C = (Xview_corr + .5) + X / (fHoneyCombSize * TMath::Sqrt(3)) + / (GetXaxis()->GetXmax() - GetXaxis()->GetXmin()) + * GetXaxis()->GetNbins(); + R = (Yview_corr - .4 - .1 / 3.) + GetYaxis()->GetXmax() - (Y + / fHoneyCombSize / 1.5) / (GetYaxis()->GetXmax() + - GetYaxis()->GetXmin()) * GetYaxis()->GetNbins(); + + if (C > GetXaxis()->GetXmin() && R > GetYaxis()->GetXmin() && C + < GetXaxis()->GetXmax() && R < GetYaxis()->GetXmax()) { // strictly to avoid border effects ! + return kTRUE; + } else { + return kFALSE; + } +} + +Bool_t TMayaHisto::__GetCR__(Double_t X, Double_t Y, Double_t &C, Double_t &R, + Bool_t IsFrac) { + + Double_t fR = (Y / fHoneyCombSize - 1.) / 1.5 + 1; + Int_t iR = TMath::Nint(fR + 1e-6); + + Double_t fC = (X / (TMath::Sqrt(3) * fHoneyCombSize)) - .5* + ( (iR+bShiftHexagon)%2); + Int_t iC = TMath::Nint(fC+1e-6); + + // std::cerr << "#C# C: " << C << + // " " << R << " " << fC << " " << fR << " " << GetCdisp(fC,fR) << " " << GetRdisp(fC,fR) << std::endl; + C = -1; R = -1; + if(GetPAD(iC,iR)==NULL) return kFALSE; + + if(GetPAD(iC,iR)->IsInside(GetCdisp(fC,fR),GetRdisp(fC,fR))) { + if(IsFrac) { + C = (iC) + (X-GetX(iC,iR))/(TMath::Sqrt(3)*fHoneyCombSize) ; + R = (iR) + (Y-GetY(iC,iR))/(TMath::Sqrt(3)*fHoneyCombSize) ; + // std::cerr << iC << " + " << X << "-" << GetX(iC,iR) << " = " << C << std::endl ; + // std::cerr << iR << " + " << Y << "-" << GetY(iC,iR) << " = " << R << std::endl ; + return kTRUE; + } else { + C = iC ; R = iR ; + return kTRUE; + } + } else { + for(int i=-1;i<=1;i++){ + for(int j=-1;j<=1;j++){ + if(GetPAD(iC+i,iR+j)!=NULL){ + if(GetPAD(iC+i,iR+j)->IsInside(GetCdisp(fC,fR),GetRdisp(fC,fR))){ + if(IsFrac){ + C = (iC+i) + (X-GetX(iC+i,iR+j))/(TMath::Sqrt(3)*fHoneyCombSize) ; + R = (iR+j) + (Y-GetY(iC+i,iR+j))/(TMath::Sqrt(3)*fHoneyCombSize) ; + // std::cerr << iC+i << " + " << X << "-" << GetX(iC+i,iR+j) << " = " << C << " []" << std::endl ; + // std::cerr << iR+j << " + " << Y << "-" << GetY(iC+i,iR+j) << " = " << R << " []" << std::endl ; + return kTRUE; + } else { + C = iC+i ; R = iR+j ; + return kTRUE; + } + } + } + } + } + + } + C = -1 ; + R = -1 ; + return kFALSE ; +} + + // + // Give the PAD C position corresponding to the position (X,Y) + //______________________________________________________________________________ + +Int_t TMayaHisto::GetC(Double_t X, Double_t Y) { + Int_t C, R; + GetCR(X, Y, C, R); + return C; +} + +// +// Give the PAD R position corresponding to the position (X,Y) +//______________________________________________________________________________ + +Int_t TMayaHisto::GetR(Double_t X, Double_t Y) { + Int_t C, R; + GetCR(X, Y, C, R); + return R; +} + +// +// Give the PAD C position (fractional) corresponding to the position (X,Y) +//______________________________________________________________________________ + +Double_t TMayaHisto::GetfC(Double_t X, Double_t Y) { + Double_t C, R; + GetCR(X, Y, C, R); + return C; +} + +// +// Give the PAD R position (fractional) corresponding to the position (X,Y) +//______________________________________________________________________________ + +Double_t TMayaHisto::GetfR(Double_t X, Double_t Y) { + Double_t C, R; + GetCR(X, Y, C, R); + return R; +} + +Double_t TMayaHisto::Axis_Angle[] = { TMath::Pi() / 3., -TMath::Pi() / 3., 0. }; + +/* HoneyComb symetry axis definition + + / \ / \ / \ / \ axis 2 + | | | | | \ / + / \ / \ / \ / \ / \ / + | | | | | -----X------ axis 3 + / \ / \ / \ / \ / \ + | | | | | / \ + \ / \ / \ / \ / axis 1 + + */ + +//______________________________________________________________________________ +// +// Give the Label corresponding to the PAD(c,r) for the Axis n +//______________________________________________________________________________ + +Int_t TMayaHisto::GetAxisLbl(Int_t C, Int_t R, Int_t N) { + switch (N) { + // -- Axis 1 + case 1: + return C - int((R + bShiftHexagon) / 2.) + int(GetYaxis()->GetNbins() + / 2.); + // -- Axis 2 + case 2: + return C + int((R + 1 - bShiftHexagon) / 2); + // -- Axis 3 + case 3: + return R; + } + return 0; +} + +//______________________________________________________________________________ +// +// Give the Index corresponding to the PAD(c,r) for the Axis N +//______________________________________________________________________________ + +Int_t TMayaHisto::GetAxisIdx(Int_t C, Int_t R, Int_t N) { + switch (N) { + // -- Axis 1 + case 1: + if (bShiftHexagon == 1) { + return (GetAxisLbl(C, R, N) < int(GetYaxis()->GetNbins() / 2.) ? 2* + C - (R % 2) : R); + } else { + return (GetAxisLbl(C, R, N) <= int(GetYaxis()->GetNbins() / 2.) ? 2* + C + (R % 2) - 1 + : R); + } + // -- Axis 2 + case 2: + if (bShiftHexagon == 1) { + return (GetAxisLbl(C, R, N) <= GetXaxis()->GetNbins() ? R : 2* + (GetXaxis ()->GetNbins()-C)+R%2+1); + } else { + return (GetAxisLbl(C,R,N)<=GetXaxis()->GetNbins()?R:2*(GetXaxis()->GetNbins()-C)-R%2+2); + } + // -- Axis 3 + case 3: return C; + } + return 0; + } + + // ******* REVERSE FUNCTIONS *********** + + //______________________________________________________________________________ + // + // Give the Col corresponding to the PAD(Lbl,Idx) for the Axis N + //______________________________________________________________________________ + +Int_t TMayaHisto::GetAxisCol(Int_t L, Int_t I, Int_t N) { + switch (N) { + // -- Axis 1 + case 1: + return (L <= int(GetYaxis()->GetNbins() / 2) ? int(I / 2) + (I) % 2 : L + + int((I + bShiftHexagon) / 2.) - int(GetYaxis()->GetNbins() + / 2)); + // -- Axis 2 + case 2: + if (bShiftHexagon == 1) { + return (L <= GetXaxis()->GetNbins() ? L - int(I / 2) + : GetXaxis()->GetNbins() - int((I - 1) / 2.)); + } else { + return (L <= GetXaxis()->GetNbins() ? L - int((I + 1) / 2) + : GetXaxis()->GetNbins() - int((I - 1) / 2.)); + } + // -- Axis 3 + case 3: + return I; + } + return 0; +} + +//______________________________________________________________________________ +// +// Give the Row corresponding to the PAD(Lbl,Idx) for the Axis N +//______________________________________________________________________________ + +Int_t TMayaHisto::GetAxisRow(Int_t L, Int_t I, Int_t N) { + switch (N) { + // -- Axis 1 + case 1: + if (bShiftHexagon == 1) { + return (L < int(GetYaxis()->GetNbins() / 2) ? I - 2* L + 2* + int (GetYaxis()->GetNbins()/2):I); + } else { + return (L<int(GetYaxis()->GetNbins()/2)?1+I+2*(int(GetYaxis()->GetNbins()/2)-L):I); + } + // -- Axis 2 + case 2: if(bShiftHexagon==1) { + return (L<=GetXaxis()->GetNbins()?I:2*(L-GetXaxis()->GetNbins())+I-1); + } else { + return (L<=GetXaxis()->GetNbins()?I:I+2*(L-GetXaxis()->GetNbins()-1)); + } + // -- Axis 3 + case 3: return L; + } + return 0; + } + + //______________________________________________________________________________ + // + // Check if Row and Col are inside a graphical cut g + //______________________________________________________________________________ + +Bool_t TMayaHisto::IsInside(TCutG*g, Int_t C, Int_t R) { + if (g == NULL) + return kTRUE; // By default is inside ! + return g->IsInside(GetCdisp(C, R), GetRdisp(C, R)); +} + +//______________________________________________________________________________ +// +// Fit +//______________________________________________________________________________ + +Bool_t TMayaHisto::FitTrack(Option_t *o, Int_t Cmin, Int_t Cmax, // limits in Columns + Int_t Rmin, Int_t Rmax, // limits in Rows + TCutG *gFitRegion, // graphical cuts + Double_t x0, Double_t y0) { // forced point => "origin" option + TString opt = o; + + Double_t A, B, C, UEV, Q, X, Xg, Y, Yg; + A = B = C = UEV = Q = X = Y = Xg = Yg = 0.; + // + + Int_t Row, Col; + /* + Int_t Cmin=1; + Int_t Cmax=GetXaxis()->GetNbins(); + Int_t Rmin=1; + Int_t Rmax=GetYaxis()->GetNbins(); + */ + Double_t min = TMath::Max(fMinimum, 0.); + Double_t padVal; + + // Prefit : find the right axe + + typedef std::map<int, std::map<int, float> > axis_map; + typedef std::map<int, float> axis_fscalar; + typedef std::map<int, int> axis_iscalar; + + axis_map PAD_Axis_Content[3]; + axis_fscalar PAD_Axis_Max[3]; + axis_iscalar PAD_Axis_Max_idx[3]; + axis_fscalar PAD_Axis_PosX_Fit[3]; + axis_fscalar PAD_Axis_PosY_Fit[3]; + + Char_t _id_[128] = ""; + Int_t AxisIdx, AxisLbl; + Int_t c, r; + Double_t cd, rd; + + if (gFitRegion == NULL) { + gFitRegion = new TCutG("square_region", 4); + gFitRegion->SetPoint(0, GetCdisp(Cmin, Rmin) - .1, GetRdisp(Cmin, Rmin) + + .1); + gFitRegion->SetPoint(1, GetCdisp(Cmin, Rmax) - .1, GetRdisp(Cmin, Rmax) + - .1); + gFitRegion->SetPoint(2, GetCdisp(Cmax, Rmax) + .1, GetRdisp(Cmax, Rmax) + - .1); + gFitRegion->SetPoint(3, GetCdisp(Cmax, Rmin) + .1, GetRdisp(Cmax, Rmin) + + .1); + } + + if (opt.Contains("sech")) { + + for (Row = Rmin; Row <= Rmax; Row++) { + for (Col = Cmin; Col <= Cmax; Col++) { + + if (Col - GetAxisCol(GetAxisLbl(Col, Row, 1), GetAxisIdx(Col, + Row, 1), 1) != 0) { + std::cerr << "1) Problem w/ at (" << Col << "," << Row + << ") : " << GetAxisCol(GetAxisLbl(Col, Row, 1), + GetAxisIdx(Col, Row, 1), 1) << "#" + << GetAxisRow(GetAxisLbl(Col, Row, 1), GetAxisIdx( + Col, Row, 1), 1) << std::endl; + } + + if (Col - GetAxisCol(GetAxisLbl(Col, Row, 2), GetAxisIdx(Col, + Row, 2), 2) != 0) { + std::cerr << "2) Problem w/ at (" << Col << "," << Row + << ") : " << GetAxisIdx(Col, Row, 2) << "#" + << GetAxisRow(GetAxisLbl(Col, Row, 2), GetAxisIdx( + Col, Row, 2), 2) << std::endl; + } + + if (Col - GetAxisCol(GetAxisLbl(Col, Row, 3), GetAxisIdx(Col, + Row, 3), 3) != 0) { + std::cerr << "3) Problem w/ at (" << Col << "," << Row + << ") : " << GetAxisCol(GetAxisLbl(Col, Row, 3), + GetAxisIdx(Col, Row, 3), 3) << "#" + << GetAxisRow(GetAxisLbl(Col, Row, 3), GetAxisIdx( + Col, Row, 3), 3) << std::endl; + } + + GetPAD(Col, Row)->SetLineWidth(1); + + if (!IsInside(gFitRegion, Col, Row)) + continue; + + padVal = fArray[GetBin(Col - 1, Row - 1)]; + + if (padVal > min) { + + // Axis 1 + AxisLbl = GetAxisLbl(Col, Row, 1); + AxisIdx = GetAxisIdx(Col, Row, 1); + if (AxisLbl > 0 && AxisIdx > 0) { + PAD_Axis_Content[0][AxisLbl][AxisIdx] = padVal; + if (padVal > PAD_Axis_Max[0][AxisLbl] && padVal > 0) { + PAD_Axis_Max[0][AxisLbl] = padVal; + PAD_Axis_Max_idx[0][AxisLbl] = AxisIdx; + } + } + + // Axis 2 + AxisLbl = GetAxisLbl(Col, Row, 2); + AxisIdx = GetAxisIdx(Col, Row, 2); + if (AxisLbl > 0 && AxisIdx > 0) { + PAD_Axis_Content[1][AxisLbl][AxisIdx] = padVal; + if (padVal > PAD_Axis_Max[1][AxisLbl] && padVal > 0) { + PAD_Axis_Max[1][AxisLbl] = padVal; + PAD_Axis_Max_idx[1][AxisLbl] = AxisIdx; + } + } + + // Axis 3 + AxisLbl = GetAxisLbl(Col, Row, 3); + AxisIdx = GetAxisIdx(Col, Row, 3); + if (AxisLbl > 0 && AxisIdx > 0) { + PAD_Axis_Content[2][AxisLbl][AxisIdx] = padVal; + if (padVal > PAD_Axis_Max[2][AxisLbl] && padVal > 0) { + PAD_Axis_Max[2][AxisLbl] = padVal; + PAD_Axis_Max_idx[2][AxisLbl] = AxisIdx; + } + } + } + } + } + + Int_t max_itr = -1; + for (Int_t i = 0; i < 3; i++) { + // std::cerr << i+1 << ") " << PAD_Axis_Content[i].size() << std::endl ; + max_itr = TMath::Max(max_itr, (Int_t) GetAxisLbl( + GetXaxis()->GetNbins(), GetXaxis()->GetNbins(), i + 1)); + } + + Int_t NMax[3] = { 0 }, idx; + Double_t a1, a2, dR, Qo, Qp, Qm; + for (Int_t l = 1; l <= max_itr; l++) { + for (Int_t a = 0; a < 3; a++) { + idx = PAD_Axis_Max_idx[a][l]; + if (idx > 0 && l > 0) { + Qo = (Double_t) PAD_Axis_Content[a][l][idx]; + Qm = (Double_t) PAD_Axis_Content[a][l][idx - 1]; + Qp = (Double_t) PAD_Axis_Content[a][l][idx + 1]; + c = GetAxisCol(l, idx, a + 1); + r = GetAxisRow(l, idx, a + 1); + + if (Qo > 0 && Qp > 0 && Qm > 0 && c > 0 && r > 0) { + NMax[a]++; + // why not doing the sech fit here already ? + // look at Thomas ROGER thesis, page 22 + // note: here: Qo = Q0 ; Qp = Q+ ; Qm = Q- + a2 = .5* (TMath ::Sqrt(Qo/Qp)+TMath::Sqrt(Qo/Qm)); + a1 = (TMath::Sqrt(Qo/Qp)-TMath::Sqrt(Qo/Qm))/(2.*TMath::SinH(a2)); + dR = (fHoneyCombSize)*TMath::Log((1+a1)/(1-a1))/TMath::Log(a2+TMath::Sqrt(a2*a2-1.)); + PAD_Axis_PosX_Fit[a][l] = dR*TMath::Cos(Axis_Angle[a]) + GetX(c,r) ; + PAD_Axis_PosY_Fit[a][l] = dR*TMath::Sin(Axis_Angle[a]) + GetY(c,r) ; + // std::cerr << "Fit axis " << a+1 << " (" << c << "," << r << ") -> " ; + // std::cerr << PAD_Axis_PosX_Fit[a][l] << "," << PAD_Axis_PosY_Fit[a][l] << " from " ; + // std::cerr << GetX(c,r) << " " << GetY(c,r) ; + // std::cerr << " w/ dR = " << dR << std::endl ; + } + } + } + } + Float_t max_tot = -1.; + fLastNormalAxis = -1; + for(Int_t i=0;i<3;i++) { + // std::cerr << i+1 << ") " << NMax[i] << std::endl ; + if(NMax[i]>max_tot) { + max_tot = NMax[i]; + fLastNormalAxis = i; + } + } + + std::cerr << "The trajectory is 'perpendicular' to the Axis" << fLastNormalAxis+1 << std::endl; + + // Highlight the maximums find on the axis + // and start the fit + TPolyMarker *MarkMax = new TPolyMarker(); + + A=B=C=UEV=Q=X=Y=Xg=Yg=0.; + + for(Int_t l=1;l<=max_itr;l++) { + c = GetAxisCol(l,PAD_Axis_Max_idx[fLastNormalAxis][l],fLastNormalAxis+1); + r = GetAxisRow(l,PAD_Axis_Max_idx[fLastNormalAxis][l],fLastNormalAxis+1); + if(c>0 && r>0 && PAD_Axis_Max[fLastNormalAxis][l]>0) { + GetPAD(c,r)->SetLineWidth(3); + if(PAD_Axis_PosX_Fit[fLastNormalAxis][l]>0 && PAD_Axis_PosY_Fit[fLastNormalAxis][l]>0) { + + // ** Fit ** + padVal = PAD_Axis_Max[fLastNormalAxis][l]; + // std::cerr << padVal << " " << Q << " " << Xg << " " << Yg << std::endl ; + if(padVal>min) { + Q+=padVal; + Xg+=PAD_Axis_PosX_Fit[fLastNormalAxis][l]*padVal; + Yg+=PAD_Axis_PosY_Fit[fLastNormalAxis][l]*padVal; + } + + // ** Graphics ** + cd = GetCdisp(c,r); + rd = GetRdisp(c,r); + GetCRdisp_XY(PAD_Axis_PosX_Fit[fLastNormalAxis][l] ,PAD_Axis_PosY_Fit[fLastNormalAxis][l],cd,rd); + MarkMax->SetNextPoint(cd,rd); + // std::cerr << c << ": " << PAD_Axis_PosX_Fit[fLastNormalAxis][l] << "->" << cd << " # " ; + // std::cerr << r << ": " << PAD_Axis_PosY_Fit[fLastNormalAxis][l] << "->" << rd << std::endl ; + } + } + } + + // + MarkMax->SetMarkerStyle(29); + MarkMax->SetMarkerSize(1); + MarkMax->SetMarkerColor(gStyle->GetCanvasColor()); + fFunctions->Add(MarkMax); + // ---- + + if(opt.Contains("origin")) { + Xg = (x0*Q*fOriginWeigh + Xg)/(Q*(1.+fOriginWeigh)); // modified center of gravity X position + Yg = (y0*Q*fOriginWeigh + Yg)/(Q*(1.+fOriginWeigh)); // modified center of gravity Y position + } else { + Xg/=Q; // center of gravity X position + Yg/=Q; // center of gravity Y position + } + + for(Int_t l=1;l<=max_itr;l++) { + c = GetAxisCol(l,PAD_Axis_Max_idx[fLastNormalAxis][l],fLastNormalAxis+1); + r = GetAxisRow(l,PAD_Axis_Max_idx[fLastNormalAxis][l],fLastNormalAxis+1); + if(c>0 && r>0 && PAD_Axis_Max[fLastNormalAxis][l]>0) { + if(PAD_Axis_PosX_Fit[fLastNormalAxis][l]>0 && PAD_Axis_PosY_Fit[fLastNormalAxis][l]>0) { + + // ** Fit ** + padVal = PAD_Axis_Max[fLastNormalAxis][l]; + if(padVal>min) { + + X = PAD_Axis_PosX_Fit[fLastNormalAxis][l]; + Y = PAD_Axis_PosY_Fit[fLastNormalAxis][l]; + + A+=padVal*(X-Xg)*(X-Xg); //X^2 + B+=padVal*(X-Xg)*(Y-Yg); //YX + C+=padVal*(Y-Yg)*(Y-Yg); //X^2 + + + } + + } + } + } + + } + + // ----- + if(opt.Contains("chi2")) { + // Double_t A, B, C, UEV, Q, X, Xg, Y, Yg; + A=B=C=UEV=Q=X=Y=Xg=Yg=0.; + + for (Row=Rmin;Row<=Rmax;Row++) { + for (Col=Cmin;Col<=Cmax;Col++) { + if(!IsInside(gFitRegion,Col,Row)) continue; + padVal = fArray[GetBin(Col-1,Row-1)]; + if(padVal>min) { + Q+=padVal; + Xg+=GetX(Col,Row)*padVal; + Yg+=GetY(Col,Row)*padVal; + // std::cerr << Col << " " << Row << " " << GetX(Col,Row) << " " << GetY(Col,Row) << " " << padVal << std::endl ; + } + } + } + if(opt.Contains("origin")) { + Xg = (x0*Q*fOriginWeigh + Xg)/(Q*(1.+fOriginWeigh)); // modified center of gravity X position + Yg = (y0*Q*fOriginWeigh + Yg)/(Q*(1.+fOriginWeigh)); // modified center of gravity Y position + } else { + Xg/=Q; // center of gravity X position + Yg/=Q; // center of gravity Y position + } + + for (Row=Rmin;Row<=Rmax;Row++) { + for(Col=Cmin;Col<=Cmax;Col++) { + if(!IsInside(gFitRegion,Col,Row)) continue; + padVal = fArray[GetBin(Col-1,Row-1)]; + if(padVal>min) { + X = GetX(Col,Row); + Y = GetY(Col,Row); + A+=padVal*(X-Xg)*(X-Xg); //X^2 + B+=padVal*(X-Xg)*(Y-Yg); //YX + C+=padVal*(Y-Yg)*(Y-Yg); //X^2 + } + } + } + + } + + UEV=0.5*(A+C+sqrt((A+C)*(A+C)-4*(A*C-B*B))); // valeur propre de la matrice regression + Double_t a=B/(UEV-C); // coefficient directeur + Double_t b=Yg-a*Xg; // ordonnée a l origine Y = aX +b + + + nTrack++; // Yahoo !! One more track found ! + if(opt.Contains("sech")) { + fNormalTrackAxis[nTrack] = fLastNormalAxis + 1; + } else { + if(a==0) { + fNormalTrackAxis[nTrack] = 1; // 2 can be Ok too anyway // TODO : fix this ? + } else { + Double_t _min_angle_tmp = 2*(TMath::TwoPi()); + for(int i=0;i<3;i++) { + if(TMath::Abs(Axis_Angle[i] - TMath::ATan(-1./a /*= normal coef*/))<_min_angle_tmp) { + fNormalTrackAxis[nTrack] = i+1; + _min_angle_tmp = TMath::Abs(Axis_Angle[i] - TMath::ATan(-1./a)); + }; + } + } + } + sprintf(_id_,"traj_%d",nTrack); + + TF1 *f = new TF1(_id_,"[1]*x+[0]", + (GetXaxis()->GetXmin()-.5)*fHoneyCombSize*TMath::Sqrt(3), + (GetXaxis()->GetXmax()+.5)*fHoneyCombSize*TMath::Sqrt(3)); + f->SetParameter(0,b); + f->SetParameter(1,a); + fFunctions->Add(f); + + if(gFitRegion!=NULL) { + sprintf(_id_,"gcut_%d",nTrack); + gFitRegion->SetName(_id_); + gFitRegion->SetTitle(_id_); + fGCuts->Add(gFitRegion); + } + + std::cerr << "## " << _id_ << ":\t" << a << " " << b << " " << f->Eval(fHoneyCombSize*3) << std::endl; + + // Now we display on screen + + Double_t Cd0 = GetXaxis()->GetNbins(), Cd1 = 0.; + Double_t Rd0 = 0. , Rd1 = 0.; + Double_t Ctmp = 0, Rtmp =0.; + Double_t Xtmp = -100., Ytmp=100.; + + if(a != 0) { + for(Int_t i=1;i<=TMath::Max(GetXaxis()->GetNbins(),GetYaxis()->GetNbins());i+=1) { + Xtmp = GetX(i,i); + Ytmp = a*Xtmp+b; + + GetCRdisp_XY(Xtmp,Ytmp,Ctmp,Rtmp); + + if(Ctmp>0 && Ctmp<=GetXaxis()->GetNbins() && + Rtmp>0 && Rtmp<=GetYaxis()->GetNbins() ) { + if(Cd0>Ctmp) { + Cd0 = Ctmp; + Rd0 = Rtmp; + } + if(Cd1<Ctmp) { + Cd1 = Ctmp; + Rd1 = Rtmp; + } + } + } + } + + std::cerr << " -- " << std::endl; + std::cerr << a << " " << b << std::endl; + std::cerr << " => " << std::endl; + std::cerr << Cd0 << " " << Cd1 << " " << Rd0 << " " << Rd1 << std::endl; + + if(Cd1-Cd0 != 0) { + Double_t na = (Rd1-Rd0)/(Cd1-Cd0); + Double_t nb = Rd1-na*Cd1; + + //std::cerr << na << " " << nb << std::endl ; + // std::cerr << " -- " << std::endl ; + sprintf(_id_,"disptraj_%d",nTrack); + // std::cerr << _id_ << std::endl ; + TF1 *fi = new TF1(_id_,"[1]*x+[0]",GetXaxis()->GetXmin(),GetXaxis()->GetXmax()); + + fi->SetLineColor(2); + fi->SetParameter(0,nb); + fi->SetParameter(1,na); + fFunctions->Add(fi); + + } + return kTRUE; + } + + //______________________________________________________________________________ + // + // Find closest collinear axis to a give function coefficient + //______________________________________________________________________________ + // + +Int_t TMayaHisto::FindClosestAxis(Double_t a) { + Double_t _min_angle_tmp = 2* (TMath ::TwoPi()); + Int_t paxis = -1; + for(int i=0;i<3;i++) { + if(TMath::Abs(Axis_Angle[i] - TMath::ATan(a))<_min_angle_tmp) { + paxis = i+1; + _min_angle_tmp = TMath::Abs(Axis_Angle[i] - TMath::ATan(a)); + }; + } + std::cout << "# coeficient of " << a << " close to Axis " << paxis << std::endl; + return paxis; +} + +//______________________________________________________________________________ +// +// Find closest collinear axis to a give Track ID +//______________________________________________________________________________ +// + +Int_t TMayaHisto::FindClosestAxis(Int_t ID) { + TF1 *t = GetTrajectory(ID); + if (t == NULL) + return -1; + std::cout << "# Axis " << ID << " with "; + return FindClosestAxis((Double_t) t->GetParameter(1)); +} + +//______________________________________________________________________________ +// +// Project pad value on track ID i.e. on the most collinear axis, following natural direction +//______________________________________________________________________________ +// + +TH1F* TMayaHisto::ProjectOnTrack(Int_t ID, Option_t *o, Double_t xo, + Double_t yo) { + // Option: + // +X -> xsens: sens in x (default previous value) become kTRUE + // +Y -> ysens: sens in y (default previous value) become kTRUE + // -X -> xsens: sens in x (default previous value) become kFALSE + // -Y -> ysens: sens in y (default previous value) become kFALSE + TString opt = o; + if (opt.Contains("+X")) + fRangeSensX = kTRUE; // TO BE USED !! + if (opt.Contains("+Y")) + fRangeSensY = kTRUE; // TO BE USED !! + if (opt.Contains("-X")) + fRangeSensX = kFALSE; // TO BE USED !! + if (opt.Contains("-Y")) + fRangeSensY = kFALSE; // TO BE USED !! + + // + TF1 *t = GetTrajectory(ID); + if (t == NULL) + return NULL; //TEMP + TF1 *td = GetTrajectoryDisp(ID); + // if(t==NULL || opt.Contains("refit") ) { // TODO + // if(FitTrack("id=")) return NULL ; + // } + + // Int_t ax = FindClosestAxis(ID); + // if(ax<=0) return NULL ; + TCutG *g = GetCutforTrack(ID); + if (g == NULL) + return NULL; + + Double_t xp, yp; + + Double_t ad = td->GetParameter(1); + Double_t bd = td->GetParameter(0); + Double_t cu = (ad * ad) / (1. + ad * ad); // normal unitary vector in disp coord + Double_t ru = (-ad) / (1. + ad * ad); // normal unitary vector in disp coord + + // Projection histogram + Int_t Cmin = GetXaxis()->GetNbins() + 1, Cmax = -1; + Int_t Rmin = GetYaxis()->GetNbins() + 1, Rmax = -1; + for (Int_t C = 1; C <= GetXaxis()->GetNbins(); C++) { + for (Int_t R = 1; R <= GetYaxis()->GetNbins(); R++) { + if (IsInside(g, C, R)) { + if (C < Cmin) { + Cmin = C; + }; + if (R < Rmin) { + Rmin = R; + }; + if (C > Cmax) { + Cmax = C; + }; + if (R > Rmax) { + Rmax = R; + }; + } + } + } + + Double_t cdo, rdo; + if (!opt.Contains("origin")) { + // origin of // TO BE + // the track // IMPROVED + xo = 0; + yo = t->GetParameter(0); + } + + GetCRdisp_XY(xo, yo, cdo, rdo); + + Double_t Xmax = GetX(TMath::Min(Cmax + 1, GetXaxis()->GetNbins()), + TMath::Min(Rmax + 1, GetYaxis()->GetNbins())); + Double_t Ymax = GetY(TMath::Min(Cmax + 1, GetXaxis()->GetNbins()), + TMath::Min(Rmax + 1, GetYaxis()->GetNbins())); + + Double_t padVal; + + char l[40]; + sprintf(l, "cproj_%d", ID); + if (gROOT->Get(l)) + gROOT->Delete(l); + + Double_t xmin = 0; + Double_t xmax = TMath::Sqrt(TMath::Power(xo - Xmax, 2) + TMath::Power(yo + - Ymax, 2)); + Int_t nbins = TMath::Floor(TMath::Sqrt(TMath::Power(Cmax - Cmin, 2) + + TMath::Power(Rmax - Rmin, 2))); + + TH1F *proj = new TH1F(l, l, nbins, xmin, xmax); + + Double_t dist_min = xmin, dist_max = xmax; // distance from origin + + // **Graphics** + TLine *pline; + TPolyMarker *MarkMax = new TPolyMarker(); + // ************ + + + Double_t dp_disp_min, dp_disp_max; + + Double_t cd, rd, cp, rp, distp; + Double_t cd_min = xmax, rd_min = xmax; + Double_t cd_max = xmin, rd_max = xmin; + Double_t cp_min = xmax, rp_min = xmax; + Double_t cp_max = xmin, rp_max = xmin; + + // + + for (Int_t C = 1; C <= GetXaxis()->GetNbins(); C++) { + for (Int_t R = 1; R <= GetYaxis()->GetNbins(); R++) { + padVal = fArray[GetBin(C - 1, R - 1)]; + if (IsInside(g, C, R) && (padVal > fMinimum)) { + + dp_disp_min = 10* TMath ::Sqrt(Cmax * Cmax + Rmax * Rmax); + dp_disp_max = -1; + + for (Int_t i = 0; i < GetPAD(C, R)->GetN(); i++) { + cd = GetPAD(C, R)->GetX()[i]; + rd = GetPAD(C, R)->GetY()[i]; + cp = (-(cd * ru - rd * cu) - bd * cu) / (ad * cu - ru); + rp = (ad * (rd * cu - cd * ru) - bd * ru) / (ad * cu - ru); + distp = TMath::Sqrt(TMath::Power(cdo - cp, 2) + + TMath::Power(rdo - rp, 2)); + if (distp < dp_disp_min) { + dp_disp_min = distp; + cd_min = cd; + rd_min = rd; + cp_min = cp; + rp_min = rp; + GetXY_CRdisp(cp_min, rp_min, xp, yp); + dist_min = TMath::Sqrt(TMath::Power(xo - xp, 2) + + TMath::Power(yo - yp, 2)); + // printf("-- %d) %g %g \n",i,xp,yp); + } + if (distp > dp_disp_max) { + dp_disp_max = distp; + cd_max = cd; + rd_max = rd; + cp_max = cp; + rp_max = rp; + GetXY_CRdisp(cp_max, rp_max, xp, yp); + dist_max = TMath::Sqrt(TMath::Power(xo - xp, 2) + + TMath::Power(yo - yp, 2)); + // printf("++ %d) %g %g \n",i,xp,yp); + } + + printf("%d) %g %g \n", i, dist_min, dist_max); + + } + + Int_t bin; + distp = dist_max; + const Double_t val_spread = dist_max - dist_min; + Double_t ratio = 0; + if (val_spread > 0) { + bin = proj->FindBin(distp, 0., 0.); + while (distp > dist_min) { + + ratio = (distp - proj->GetBinLowEdge(bin)) + / (val_spread); + std::cout << distp << " > " << dist_min << std::endl; + proj->AddBinContent(bin, padVal * ratio); + bin--; + distp = TMath::Max(dist_min, proj->GetBinLowEdge(bin)); + + } + } + + // **Graphics ** + cd = GetCdisp(C, R); + rd = GetRdisp(C, R); + cp = (-(cd * ru - rd * cu) - bd * cu) / (ad * cu - ru); //seems Ok -> checked outside ROOT + rp = (ad * (rd * cu - cd * ru) - bd * ru) / (ad * cu - ru); //seems Ok -> checked outside ROOT + pline = new TLine(cd, rd, cp, rp); + pline->SetLineColor(gStyle->GetCanvasColor()); + fFunctions->Add(pline); + MarkMax->SetNextPoint(cd, rd); + MarkMax->SetNextPoint(cp, rp); + + // ** Graphics ** + + // pline = new TLine(cd_min,rd_min,cp_min,rp_min) ; + // pline->SetLineColor(3);//gStyle->GetCanvasColor()); + // fFunctions->Add(pline); + // MarkMax->SetNextPoint(cd_min,rd_min); + // MarkMax->SetNextPoint(cp_min,rp_min); + + // pline = new TLine(cd_max,rd_max,cp_max,rp_max) ; + // pline->SetLineColor(4);//gStyle->GetCanvasColor()); + // fFunctions->Add(pline); + // MarkMax->SetNextPoint(cd_max,rd_max); + // MarkMax->SetNextPoint(cp_max,rp_max); + + } + } + } + + // **Graphics ** + MarkMax->SetMarkerStyle(8); + MarkMax->SetMarkerSize(.5); + MarkMax->SetMarkerColor(2);//gStyle->GetCanvasColor()); + fFunctions->Add(MarkMax); + fRanges->Add(proj); + return proj; +} + +//______________________________________________________________________________ +// +// Pointer to the function describing track #id +//______________________________________________________________________________ +// + +TF1* TMayaHisto::GetTrajectory(Int_t ID) { + char si[32]; + sprintf(si, "%d", ID); + TString l = TString("traj_") + si; + return (TF1*) fFunctions->FindObject(l.Data()); +} + +//______________________________________________________________________________ +// +// Pointer to the function describing track #id +//______________________________________________________________________________ +// + +TF1* TMayaHisto::GetTrajectoryDisp(Int_t ID) { + char si[32]; + sprintf(si, "%d", ID); + TString l = TString("disptraj_") + si; + return (TF1*) fFunctions->FindObject(l.Data()); +} + +//______________________________________________________________________________ +// +// Pointer to the graphical cut used to fit the track ID +//______________________________________________________________________________ +// + +TCutG* TMayaHisto::GetCutforTrack(Int_t ID) { + char si[32]; + sprintf(si, "%d", ID); + TString l = TString("gcut_") + si; + return (TCutG*) fGCuts->FindObject(l.Data()); +} + +//______________________________________________________________________________ +// +// Pointer to the histogram, result of the charge projection on track ID +//______________________________________________________________________________ +// + +TH1F* TMayaHisto::GetChargeProjection(Int_t ID) { + char si[32]; + sprintf(si, "%d", ID); + TString l = TString("cproj_") + si; + return (TH1F*) fRanges->FindObject(l.Data()); +} + +//______________________________________________________________________________ +// +// Default range function. +// Reminder: if another function is given, +// the parameter corresponding to the range MUST be named "range" ! +//______________________________________________________________________________ +// + +Double_t TMayaHisto::_dfltRangeFunction_(Double_t *x, Double_t *par) { + + /*. | par[1] + par[0]..+----------------. : + . | \: + . | \ + . | :\ par[2] + . | : \ + ________|__________________:__\__________> x[0] + + Three parameter, one variable + x[0] -> x + par[0] -> Jump base height + par[1] -> Range itself, thus named "range" + par[2] -> Bragg peak end slope + */ + Double_t f; + if (par[2] >= 0) { + par[2] = -TMath::Abs(par[0] / par[1]); + } + if (x[0] < (par[1] - TMath::Abs(par[0] / (2. * par[2])))) { // par[1]-TMath::Abs(par[0]/(2.*par[2]) is the abscissa of the drop + return par[0]; + } else { + f = par[2] * (x[0] - par[1]) + par[0] / 2.; + if (f > 0) { + return f; + } else { + return 0; + } + } +} + +//______________________________________________________________________________ +// +// Find range for the track number ID +//______________________________________________________________________________ +// + +Double_t TMayaHisto::FindRange(Int_t ID, Option_t *o, Double_t xo, Double_t yo) { + // ID: already find trajectory number + // Option: + // +X -> xsens: sens in x (default previous value) become kTRUE + // +Y -> ysens: sens in y (default previous value) become kTRUE + // -X -> xsens: sens in x (default previous value) become kFALSE + // -Y -> ysens: sens in y (default previous value) become kFALSE + + TString opt = o; + if (opt.Contains("+X")) + fRangeSensX = kTRUE; + if (opt.Contains("+Y")) + fRangeSensY = kTRUE; + if (opt.Contains("-X")) + fRangeSensX = kFALSE; + if (opt.Contains("-Y")) + fRangeSensY = kFALSE; + + if (GetChargeProjection(ID) == NULL) + ProjectOnTrack(ID, o, xo, yo); + + if (GetChargeProjection(ID) != NULL) { + if (GetChargeProjection(ID)->Integral() > 0) { + TF1 *_fmax; + TGraphErrors *h = new TGraphErrors(GetChargeProjection(ID)); + Double_t lmax = h->GetXaxis()->GetXmax(); + // Double_t lmin = h->GetXaxis()->GetXmin() ; + Double_t emax = GetChargeProjection(ID)->GetMaximum(); + // Double_t emin = GetChargeProjection(ID)->GetMinimum() ; + Double_t range = lmax, xmax = lmax; + Int_t n = (GetChargeProjection(ID)->GetXaxis())->GetNbins(); + if ((n * fSearchDiv) <= 0) + return -1; + Double_t dx = (h->GetXaxis()->GetXmax() - h->GetXaxis()->GetXmin()) + / (n * fSearchDiv); + TSpline3 *s = new TSpline3("s", h); + Double_t dstart = s->Derivative(lmax); + for (Double_t x = lmax; x > 0; x -= dx) { + if ((TMath::Sign(dstart, s->Derivative(x)) != dstart) + && (h->Eval(x) > emax * fRangeThresRatio)) { + if ((TMath::Sign(dstart, s->Derivative(x - dx)) != dstart)) { + + xmax = solveBisectD(s, 0, x, x + dx); + emax = s->Eval(xmax); + _fmax = new TF1("max", "[0]", h->GetXaxis()->GetXmin(), + lmax); + _fmax->SetParameter(0, s->Eval(x)); + ((TList*) h->GetListOfFunctions())->Add(_fmax); + + break; + } + } + dstart = s->Derivative(x); + } + + range = solveBisect(s, emax / 2., xmax, lmax); + _fmax = new TF1("max", "[0]", h->GetXaxis()->GetXmin(), lmax); + _fmax->SetParameter(0, s->Eval(range)); + ((TList*) h->GetListOfFunctions())->Add(_fmax); + + if (opt.Contains("Fit")) { + if (strcmp(fRangeFunction->GetName(), "_dfltRangeFunction_") + == 0) { + fRangeFunction->SetParameter(fRangeFunction->GetParNumber( + "base"), emax); + fRangeFunction->SetParLimits(fRangeFunction->GetParNumber( + "base"), emax / 2., emax); + fRangeFunction->SetParameter(fRangeFunction->GetParNumber( + "slope"), lmax != 0 ? -emax / lmax : 0); + } + fRangeFunction->SetParLimits(fRangeFunction->GetParNumber( + "range"), 0, lmax); + fRangeFunction->SetParameter(fRangeFunction->GetParNumber( + "range"), lmax / 2.); + h->Fit(fRangeFunction, "b"); + range = fRangeFunction->GetParameter("range"); + } + h->Draw("A*"); + s->Draw("same"); + + if (range < lmax && range > 0) + return range; + + /* + h->SetName("g"); + TFile *f = new TFile("tmp.root","recreate"); + f->cd(); + h->Write("g",kOverwrite); + f->Close(); + */ + } else { + return -1; + } + } else { + return -1; + } + return -1; +} + +//______________________________________________________________________________ +// +// HightLight pads corresponding to a given graphical cut +//______________________________________________________________________________ +// +void TMayaHisto::HighLightCut(TCutG*g) { + Int_t color; + for (Int_t Row = 1; Row <= GetYaxis()->GetNbins(); Row++) { + for (Int_t Col = 1; Col <= GetXaxis()->GetNbins(); Col++) { + color = GetPAD(Col, Row)->GetFillColor(); + if (g == NULL) { + if (color != GetPAD(Col, Row)->GetLineColor() || color != 0) { + // GetPAD(Col,Row)->SetFillStyle(1000); + GetPAD(Col, Row)->SetFillColor(color); + } else { + GetPAD(Col, Row)->SetFillStyle(0); + } + } else if (g != NULL && IsInside(g, Col, Row)) { + GetPAD(Col, Row)->SetFillStyle(fTCutGPatternStyle); + } + } + } + gPad->Update(); +} + +//______________________________________________________________________________ +// +// Find x | f(x) = y0 within the [xmin:xmax] range +//______________________________________________________________________________ +// + +Double_t TMayaHisto::solveBisect(TSpline3 *s, Double_t y0, Double_t xmin, + Double_t xmax) { + Double_t xmid = .5* (xmax +xmin), ymin,ymid,ymax; + ymin = s->Eval(xmin)-y0; + ymax = s->Eval(xmax)-y0; + + while (TMath::Abs(xmax - xmin) > fRangePrecision) { + xmid = (xmax + xmin) / 2.; + ymid = s->Eval(xmid)-y0; + // std::cout << "}" << xmin << " " << xmax << std::endl ; + if (ymin*ymid < 0) { + xmax = xmid; + ymax = ymid; + } else if (ymid*ymax < 0) { + xmin = xmid; + ymin = ymid; + } else { + return xmid; + } + } + return xmid; + } + + //______________________________________________________________________________ + // + // Find x | f'(x) = y0 within the [xmin:xmax] range + //______________________________________________________________________________ + // + +Double_t TMayaHisto::solveBisectD(TSpline3 *s, Double_t y0, Double_t xmin, + Double_t xmax) { + Double_t xmid, ymin, ymid, ymax; + ymin = s->Derivative(xmin) - y0; + ymax = s->Derivative(xmax) - y0; + xmid = (xmax + xmin) / 2.; + + while (TMath::Abs(xmax - xmin) > fRangePrecision) { + xmid = (xmax + xmin) / 2.; + ymid = s->Derivative(xmid) - y0; + // std::cout << "}" << xmin << " " << xmax << std::endl ; + if (ymin * ymid < 0) { + xmax = xmid; + ymax = ymid; + } else if (ymid * ymax < 0) { + xmin = xmid; + ymin = ymid; + } else { + return xmid; + } + } + return xmid; +} + +//______________________________________________________________________________ +/* + void TMayaHisto::Streamer(TBuffer &R__b) + { + // Stream an object of class TMayaHisto. + + if (R__b.IsReading()) { + UInt_t R__s, R__c; + Version_t R__v = R__b.ReadVersion(&R__s, &R__c); + if (R__v > 2) { + R__b.ReadClassBuffer(TMayaHisto::Class(), this, R__v, R__s, R__c); + return; + } + //====process old versions before automatic schema evolution + if (R__v < 2) { + R__b.ReadVersion(); + TH1::Streamer(R__b); + TArrayF::Streamer(R__b); + R__b.ReadVersion(); + R__b >> fScalefactor; + R__b >> fTsumwy; + R__b >> fTsumwy2; + R__b >> fTsumwxy; + } else { + TH2::Streamer(R__b); + TArrayF::Streamer(R__b); + R__b.CheckByteCount(R__s, R__c, TMayaHisto::IsA()); + } + //====end of old versions + + } else { + R__b.WriteClassBuffer(TMayaHisto::Class(),this); + } + + } + */ +//______________________________________________________________________________ +TMayaHisto& TMayaHisto::operator=(const TMayaHisto &h1) { + // Operator = + + if (this != &h1) + ((TMayaHisto&) h1).Copy(*this); + return *this; +} + +//______________________________________________________________________________ +TMayaHisto operator*(Float_t c1, TMayaHisto &h1) { + // Operator * + + TMayaHisto hnew = h1; + hnew.Scale(c1); + hnew.SetDirectory(0); + return hnew; +} + +//______________________________________________________________________________ +TMayaHisto operator*(TMayaHisto &h1, Float_t c1) { + // Operator * + + TMayaHisto hnew = h1; + hnew.Scale(c1); + hnew.SetDirectory(0); + return hnew; +} + +//______________________________________________________________________________ +TMayaHisto operator+(TMayaHisto &h1, TMayaHisto &h2) { + // Operator + + + TMayaHisto hnew = h1; + hnew.Add(&h2, 1); + hnew.SetDirectory(0); + return hnew; +} + +//______________________________________________________________________________ +TMayaHisto operator-(TMayaHisto &h1, TMayaHisto &h2) { + // Operator - + + TMayaHisto hnew = h1; + hnew.Add(&h2, -1); + hnew.SetDirectory(0); + return hnew; +} + +//______________________________________________________________________________ +TMayaHisto operator*(TMayaHisto &h1, TMayaHisto &h2) { + // Operator * + + TMayaHisto hnew = h1; + hnew.Multiply(&h2); + hnew.SetDirectory(0); + return hnew; +} + +//______________________________________________________________________________ +TMayaHisto operator/(TMayaHisto &h1, TMayaHisto &h2) { + // Operator / + + TMayaHisto hnew = h1; + hnew.Divide(&h2); + hnew.SetDirectory(0); + return hnew; +} + +// Local IspellDict: english diff --git a/NPLib/Maya/TMayaHisto.h b/NPLib/Maya/TMayaHisto.h new file mode 100755 index 0000000000000000000000000000000000000000..46f1c27afab5da9ee11ce4a80292becef97adf0d --- /dev/null +++ b/NPLib/Maya/TMayaHisto.h @@ -0,0 +1,199 @@ +/***************************************************************************** + * Copyright (C) 2008 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: M. Vandebrouck contact address: vandebro@ipno.in2p3.fr * + * J. Gibelin gibelin@lpccaen.in2p3.fr * + * * + * Creation Date : November 2011 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class holds a special 2D Maya histogram * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ +#ifndef __MAYAHISTO__ +#define __MAYAHISTO__ + +#include "TObject.h" +#include "TROOT.h" +#include "TFile.h" +#include "TCutG.h" +#include "TH2F.h" +#include "TArrayF.h" +#include "TClonesArray.h" +#include "TMath.h" +#include "string" +#include "TString.h" +#include "TStyle.h" +#include "TPad.h" +#include "TF1.h" +//#include "TGraph.h" +#include "TGraphErrors.h" +#include "TDirectory.h" +#include <iostream> +#include <vector> +#include <map> +#include "THistPainter.h" +#include "TMatrixFBase.h" +#include "TPaletteAxis.h" +#include "TVirtualHistPainter.h" +#include "TPolyMarker.h" +#include "TArrow.h" +#include "TSpline.h" +#include "TBuffer.h" +#include <math.h> + +class TMayaHisto : public TH2F { + +public: + TMayaHisto(); + TMayaHisto(const char *name,const char *title,Int_t nbinsx=32, Int_t nbinsy=32,Double_t hsize=5); + TMayaHisto(const TMayaHisto &h2f); + + virtual ~TMayaHisto(); + virtual void AddBinContent(Int_t bin) {++fArray[bin];} + virtual void AddBinContent(Int_t bin, Double_t w) + {fArray[bin] += Float_t (w);} + virtual void Copy(TObject &hnew) const; + virtual TH1 *DrawCopy(Option_t *option="") const; + virtual Double_t GetBinContent(Int_t bin) const; + virtual Double_t GetBinContent(Int_t binx, Int_t biny) const {return GetBinContent(GetBin(binx,biny));} + virtual Double_t GetBinContent(Int_t binx, Int_t biny, Int_t) const {return GetBinContent(GetBin(binx,biny));} + virtual void Reset(Option_t *option=""); + virtual void SetBinContent(Int_t bin, Double_t content); + virtual void SetBinContent(Int_t binx, Int_t biny, Double_t content) {SetBinContent(GetBin(binx,biny),content);} + virtual void SetBinContent(Int_t binx, Int_t biny, Int_t, Double_t content) {SetBinContent(GetBin(binx,biny),content);} + virtual void SetBinsLength(Int_t n=-1); + // virtual TPolyLine* Hexagon(Float_t,Float_t); + virtual TCutG* Hexagon(TString,Float_t,Float_t); + virtual void CreateHoneyCombStructure() ; +// virtual Int_t Fill(Int_t C, Int_t R,Int_t W) { Int_t n = TH2::Fill(C,R,W); Draw(); return n ;}; + virtual void Paint(Option_t *); + virtual TAxis* GetCaxis() { return GetXaxis() ; } + virtual TAxis* GetRaxis() { return GetYaxis() ; } + + virtual Int_t FillXY(Double_t,Double_t,Double_t); + virtual Int_t FillXY(Double_t X,Double_t Y) { return FillXY(X,Y,1.);}; + virtual Double_t GetHoneyCombSize(void){ return fHoneyCombSize ;}; + virtual Int_t GetShiftHexagon(void){ return bShiftHexagon ;}; + virtual Double_t SetHoneyCombSize(Double_t size){ fHoneyCombSize = size ; return fHoneyCombSize ;}; + virtual Int_t SetShiftHexagon(Int_t shift){ + if(bShiftHexagon>0) { bShiftHexagon = 1 ; } else { bShiftHexagon = 0 ;}; + return bShiftHexagon ;}; + Bool_t FitTrack(void){return FitTrack("chi2",1,GetXaxis()->GetNbins(),1,GetYaxis()->GetNbins(),NULL,-1,-1); }; // *MENU* + Bool_t FitTrack(Option_t *,Int_t,Int_t,Int_t,Int_t,TCutG*,Double_t, Double_t); // *MENU* + Bool_t FitTrack(Option_t *o,Int_t c1,Int_t c2,Int_t r1,Int_t r2,Double_t x0, Double_t y0){return FitTrack(o,c1,c2,r1,r2,(TCutG*)NULL,x0,y0);}; + Bool_t FitTrack(Option_t *o,Int_t c1,Int_t c2,Int_t r1,Int_t r2){return FitTrack(o,c1,c2,r1,r2,(TCutG*)NULL,-1,-1);}; + Bool_t FitTrack(Option_t *o,TCutG *g,Double_t x0, Double_t y0){return FitTrack(o,1,GetXaxis()->GetNbins(),1,GetYaxis()->GetNbins(),g,x0,y0); }; + Bool_t FitTrack(Option_t *o,TCutG *g){return FitTrack(o,1,GetXaxis()->GetNbins(),1,GetYaxis()->GetNbins(),g,-1,-1); }; + Bool_t FitTrack(Option_t *o){return FitTrack(o,1,GetXaxis()->GetNbins(),1,GetYaxis()->GetNbins(),(TCutG*)NULL,-1,-1); }; + + Int_t FindClosestAxis(Int_t) ; //Find closest collinear axis to a give Track ID + Int_t FindClosestAxis(Double_t) ; // Find closest collinear axis to a give function coefficient + TH1F* ProjectOnTrack(Int_t, Option_t *,Double_t,Double_t) ; // Project pad value on track ID + TH1F* ProjectOnTrack(Int_t ID, Double_t xo,Double_t yo){ return ProjectOnTrack(ID,"origin",xo,yo);} ; // Project pad value on track ID + TH1F* ProjectOnTrack(Int_t ID){ return ProjectOnTrack(ID,"",-1,-1);} ; // Project pad value on track ID + + Double_t FindRange(Int_t ID){return FindRange(ID,"",-1,-1);}; + Double_t FindRange(Int_t ,Option_t *, Double_t, Double_t); + Double_t FindRange(Int_t ID, Double_t xo, Double_t yo){return FindRange(ID,"origin",xo,yo);}; + Int_t GetSearchDiv(){ return fSearchDiv ;}; + Int_t SetSearchDiv(Int_t d){ return fSearchDiv = d ;}; + Bool_t IsInside(TCutG*,Int_t,Int_t); + void HighLightCut(TCutG*); + void HighLightCut(){ HighLightCut(NULL);}; + void HighLightCutForTrack(Int_t ID){ HighLightCut(GetCutforTrack(ID));}; + void HighLightCutForTrack() { HighLightCut(NULL);}; + + Int_t GetLastTrackNormalAxis(void) {return fLastNormalAxis+1 ; } ; + Int_t GetNormalTrackAxis(Int_t ID) {return fNormalTrackAxis[ID] ; } ; + Int_t GetAxisAngleDeg(Int_t ax) {return Axis_Angle[ax-1]*TMath::RadToDeg() ; } ; + Int_t GetAxisAngle(Int_t ax) {return Axis_Angle[ax-1] ; } ; + TF1* GetTrajectory(Int_t ID); // Pointer to the function decribing track #id + TF1* GetTrajectoryDisp(Int_t ID); // Pointer to the function decribing on screen track #id + TH1F* GetChargeProjection(Int_t ID); // Pointer to the histogram, result of the charge projection on track ID + // Double_t GetRange(Int_t); // Get range for track #id. If does not exist, find it //TODO + TCutG* GetCutforTrack(Int_t); + // Convertion routines : + + Double_t GetCdisp(Double_t, Double_t); // from C,R fractional to C as displayed + Double_t GetRdisp(Double_t, Double_t); // from C,R fractional to R as displayed + Double_t GetCdisp(Int_t C, Int_t R){ return GetCdisp((Double_t)C,(Double_t)R); }; // from C,R int to C as displayed + Double_t GetRdisp(Int_t C, Int_t R){ return GetRdisp((Double_t)C,(Double_t)R); }; // from C,R int to R as displayed + Double_t GetX(Int_t,Int_t); // from C,R int to X + Double_t GetY(Int_t,Int_t); // from C,R int to Y + // + Bool_t GetCR(Double_t,Double_t, Int_t&, Int_t&); // from X,Y to C,R int -> call this one + Bool_t GetCR(Double_t,Double_t, Double_t&, Double_t&); // from X,Y to C,R fractionnal -> call this one + Bool_t GetCRdisp_XY(Double_t,Double_t, Double_t&, Double_t&); // from X,Y to C,R disp + Bool_t GetXY_CRdisp(Double_t,Double_t, Double_t&, Double_t&); // from C,R disp to X,Y + // + + // + Int_t GetC(Double_t,Double_t); // from X,Y to C int + Int_t GetR(Double_t,Double_t); // from X,Y to R int + Double_t GetfC(Double_t,Double_t); // from X,Y to C fractional + Double_t GetfR(Double_t,Double_t); // from X,Y to R fractional + Int_t GetAxisLbl(Int_t, Int_t, Int_t); // from C,R int to Axis # label int (note: axis # is last arg.) + Int_t GetAxisIdx(Int_t, Int_t, Int_t); // from C,R int to Axis # index int (note: axis # is last arg.) + Int_t GetAxisCol(Int_t, Int_t, Int_t); // from Axis label,index int to C int (note: axis # is last arg.) + Int_t GetAxisRow(Int_t, Int_t, Int_t); // from Axis label,index int to R int (note: axis # is last arg.) + + // + + TCutG* GetPAD(Int_t,Int_t); + TCutG* GetPADXY(Double_t,Double_t); + TClonesArray *GetArrayOfPADs(){ return fHoneyCombBins;} ; + + // + + Double_t solveBisect(TSpline3 *,Double_t,Double_t,Double_t); + Double_t solveBisectD(TSpline3 *,Double_t,Double_t,Double_t); + + // + TMayaHisto& operator=(const TMayaHisto &h1); + friend TMayaHisto operator*(Float_t c1, TMayaHisto &h1); + friend TMayaHisto operator*(TMayaHisto &h1, Float_t c1); + friend TMayaHisto operator+(TMayaHisto &h1, TMayaHisto &h2); + friend TMayaHisto operator-(TMayaHisto &h1, TMayaHisto &h2); + friend TMayaHisto operator*(TMayaHisto &h1, TMayaHisto &h2); + friend TMayaHisto operator/(TMayaHisto &h1, TMayaHisto &h2); + + + private: + Bool_t __GetCR__(Double_t,Double_t, Double_t&, Double_t&, Bool_t); // from X,Y to C,R fractionnal (true) or int (false). + TClonesArray *fHoneyCombBins ;//->Pointer to the array of HoneyCombBins + Double_t fHoneyCombSize ; //size of the hexagon used for the honey comb + Int_t bShiftHexagon ; // quantify if the first hexagon of the first line come before (1) or after (0) the fist hexagon of the second line + Int_t fLastNormalAxis ; // Axis number (1,2 or 3) perpendicular to the track fitted +#define Xview_corr .5 +#define Yview_corr .5 + Int_t fTCutGPatternStyle ; + Double_t fOriginWeigh ; + Int_t nTrack ; + TList *fGCuts ; //-> + TList *fRanges ; //-> + Int_t fSearchDiv ; // number of primary subdivisions for maxima, root, ... search + Bool_t fRangeSensX ; // search sens in X for range finding + Bool_t fRangeSensY ; // search sens in Y for range finding + Double_t fRangeThresRatio ; // % of the max of the "Bragg peak" to be considered above the background + Double_t fRangePrecision ; // numerical precision on the finding of the range + TF1 *fRangeFunction ; //->Function used to fit range, the parameter corresponding to the range MUST be named "range" + + static Double_t Axis_Angle[] ; + static Double_t _dfltRangeFunction_(Double_t*,Double_t*); //! Default range function + std::map<int,int> fNormalTrackAxis ; + + ClassDef(TMayaHisto,1); //2-Dim histograms (one float per channel) +}; + +#endif + +// Local IspellDict: english diff --git a/NPLib/Vamos/TVamosCHIODataDict.cxx b/NPLib/Vamos/TVamosCHIODataDict.cxx new file mode 100644 index 0000000000000000000000000000000000000000..7a325273efc9ff898afcd0540ea66912a5420955 --- /dev/null +++ b/NPLib/Vamos/TVamosCHIODataDict.cxx @@ -0,0 +1,962 @@ +// +// File generated by rootcint at Tue Jul 17 16:41:38 2012 + +// Do NOT change. Changes will be lost next time file is generated +// + +#define R__DICTIONARY_FILENAME TVamosCHIODataDict +#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 "TVamosCHIODataDict.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 TVamosCHIOData_ShowMembers(void *obj, TMemberInspector &R__insp); + static void *new_TVamosCHIOData(void *p = 0); + static void *newArray_TVamosCHIOData(Long_t size, void *p); + static void delete_TVamosCHIOData(void *p); + static void deleteArray_TVamosCHIOData(void *p); + static void destruct_TVamosCHIOData(void *p); + static void streamer_TVamosCHIOData(TBuffer &buf, void *obj); + + // Function generating the singleton type initializer + static TGenericClassInfo *GenerateInitInstanceLocal(const ::TVamosCHIOData*) + { + ::TVamosCHIOData *ptr = 0; + static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TVamosCHIOData >(0); + static ::ROOT::TGenericClassInfo + instance("TVamosCHIOData", ::TVamosCHIOData::Class_Version(), "./TVamosCHIOData.h", 31, + typeid(::TVamosCHIOData), DefineBehavior(ptr, ptr), + &::TVamosCHIOData::Dictionary, isa_proxy, 0, + sizeof(::TVamosCHIOData) ); + instance.SetNew(&new_TVamosCHIOData); + instance.SetNewArray(&newArray_TVamosCHIOData); + instance.SetDelete(&delete_TVamosCHIOData); + instance.SetDeleteArray(&deleteArray_TVamosCHIOData); + instance.SetDestructor(&destruct_TVamosCHIOData); + instance.SetStreamerFunc(&streamer_TVamosCHIOData); + return &instance; + } + TGenericClassInfo *GenerateInitInstance(const ::TVamosCHIOData*) + { + return GenerateInitInstanceLocal((::TVamosCHIOData*)0); + } + // Static variable to force the class initialization + static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TVamosCHIOData*)0x0); R__UseDummy(_R__UNIQUE_(Init)); +} // end of namespace ROOT + +//______________________________________________________________________________ +TClass *TVamosCHIOData::fgIsA = 0; // static to hold class pointer + +//______________________________________________________________________________ +const char *TVamosCHIOData::Class_Name() +{ + return "TVamosCHIOData"; +} + +//______________________________________________________________________________ +const char *TVamosCHIOData::ImplFileName() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TVamosCHIOData*)0x0)->GetImplFileName(); +} + +//______________________________________________________________________________ +int TVamosCHIOData::ImplFileLine() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TVamosCHIOData*)0x0)->GetImplFileLine(); +} + +//______________________________________________________________________________ +void TVamosCHIOData::Dictionary() +{ + fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosCHIOData*)0x0)->GetClass(); +} + +//______________________________________________________________________________ +TClass *TVamosCHIOData::Class() +{ + if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosCHIOData*)0x0)->GetClass(); + return fgIsA; +} + +//______________________________________________________________________________ +void TVamosCHIOData::Streamer(TBuffer &R__b) +{ + // Stream an object of class TVamosCHIOData. + + 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 = fVamos_CHIO_A_PadNbr; + 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 = fVamos_CHIO_A_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++) { + unsigned short R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<UShort_t> &R__stl = fVamos_CHIO_B_PadNbr; + 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 = fVamos_CHIO_B_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++) { + unsigned short R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<UShort_t> &R__stl = fVamos_CHIO_C_PadNbr; + 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 = fVamos_CHIO_C_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++) { + unsigned short R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + R__b.CheckByteCount(R__s, R__c, TVamosCHIOData::IsA()); + } else { + R__c = R__b.WriteVersion(TVamosCHIOData::IsA(), kTRUE); + TObject::Streamer(R__b); + { + vector<UShort_t> &R__stl = fVamos_CHIO_A_PadNbr; + 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 = fVamos_CHIO_A_Energy; + 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 = fVamos_CHIO_B_PadNbr; + 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 = fVamos_CHIO_B_Energy; + 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 = fVamos_CHIO_C_PadNbr; + 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 = fVamos_CHIO_C_Energy; + 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); + } + } + } + R__b.SetByteCount(R__c, kTRUE); + } +} + +//______________________________________________________________________________ +void TVamosCHIOData::ShowMembers(TMemberInspector &R__insp) +{ + // Inspect the data members of an object of class TVamosCHIOData. + TClass *R__cl = ::TVamosCHIOData::IsA(); + if (R__cl || R__insp.IsA()) { } + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_CHIO_A_PadNbr", (void*)&fVamos_CHIO_A_PadNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_CHIO_A_PadNbr, "fVamos_CHIO_A_PadNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_CHIO_A_Energy", (void*)&fVamos_CHIO_A_Energy); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_CHIO_A_Energy, "fVamos_CHIO_A_Energy.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_CHIO_B_PadNbr", (void*)&fVamos_CHIO_B_PadNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_CHIO_B_PadNbr, "fVamos_CHIO_B_PadNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_CHIO_B_Energy", (void*)&fVamos_CHIO_B_Energy); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_CHIO_B_Energy, "fVamos_CHIO_B_Energy.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_CHIO_C_PadNbr", (void*)&fVamos_CHIO_C_PadNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_CHIO_C_PadNbr, "fVamos_CHIO_C_PadNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_CHIO_C_Energy", (void*)&fVamos_CHIO_C_Energy); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_CHIO_C_Energy, "fVamos_CHIO_C_Energy.", false); + TObject::ShowMembers(R__insp); +} + +namespace ROOT { + // Wrappers around operator new + static void *new_TVamosCHIOData(void *p) { + return p ? new(p) ::TVamosCHIOData : new ::TVamosCHIOData; + } + static void *newArray_TVamosCHIOData(Long_t nElements, void *p) { + return p ? new(p) ::TVamosCHIOData[nElements] : new ::TVamosCHIOData[nElements]; + } + // Wrapper around operator delete + static void delete_TVamosCHIOData(void *p) { + delete ((::TVamosCHIOData*)p); + } + static void deleteArray_TVamosCHIOData(void *p) { + delete [] ((::TVamosCHIOData*)p); + } + static void destruct_TVamosCHIOData(void *p) { + typedef ::TVamosCHIOData current_t; + ((current_t*)p)->~current_t(); + } + // Wrapper around a custom streamer member function. + static void streamer_TVamosCHIOData(TBuffer &buf, void *obj) { + ((::TVamosCHIOData*)obj)->::TVamosCHIOData::Streamer(buf); + } +} // end of namespace ROOT for class ::TVamosCHIOData + +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> + +/******************************************************** +* TVamosCHIODataDict.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_tagtableTVamosCHIODataDict(); + +extern "C" void G__set_cpp_environmentTVamosCHIODataDict() { + G__add_compiledheader("TObject.h"); + G__add_compiledheader("TMemberInspector.h"); + G__add_compiledheader("TVamosCHIOData.h"); + G__cpp_reset_tagtableTVamosCHIODataDict(); +} +#include <new> +extern "C" int G__cpp_dllrevTVamosCHIODataDict() { return(30051515); } + +/********************************************************* +* Member function Interface Method +*********************************************************/ + +/* TVamosCHIOData */ +static int G__TVamosCHIODataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TVamosCHIOData* p = NULL; + char* gvp = (char*) G__getgvp(); + int n = G__getaryconstruct(); + if (n) { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TVamosCHIOData[n]; + } else { + p = new((void*) gvp) TVamosCHIOData[n]; + } + } else { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TVamosCHIOData; + } else { + p = new((void*) gvp) TVamosCHIOData; + } + } + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData)); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosCHIOData*) G__getstructoffset())->Clear(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosCHIOData*) G__getstructoffset())->SetVamosCHIOPadNbrA((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosCHIOData*) G__getstructoffset())->SetVamosCHIOEnergyA((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosCHIOData*) G__getstructoffset())->SetVamosCHIOPadNbrB((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosCHIOData*) G__getstructoffset())->SetVamosCHIOEnergyB((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosCHIOData*) G__getstructoffset())->SetVamosCHIOPadNbrC((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosCHIOData*) G__getstructoffset())->SetVamosCHIOEnergyC((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOMultA()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOPadNbrA((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOEnergyA((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOMultB()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOPadNbrB((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_16(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOEnergyB((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_17(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOMultC()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_18(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOPadNbrC((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOEnergyC((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 85, (long) TVamosCHIOData::Class()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TVamosCHIOData::Class_Name()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 115, (long) TVamosCHIOData::Class_Version()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TVamosCHIOData::Dictionary(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_27(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosCHIOData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_28(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TVamosCHIOData::DeclFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_29(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TVamosCHIOData::ImplFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_30(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TVamosCHIOData::ImplFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosCHIODataDict_162_0_31(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TVamosCHIOData::DeclFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic copy constructor +static int G__TVamosCHIODataDict_162_0_32(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) + +{ + TVamosCHIOData* p; + void* tmp = (void*) G__int(libp->para[0]); + p = new TVamosCHIOData(*(TVamosCHIOData*) tmp); + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData)); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic destructor +typedef TVamosCHIOData G__TTVamosCHIOData; +static int G__TVamosCHIODataDict_162_0_33(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[] (TVamosCHIOData*) soff; + } else { + G__setgvp((long) G__PVOID); + for (int i = n - 1; i >= 0; --i) { + ((TVamosCHIOData*) (soff+(sizeof(TVamosCHIOData)*i)))->~G__TTVamosCHIOData(); + } + G__setgvp((long)gvp); + } + } else { + if (gvp == (char*)G__PVOID) { + delete (TVamosCHIOData*) soff; + } else { + G__setgvp((long) G__PVOID); + ((TVamosCHIOData*) (soff))->~G__TTVamosCHIOData(); + G__setgvp((long)gvp); + } + } + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic assignment operator +static int G__TVamosCHIODataDict_162_0_34(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TVamosCHIOData* dest = (TVamosCHIOData*) G__getstructoffset(); + *dest = *(TVamosCHIOData*) libp->para[0].ref; + const TVamosCHIOData& obj = *dest; + result7->ref = (long) (&obj); + result7->obj.i = (long) (&obj); + return(1 || funcname || hash || result7 || libp) ; +} + + +/* Setting up global function */ + +/********************************************************* +* Member function Stub +*********************************************************/ + +/* TVamosCHIOData */ + +/********************************************************* +* Global function Stub +*********************************************************/ + +/********************************************************* +* Get size of pointer to member function +*********************************************************/ +class G__Sizep2memfuncTVamosCHIODataDict { + public: + G__Sizep2memfuncTVamosCHIODataDict(): p(&G__Sizep2memfuncTVamosCHIODataDict::sizep2memfunc) {} + size_t sizep2memfunc() { return(sizeof(p)); } + private: + size_t (G__Sizep2memfuncTVamosCHIODataDict::*p)(); +}; + +size_t G__get_sizep2memfuncTVamosCHIODataDict() +{ + G__Sizep2memfuncTVamosCHIODataDict 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_inheritanceTVamosCHIODataDict() { + + /* Setting up class inheritance */ + if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData))) { + TVamosCHIOData *G__Lderived; + G__Lderived=(TVamosCHIOData*)0x1000; + { + TObject *G__Lpbase=(TObject*)G__Lderived; + G__inheritance_setup(G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData),G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1); + } + } +} + +/********************************************************* +* typedef information setup/ +*********************************************************/ +extern "C" void G__cpp_setup_typetableTVamosCHIODataDict() { + + /* 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("Int_t",105,-1,0,-1); + G__setnewtype(-1,"Signed integer 4 bytes (int)",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__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<UShort_t>",117,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); +} + +/********************************************************* +* Data Member information setup/ +*********************************************************/ + + /* Setting up class,struct,union tag member variable */ + + /* TVamosCHIOData */ +static void G__setup_memvarTVamosCHIOData(void) { + G__tag_memvar_setup(G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData)); + { TVamosCHIOData *p; p=(TVamosCHIOData*)0x1000; if (p) { } + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_CHIO_A_PadNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_CHIO_A_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_CHIO_B_PadNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_CHIO_B_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_CHIO_C_PadNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_CHIO_C_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL); + } + G__tag_memvar_reset(); +} + +extern "C" void G__cpp_setup_memvarTVamosCHIODataDict() { +} +/*********************************************************** +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +***********************************************************/ + +/********************************************************* +* Member function information setup for each class +*********************************************************/ +static void G__setup_memfuncTVamosCHIOData(void) { + /* TVamosCHIOData */ + G__tag_memfunc_setup(G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData)); + G__memfunc_setup("TVamosCHIOData",1271,G__TVamosCHIODataDict_162_0_1, 105, G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Clear",487,G__TVamosCHIODataDict_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("SetVamosCHIOPadNbrA",1741,G__TVamosCHIODataDict_162_0_5, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - PadNbrA", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosCHIOEnergyA",1792,G__TVamosCHIODataDict_162_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - EnergyA", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosCHIOPadNbrB",1742,G__TVamosCHIODataDict_162_0_7, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - PadNbrB", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosCHIOEnergyB",1793,G__TVamosCHIODataDict_162_0_8, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - EnergyB", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosCHIOPadNbrC",1743,G__TVamosCHIODataDict_162_0_9, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - PadNbrC", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosCHIOEnergyC",1794,G__TVamosCHIODataDict_162_0_10, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - EnergyC", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosCHIOMultA",1580,G__TVamosCHIODataDict_162_0_11, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosCHIOPadNbrA",1729,G__TVamosCHIODataDict_162_0_12, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosCHIOEnergyA",1780,G__TVamosCHIODataDict_162_0_13, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosCHIOMultB",1581,G__TVamosCHIODataDict_162_0_14, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosCHIOPadNbrB",1730,G__TVamosCHIODataDict_162_0_15, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosCHIOEnergyB",1781,G__TVamosCHIODataDict_162_0_16, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosCHIOMultC",1582,G__TVamosCHIODataDict_162_0_17, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosCHIOPadNbrC",1731,G__TVamosCHIODataDict_162_0_18, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosCHIOEnergyC",1782,G__TVamosCHIODataDict_162_0_19, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Class",502,G__TVamosCHIODataDict_162_0_20, 85, G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TVamosCHIOData::Class) ), 0); + G__memfunc_setup("Class_Name",982,G__TVamosCHIODataDict_162_0_21, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosCHIOData::Class_Name) ), 0); + G__memfunc_setup("Class_Version",1339,G__TVamosCHIODataDict_162_0_22, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TVamosCHIOData::Class_Version) ), 0); + G__memfunc_setup("Dictionary",1046,G__TVamosCHIODataDict_162_0_23, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TVamosCHIOData::Dictionary) ), 0); + G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TVamosCHIODataDictLN_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__TVamosCHIODataDict_162_0_27, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("DeclFileName",1145,G__TVamosCHIODataDict_162_0_28, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosCHIOData::DeclFileName) ), 0); + G__memfunc_setup("ImplFileLine",1178,G__TVamosCHIODataDict_162_0_29, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosCHIOData::ImplFileLine) ), 0); + G__memfunc_setup("ImplFileName",1171,G__TVamosCHIODataDict_162_0_30, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosCHIOData::ImplFileName) ), 0); + G__memfunc_setup("DeclFileLine",1152,G__TVamosCHIODataDict_162_0_31, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosCHIOData::DeclFileLine) ), 0); + // automatic copy constructor + G__memfunc_setup("TVamosCHIOData", 1271, G__TVamosCHIODataDict_162_0_32, (int) ('i'), G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData), -1, 0, 1, 1, 1, 0, "u 'TVamosCHIOData' - 11 - -", (char*) NULL, (void*) NULL, 0); + // automatic destructor + G__memfunc_setup("~TVamosCHIOData", 1397, G__TVamosCHIODataDict_162_0_33, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1); + // automatic assignment operator + G__memfunc_setup("operator=", 937, G__TVamosCHIODataDict_162_0_34, (int) ('u'), G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData), -1, 1, 1, 1, 1, 0, "u 'TVamosCHIOData' - 11 - -", (char*) NULL, (void*) NULL, 0); + G__tag_memfunc_reset(); +} + + +/********************************************************* +* Member function information setup +*********************************************************/ +extern "C" void G__cpp_setup_memfuncTVamosCHIODataDict() { +} + +/********************************************************* +* 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() { + + G__resetglobalenv(); +} +extern "C" void G__cpp_setup_globalTVamosCHIODataDict() { + G__cpp_setup_global0(); + G__cpp_setup_global1(); +} + +/********************************************************* +* 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_funcTVamosCHIODataDict() { + 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__TVamosCHIODataDictLN_TClass = { "TClass" , 99 , -1 }; +G__linked_taginfo G__TVamosCHIODataDictLN_TBuffer = { "TBuffer" , 99 , -1 }; +G__linked_taginfo G__TVamosCHIODataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 }; +G__linked_taginfo G__TVamosCHIODataDictLN_TObject = { "TObject" , 99 , -1 }; +G__linked_taginfo G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR = { "vector<unsigned short,allocator<unsigned short> >" , 99 , -1 }; +G__linked_taginfo G__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 }; +G__linked_taginfo G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 }; +G__linked_taginfo G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TVamosCHIODataDictLN_TVamosCHIOData = { "TVamosCHIOData" , 99 , -1 }; + +/* Reset class/struct taginfo */ +extern "C" void G__cpp_reset_tagtableTVamosCHIODataDict() { + G__TVamosCHIODataDictLN_TClass.tagnum = -1 ; + G__TVamosCHIODataDictLN_TBuffer.tagnum = -1 ; + G__TVamosCHIODataDictLN_TMemberInspector.tagnum = -1 ; + G__TVamosCHIODataDictLN_TObject.tagnum = -1 ; + G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR.tagnum = -1 ; + G__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ; + G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ; + G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TVamosCHIODataDictLN_TVamosCHIOData.tagnum = -1 ; +} + + +extern "C" void G__cpp_setup_tagtableTVamosCHIODataDict() { + + /* Setting up class,struct,union tag entry */ + G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_TClass); + G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_TBuffer); + G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_TMemberInspector); + G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_TObject); + G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR); + G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR); + G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR); + G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR); + G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR); + G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_TVamosCHIOData),sizeof(TVamosCHIOData),-1,29952,"VamosCHIOData structure",G__setup_memvarTVamosCHIOData,G__setup_memfuncTVamosCHIOData); +} +extern "C" void G__cpp_setupTVamosCHIODataDict(void) { + G__check_setup_version(30051515,"G__cpp_setupTVamosCHIODataDict()"); + G__set_cpp_environmentTVamosCHIODataDict(); + G__cpp_setup_tagtableTVamosCHIODataDict(); + + G__cpp_setup_inheritanceTVamosCHIODataDict(); + + G__cpp_setup_typetableTVamosCHIODataDict(); + + G__cpp_setup_memvarTVamosCHIODataDict(); + + G__cpp_setup_memfuncTVamosCHIODataDict(); + G__cpp_setup_globalTVamosCHIODataDict(); + G__cpp_setup_funcTVamosCHIODataDict(); + + if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTVamosCHIODataDict(); + return; +} +class G__cpp_setup_initTVamosCHIODataDict { + public: + G__cpp_setup_initTVamosCHIODataDict() { G__add_setup_func("TVamosCHIODataDict",(G__incsetup)(&G__cpp_setupTVamosCHIODataDict)); G__call_setup_funcs(); } + ~G__cpp_setup_initTVamosCHIODataDict() { G__remove_setup_func("TVamosCHIODataDict"); } +}; +G__cpp_setup_initTVamosCHIODataDict G__cpp_setup_initializerTVamosCHIODataDict; + diff --git a/NPLib/Vamos/TVamosCHIODataDict.h b/NPLib/Vamos/TVamosCHIODataDict.h new file mode 100644 index 0000000000000000000000000000000000000000..f2ff4e06dab0a531f1ca7178f9a415cdeda103c0 --- /dev/null +++ b/NPLib/Vamos/TVamosCHIODataDict.h @@ -0,0 +1,53 @@ +/******************************************************************** +* TVamosCHIODataDict.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 TVamosCHIODataDict.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_tagtableTVamosCHIODataDict(); +extern void G__cpp_setup_inheritanceTVamosCHIODataDict(); +extern void G__cpp_setup_typetableTVamosCHIODataDict(); +extern void G__cpp_setup_memvarTVamosCHIODataDict(); +extern void G__cpp_setup_globalTVamosCHIODataDict(); +extern void G__cpp_setup_memfuncTVamosCHIODataDict(); +extern void G__cpp_setup_funcTVamosCHIODataDict(); +extern void G__set_cpp_environmentTVamosCHIODataDict(); +} + + +#include "TObject.h" +#include "TMemberInspector.h" +#include "TVamosCHIOData.h" +#include <algorithm> +namespace std { } +using namespace std; + +#ifndef G__MEMFUNCBODY +#endif + +extern G__linked_taginfo G__TVamosCHIODataDictLN_TClass; +extern G__linked_taginfo G__TVamosCHIODataDictLN_TBuffer; +extern G__linked_taginfo G__TVamosCHIODataDictLN_TMemberInspector; +extern G__linked_taginfo G__TVamosCHIODataDictLN_TObject; +extern G__linked_taginfo G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR; +extern G__linked_taginfo G__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR; +extern G__linked_taginfo G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR; +extern G__linked_taginfo G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TVamosCHIODataDictLN_TVamosCHIOData; + +/* STUB derived class for protected member access */ diff --git a/NPLib/Vamos/TVamosDCDataDict.cxx b/NPLib/Vamos/TVamosDCDataDict.cxx new file mode 100644 index 0000000000000000000000000000000000000000..fe7b07b7acc29eaa28f2f1361198233e950994a5 --- /dev/null +++ b/NPLib/Vamos/TVamosDCDataDict.cxx @@ -0,0 +1,1222 @@ +// +// File generated by rootcint at Tue Jul 17 16:41:39 2012 + +// Do NOT change. Changes will be lost next time file is generated +// + +#define R__DICTIONARY_FILENAME TVamosDCDataDict +#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 "TVamosDCDataDict.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 TVamosDCData_ShowMembers(void *obj, TMemberInspector &R__insp); + static void *new_TVamosDCData(void *p = 0); + static void *newArray_TVamosDCData(Long_t size, void *p); + static void delete_TVamosDCData(void *p); + static void deleteArray_TVamosDCData(void *p); + static void destruct_TVamosDCData(void *p); + static void streamer_TVamosDCData(TBuffer &buf, void *obj); + + // Function generating the singleton type initializer + static TGenericClassInfo *GenerateInitInstanceLocal(const ::TVamosDCData*) + { + ::TVamosDCData *ptr = 0; + static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TVamosDCData >(0); + static ::ROOT::TGenericClassInfo + instance("TVamosDCData", ::TVamosDCData::Class_Version(), "./TVamosDCData.h", 31, + typeid(::TVamosDCData), DefineBehavior(ptr, ptr), + &::TVamosDCData::Dictionary, isa_proxy, 0, + sizeof(::TVamosDCData) ); + instance.SetNew(&new_TVamosDCData); + instance.SetNewArray(&newArray_TVamosDCData); + instance.SetDelete(&delete_TVamosDCData); + instance.SetDeleteArray(&deleteArray_TVamosDCData); + instance.SetDestructor(&destruct_TVamosDCData); + instance.SetStreamerFunc(&streamer_TVamosDCData); + return &instance; + } + TGenericClassInfo *GenerateInitInstance(const ::TVamosDCData*) + { + return GenerateInitInstanceLocal((::TVamosDCData*)0); + } + // Static variable to force the class initialization + static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TVamosDCData*)0x0); R__UseDummy(_R__UNIQUE_(Init)); +} // end of namespace ROOT + +//______________________________________________________________________________ +TClass *TVamosDCData::fgIsA = 0; // static to hold class pointer + +//______________________________________________________________________________ +const char *TVamosDCData::Class_Name() +{ + return "TVamosDCData"; +} + +//______________________________________________________________________________ +const char *TVamosDCData::ImplFileName() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TVamosDCData*)0x0)->GetImplFileName(); +} + +//______________________________________________________________________________ +int TVamosDCData::ImplFileLine() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TVamosDCData*)0x0)->GetImplFileLine(); +} + +//______________________________________________________________________________ +void TVamosDCData::Dictionary() +{ + fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosDCData*)0x0)->GetClass(); +} + +//______________________________________________________________________________ +TClass *TVamosDCData::Class() +{ + if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosDCData*)0x0)->GetClass(); + return fgIsA; +} + +//______________________________________________________________________________ +void TVamosDCData::Streamer(TBuffer &R__b) +{ + // Stream an object of class TVamosDCData. + + 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 = fVamos_DC_Strip1_DetNbr; + 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 = fVamos_DC_Strip1_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<UShort_t> &R__stl = fVamos_DC_Strip1_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++) { + unsigned short R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<UShort_t> &R__stl = fVamos_DC_Strip2_DetNbr; + 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 = fVamos_DC_Strip2_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<UShort_t> &R__stl = fVamos_DC_Strip2_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++) { + unsigned short R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<UShort_t> &R__stl = fVamos_DC_Efil_DetNbr; + 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 = fVamos_DC_Efil_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++) { + unsigned short R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<UShort_t> &R__stl = fVamos_DC_Efil_PileUp_DetNbr; + 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 = fVamos_DC_Efil_PileUp_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++) { + unsigned short R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + { + vector<UShort_t> &R__stl = fVamos_DC_Tfil_DetNbr; + 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 = fVamos_DC_Tfil_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++) { + unsigned short R__t; + R__b >> R__t; + R__stl.push_back(R__t); + } + } + R__b.CheckByteCount(R__s, R__c, TVamosDCData::IsA()); + } else { + R__c = R__b.WriteVersion(TVamosDCData::IsA(), kTRUE); + TObject::Streamer(R__b); + { + vector<UShort_t> &R__stl = fVamos_DC_Strip1_DetNbr; + 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 = fVamos_DC_Strip1_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<UShort_t> &R__stl = fVamos_DC_Strip1_Energy; + 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 = fVamos_DC_Strip2_DetNbr; + 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 = fVamos_DC_Strip2_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<UShort_t> &R__stl = fVamos_DC_Strip2_Energy; + 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 = fVamos_DC_Efil_DetNbr; + 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 = fVamos_DC_Efil_Energy; + 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 = fVamos_DC_Efil_PileUp_DetNbr; + 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 = fVamos_DC_Efil_PileUp_Energy; + 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 = fVamos_DC_Tfil_DetNbr; + 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 = fVamos_DC_Tfil_Time; + 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); + } + } + } + R__b.SetByteCount(R__c, kTRUE); + } +} + +//______________________________________________________________________________ +void TVamosDCData::ShowMembers(TMemberInspector &R__insp) +{ + // Inspect the data members of an object of class TVamosDCData. + TClass *R__cl = ::TVamosDCData::IsA(); + if (R__cl || R__insp.IsA()) { } + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Strip1_DetNbr", (void*)&fVamos_DC_Strip1_DetNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Strip1_DetNbr, "fVamos_DC_Strip1_DetNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Strip1_StripNbr", (void*)&fVamos_DC_Strip1_StripNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Strip1_StripNbr, "fVamos_DC_Strip1_StripNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Strip1_Energy", (void*)&fVamos_DC_Strip1_Energy); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Strip1_Energy, "fVamos_DC_Strip1_Energy.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Strip2_DetNbr", (void*)&fVamos_DC_Strip2_DetNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Strip2_DetNbr, "fVamos_DC_Strip2_DetNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Strip2_StripNbr", (void*)&fVamos_DC_Strip2_StripNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Strip2_StripNbr, "fVamos_DC_Strip2_StripNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Strip2_Energy", (void*)&fVamos_DC_Strip2_Energy); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Strip2_Energy, "fVamos_DC_Strip2_Energy.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Efil_DetNbr", (void*)&fVamos_DC_Efil_DetNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Efil_DetNbr, "fVamos_DC_Efil_DetNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Efil_Energy", (void*)&fVamos_DC_Efil_Energy); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Efil_Energy, "fVamos_DC_Efil_Energy.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Efil_PileUp_DetNbr", (void*)&fVamos_DC_Efil_PileUp_DetNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Efil_PileUp_DetNbr, "fVamos_DC_Efil_PileUp_DetNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Efil_PileUp_Energy", (void*)&fVamos_DC_Efil_PileUp_Energy); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Efil_PileUp_Energy, "fVamos_DC_Efil_PileUp_Energy.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Tfil_DetNbr", (void*)&fVamos_DC_Tfil_DetNbr); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Tfil_DetNbr, "fVamos_DC_Tfil_DetNbr.", false); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Tfil_Time", (void*)&fVamos_DC_Tfil_Time); + R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Tfil_Time, "fVamos_DC_Tfil_Time.", false); + TObject::ShowMembers(R__insp); +} + +namespace ROOT { + // Wrappers around operator new + static void *new_TVamosDCData(void *p) { + return p ? new(p) ::TVamosDCData : new ::TVamosDCData; + } + static void *newArray_TVamosDCData(Long_t nElements, void *p) { + return p ? new(p) ::TVamosDCData[nElements] : new ::TVamosDCData[nElements]; + } + // Wrapper around operator delete + static void delete_TVamosDCData(void *p) { + delete ((::TVamosDCData*)p); + } + static void deleteArray_TVamosDCData(void *p) { + delete [] ((::TVamosDCData*)p); + } + static void destruct_TVamosDCData(void *p) { + typedef ::TVamosDCData current_t; + ((current_t*)p)->~current_t(); + } + // Wrapper around a custom streamer member function. + static void streamer_TVamosDCData(TBuffer &buf, void *obj) { + ((::TVamosDCData*)obj)->::TVamosDCData::Streamer(buf); + } +} // end of namespace ROOT for class ::TVamosDCData + +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> + +/******************************************************** +* TVamosDCDataDict.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_tagtableTVamosDCDataDict(); + +extern "C" void G__set_cpp_environmentTVamosDCDataDict() { + G__add_compiledheader("TObject.h"); + G__add_compiledheader("TMemberInspector.h"); + G__add_compiledheader("TVamosDCData.h"); + G__cpp_reset_tagtableTVamosDCDataDict(); +} +#include <new> +extern "C" int G__cpp_dllrevTVamosDCDataDict() { return(30051515); } + +/********************************************************* +* Member function Interface Method +*********************************************************/ + +/* TVamosDCData */ +static int G__TVamosDCDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TVamosDCData* p = NULL; + char* gvp = (char*) G__getgvp(); + int n = G__getaryconstruct(); + if (n) { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TVamosDCData[n]; + } else { + p = new((void*) gvp) TVamosDCData[n]; + } + } else { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TVamosDCData; + } else { + p = new((void*) gvp) TVamosDCData; + } + } + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData)); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->Clear(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->SetVamosDCDetNbr1((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->SetVamosDCStripNbr1((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->SetVamosDCEnergy1((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->SetVamosDCDetNbr2((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->SetVamosDCStripNbr2((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->SetVamosDCEnergy2((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->SetVamosDCEfilDetNbr((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->SetVamosDCEfilEnergy((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->SetVamosDCEfilPileUpDetNbr((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->SetVamosDCEfilPileUpEnergy((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->SetVamosDCTfilDetNbr((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_16(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->SetVamosDCTfilTime((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_17(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCMultStrip1()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_18(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCDetNbr1((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCStripNbr1((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEnergy1((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCMultStrip2()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCDetNbr2((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCStripNbr2((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_24(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEnergy2((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_25(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEfilMult()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_26(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEfilDetNbr((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_27(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEfilEnergy((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_28(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEfilPileUpMult()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_29(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEfilPileUpDetNbr((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_30(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEfilPileUpEnergy((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_31(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCTfilMult()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_32(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCTfilDetNbr((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_33(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCTfilTime((Int_t) G__int(libp->para[0]))); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_34(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 85, (long) TVamosDCData::Class()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_35(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TVamosDCData::Class_Name()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_36(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 115, (long) TVamosDCData::Class_Version()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_37(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TVamosDCData::Dictionary(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_41(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosDCData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_42(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TVamosDCData::DeclFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_43(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TVamosDCData::ImplFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_44(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TVamosDCData::ImplFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosDCDataDict_162_0_45(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TVamosDCData::DeclFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic copy constructor +static int G__TVamosDCDataDict_162_0_46(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) + +{ + TVamosDCData* p; + void* tmp = (void*) G__int(libp->para[0]); + p = new TVamosDCData(*(TVamosDCData*) tmp); + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData)); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic destructor +typedef TVamosDCData G__TTVamosDCData; +static int G__TVamosDCDataDict_162_0_47(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[] (TVamosDCData*) soff; + } else { + G__setgvp((long) G__PVOID); + for (int i = n - 1; i >= 0; --i) { + ((TVamosDCData*) (soff+(sizeof(TVamosDCData)*i)))->~G__TTVamosDCData(); + } + G__setgvp((long)gvp); + } + } else { + if (gvp == (char*)G__PVOID) { + delete (TVamosDCData*) soff; + } else { + G__setgvp((long) G__PVOID); + ((TVamosDCData*) (soff))->~G__TTVamosDCData(); + G__setgvp((long)gvp); + } + } + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic assignment operator +static int G__TVamosDCDataDict_162_0_48(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TVamosDCData* dest = (TVamosDCData*) G__getstructoffset(); + *dest = *(TVamosDCData*) libp->para[0].ref; + const TVamosDCData& obj = *dest; + result7->ref = (long) (&obj); + result7->obj.i = (long) (&obj); + return(1 || funcname || hash || result7 || libp) ; +} + + +/* Setting up global function */ + +/********************************************************* +* Member function Stub +*********************************************************/ + +/* TVamosDCData */ + +/********************************************************* +* Global function Stub +*********************************************************/ + +/********************************************************* +* Get size of pointer to member function +*********************************************************/ +class G__Sizep2memfuncTVamosDCDataDict { + public: + G__Sizep2memfuncTVamosDCDataDict(): p(&G__Sizep2memfuncTVamosDCDataDict::sizep2memfunc) {} + size_t sizep2memfunc() { return(sizeof(p)); } + private: + size_t (G__Sizep2memfuncTVamosDCDataDict::*p)(); +}; + +size_t G__get_sizep2memfuncTVamosDCDataDict() +{ + G__Sizep2memfuncTVamosDCDataDict 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_inheritanceTVamosDCDataDict() { + + /* Setting up class inheritance */ + if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData))) { + TVamosDCData *G__Lderived; + G__Lderived=(TVamosDCData*)0x1000; + { + TObject *G__Lpbase=(TObject*)G__Lderived; + G__inheritance_setup(G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData),G__get_linked_tagnum(&G__TVamosDCDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1); + } + } +} + +/********************************************************* +* typedef information setup/ +*********************************************************/ +extern "C" void G__cpp_setup_typetableTVamosDCDataDict() { + + /* 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("Int_t",105,-1,0,-1); + G__setnewtype(-1,"Signed integer 4 bytes (int)",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__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosDCDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosDCDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosDCDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosDCDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<UShort_t>",117,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); +} + +/********************************************************* +* Data Member information setup/ +*********************************************************/ + + /* Setting up class,struct,union tag member variable */ + + /* TVamosDCData */ +static void G__setup_memvarTVamosDCData(void) { + G__tag_memvar_setup(G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData)); + { TVamosDCData *p; p=(TVamosDCData*)0x1000; if (p) { } + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Strip1_DetNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Strip1_StripNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Strip1_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Strip2_DetNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Strip2_StripNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Strip2_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Efil_DetNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Efil_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Efil_PileUp_DetNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Efil_PileUp_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Tfil_DetNbr=",0,(char*)NULL); + G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Tfil_Time=",0,(char*)NULL); + G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL); + } + G__tag_memvar_reset(); +} + +extern "C" void G__cpp_setup_memvarTVamosDCDataDict() { +} +/*********************************************************** +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +***********************************************************/ + +/********************************************************* +* Member function information setup for each class +*********************************************************/ +static void G__setup_memfuncTVamosDCData(void) { + /* TVamosDCData */ + G__tag_memfunc_setup(G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData)); + G__memfunc_setup("TVamosDCData",1115,G__TVamosDCDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Clear",487,G__TVamosDCDataDict_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("SetVamosDCDetNbr1",1577,G__TVamosDCDataDict_162_0_5, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr1", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosDCStripNbr1",1822,G__TVamosDCDataDict_162_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - StripNbr1", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosDCEnergy1",1620,G__TVamosDCDataDict_162_0_7, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - Energy1", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosDCDetNbr2",1578,G__TVamosDCDataDict_162_0_8, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr2", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosDCStripNbr2",1823,G__TVamosDCDataDict_162_0_9, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - StripNbr2", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosDCEnergy2",1621,G__TVamosDCDataDict_162_0_10, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - Energy2", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosDCEfilDetNbr",1912,G__TVamosDCDataDict_162_0_11, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosDCEfilEnergy",1955,G__TVamosDCDataDict_162_0_12, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - Energy", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosDCEfilPileUpDetNbr",2503,G__TVamosDCDataDict_162_0_13, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosDCEfilPileUpEnergy",2546,G__TVamosDCDataDict_162_0_14, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - Energy", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosDCTfilDetNbr",1927,G__TVamosDCDataDict_162_0_15, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetVamosDCTfilTime",1751,G__TVamosDCDataDict_162_0_16, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - Time", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCMultStrip1",1938,G__TVamosDCDataDict_162_0_17, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCDetNbr1",1565,G__TVamosDCDataDict_162_0_18, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCStripNbr1",1810,G__TVamosDCDataDict_162_0_19, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCEnergy1",1608,G__TVamosDCDataDict_162_0_20, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCMultStrip2",1939,G__TVamosDCDataDict_162_0_21, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCDetNbr2",1566,G__TVamosDCDataDict_162_0_22, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCStripNbr2",1811,G__TVamosDCDataDict_162_0_23, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCEnergy2",1609,G__TVamosDCDataDict_162_0_24, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCEfilMult",1743,G__TVamosDCDataDict_162_0_25, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCEfilDetNbr",1900,G__TVamosDCDataDict_162_0_26, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCEfilEnergy",1943,G__TVamosDCDataDict_162_0_27, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCEfilPileUpMult",2334,G__TVamosDCDataDict_162_0_28, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCEfilPileUpDetNbr",2491,G__TVamosDCDataDict_162_0_29, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCEfilPileUpEnergy",2534,G__TVamosDCDataDict_162_0_30, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCTfilMult",1758,G__TVamosDCDataDict_162_0_31, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCTfilDetNbr",1915,G__TVamosDCDataDict_162_0_32, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetVamosDCTfilTime",1739,G__TVamosDCDataDict_162_0_33, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Class",502,G__TVamosDCDataDict_162_0_34, 85, G__get_linked_tagnum(&G__TVamosDCDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TVamosDCData::Class) ), 0); + G__memfunc_setup("Class_Name",982,G__TVamosDCDataDict_162_0_35, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosDCData::Class_Name) ), 0); + G__memfunc_setup("Class_Version",1339,G__TVamosDCDataDict_162_0_36, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TVamosDCData::Class_Version) ), 0); + G__memfunc_setup("Dictionary",1046,G__TVamosDCDataDict_162_0_37, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TVamosDCData::Dictionary) ), 0); + G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TVamosDCDataDictLN_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__TVamosDCDataDict_162_0_41, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("DeclFileName",1145,G__TVamosDCDataDict_162_0_42, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosDCData::DeclFileName) ), 0); + G__memfunc_setup("ImplFileLine",1178,G__TVamosDCDataDict_162_0_43, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosDCData::ImplFileLine) ), 0); + G__memfunc_setup("ImplFileName",1171,G__TVamosDCDataDict_162_0_44, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosDCData::ImplFileName) ), 0); + G__memfunc_setup("DeclFileLine",1152,G__TVamosDCDataDict_162_0_45, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosDCData::DeclFileLine) ), 0); + // automatic copy constructor + G__memfunc_setup("TVamosDCData", 1115, G__TVamosDCDataDict_162_0_46, (int) ('i'), G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData), -1, 0, 1, 1, 1, 0, "u 'TVamosDCData' - 11 - -", (char*) NULL, (void*) NULL, 0); + // automatic destructor + G__memfunc_setup("~TVamosDCData", 1241, G__TVamosDCDataDict_162_0_47, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1); + // automatic assignment operator + G__memfunc_setup("operator=", 937, G__TVamosDCDataDict_162_0_48, (int) ('u'), G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData), -1, 1, 1, 1, 1, 0, "u 'TVamosDCData' - 11 - -", (char*) NULL, (void*) NULL, 0); + G__tag_memfunc_reset(); +} + + +/********************************************************* +* Member function information setup +*********************************************************/ +extern "C" void G__cpp_setup_memfuncTVamosDCDataDict() { +} + +/********************************************************* +* 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() { + + G__resetglobalenv(); +} +extern "C" void G__cpp_setup_globalTVamosDCDataDict() { + G__cpp_setup_global0(); + G__cpp_setup_global1(); +} + +/********************************************************* +* 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_funcTVamosDCDataDict() { + 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__TVamosDCDataDictLN_TClass = { "TClass" , 99 , -1 }; +G__linked_taginfo G__TVamosDCDataDictLN_TBuffer = { "TBuffer" , 99 , -1 }; +G__linked_taginfo G__TVamosDCDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 }; +G__linked_taginfo G__TVamosDCDataDictLN_TObject = { "TObject" , 99 , -1 }; +G__linked_taginfo G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR = { "vector<unsigned short,allocator<unsigned short> >" , 99 , -1 }; +G__linked_taginfo G__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 }; +G__linked_taginfo G__TVamosDCDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 }; +G__linked_taginfo G__TVamosDCDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TVamosDCDataDictLN_TVamosDCData = { "TVamosDCData" , 99 , -1 }; + +/* Reset class/struct taginfo */ +extern "C" void G__cpp_reset_tagtableTVamosDCDataDict() { + G__TVamosDCDataDictLN_TClass.tagnum = -1 ; + G__TVamosDCDataDictLN_TBuffer.tagnum = -1 ; + G__TVamosDCDataDictLN_TMemberInspector.tagnum = -1 ; + G__TVamosDCDataDictLN_TObject.tagnum = -1 ; + G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR.tagnum = -1 ; + G__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ; + G__TVamosDCDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ; + G__TVamosDCDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TVamosDCDataDictLN_TVamosDCData.tagnum = -1 ; +} + + +extern "C" void G__cpp_setup_tagtableTVamosDCDataDict() { + + /* Setting up class,struct,union tag entry */ + G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_TClass); + G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_TBuffer); + G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_TMemberInspector); + G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_TObject); + G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR); + G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR); + G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR); + G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR); + G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR); + G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_TVamosDCData),sizeof(TVamosDCData),-1,29952,"VamosDCData structure",G__setup_memvarTVamosDCData,G__setup_memfuncTVamosDCData); +} +extern "C" void G__cpp_setupTVamosDCDataDict(void) { + G__check_setup_version(30051515,"G__cpp_setupTVamosDCDataDict()"); + G__set_cpp_environmentTVamosDCDataDict(); + G__cpp_setup_tagtableTVamosDCDataDict(); + + G__cpp_setup_inheritanceTVamosDCDataDict(); + + G__cpp_setup_typetableTVamosDCDataDict(); + + G__cpp_setup_memvarTVamosDCDataDict(); + + G__cpp_setup_memfuncTVamosDCDataDict(); + G__cpp_setup_globalTVamosDCDataDict(); + G__cpp_setup_funcTVamosDCDataDict(); + + if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTVamosDCDataDict(); + return; +} +class G__cpp_setup_initTVamosDCDataDict { + public: + G__cpp_setup_initTVamosDCDataDict() { G__add_setup_func("TVamosDCDataDict",(G__incsetup)(&G__cpp_setupTVamosDCDataDict)); G__call_setup_funcs(); } + ~G__cpp_setup_initTVamosDCDataDict() { G__remove_setup_func("TVamosDCDataDict"); } +}; +G__cpp_setup_initTVamosDCDataDict G__cpp_setup_initializerTVamosDCDataDict; + diff --git a/NPLib/Vamos/TVamosDCDataDict.h b/NPLib/Vamos/TVamosDCDataDict.h new file mode 100644 index 0000000000000000000000000000000000000000..8f03d17c2063bf22e6f41779b21c08d756e263a9 --- /dev/null +++ b/NPLib/Vamos/TVamosDCDataDict.h @@ -0,0 +1,53 @@ +/******************************************************************** +* TVamosDCDataDict.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 TVamosDCDataDict.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_tagtableTVamosDCDataDict(); +extern void G__cpp_setup_inheritanceTVamosDCDataDict(); +extern void G__cpp_setup_typetableTVamosDCDataDict(); +extern void G__cpp_setup_memvarTVamosDCDataDict(); +extern void G__cpp_setup_globalTVamosDCDataDict(); +extern void G__cpp_setup_memfuncTVamosDCDataDict(); +extern void G__cpp_setup_funcTVamosDCDataDict(); +extern void G__set_cpp_environmentTVamosDCDataDict(); +} + + +#include "TObject.h" +#include "TMemberInspector.h" +#include "TVamosDCData.h" +#include <algorithm> +namespace std { } +using namespace std; + +#ifndef G__MEMFUNCBODY +#endif + +extern G__linked_taginfo G__TVamosDCDataDictLN_TClass; +extern G__linked_taginfo G__TVamosDCDataDictLN_TBuffer; +extern G__linked_taginfo G__TVamosDCDataDictLN_TMemberInspector; +extern G__linked_taginfo G__TVamosDCDataDictLN_TObject; +extern G__linked_taginfo G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR; +extern G__linked_taginfo G__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR; +extern G__linked_taginfo G__TVamosDCDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR; +extern G__linked_taginfo G__TVamosDCDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TVamosDCDataDictLN_TVamosDCData; + +/* STUB derived class for protected member access */ diff --git a/NPLib/Vamos/TVamosFingerDataDict.cxx b/NPLib/Vamos/TVamosFingerDataDict.cxx new file mode 100644 index 0000000000000000000000000000000000000000..7d9790c6fff6774f7d6481fa3bd7f61055980797 --- /dev/null +++ b/NPLib/Vamos/TVamosFingerDataDict.cxx @@ -0,0 +1,648 @@ +// +// File generated by rootcint at Tue Jul 17 16:41:37 2012 + +// Do NOT change. Changes will be lost next time file is generated +// + +#define R__DICTIONARY_FILENAME TVamosFingerDataDict +#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 "TVamosFingerDataDict.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 TVamosFingerData_ShowMembers(void *obj, TMemberInspector &R__insp); + static void *new_TVamosFingerData(void *p = 0); + static void *newArray_TVamosFingerData(Long_t size, void *p); + static void delete_TVamosFingerData(void *p); + static void deleteArray_TVamosFingerData(void *p); + static void destruct_TVamosFingerData(void *p); + static void streamer_TVamosFingerData(TBuffer &buf, void *obj); + + // Function generating the singleton type initializer + static TGenericClassInfo *GenerateInitInstanceLocal(const ::TVamosFingerData*) + { + ::TVamosFingerData *ptr = 0; + static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TVamosFingerData >(0); + static ::ROOT::TGenericClassInfo + instance("TVamosFingerData", ::TVamosFingerData::Class_Version(), "./TVamosFingerData.h", 31, + typeid(::TVamosFingerData), DefineBehavior(ptr, ptr), + &::TVamosFingerData::Dictionary, isa_proxy, 0, + sizeof(::TVamosFingerData) ); + instance.SetNew(&new_TVamosFingerData); + instance.SetNewArray(&newArray_TVamosFingerData); + instance.SetDelete(&delete_TVamosFingerData); + instance.SetDeleteArray(&deleteArray_TVamosFingerData); + instance.SetDestructor(&destruct_TVamosFingerData); + instance.SetStreamerFunc(&streamer_TVamosFingerData); + return &instance; + } + TGenericClassInfo *GenerateInitInstance(const ::TVamosFingerData*) + { + return GenerateInitInstanceLocal((::TVamosFingerData*)0); + } + // Static variable to force the class initialization + static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TVamosFingerData*)0x0); R__UseDummy(_R__UNIQUE_(Init)); +} // end of namespace ROOT + +//______________________________________________________________________________ +TClass *TVamosFingerData::fgIsA = 0; // static to hold class pointer + +//______________________________________________________________________________ +const char *TVamosFingerData::Class_Name() +{ + return "TVamosFingerData"; +} + +//______________________________________________________________________________ +const char *TVamosFingerData::ImplFileName() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TVamosFingerData*)0x0)->GetImplFileName(); +} + +//______________________________________________________________________________ +int TVamosFingerData::ImplFileLine() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TVamosFingerData*)0x0)->GetImplFileLine(); +} + +//______________________________________________________________________________ +void TVamosFingerData::Dictionary() +{ + fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosFingerData*)0x0)->GetClass(); +} + +//______________________________________________________________________________ +TClass *TVamosFingerData::Class() +{ + if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosFingerData*)0x0)->GetClass(); + return fgIsA; +} + +//______________________________________________________________________________ +void TVamosFingerData::Streamer(TBuffer &R__b) +{ + // Stream an object of class TVamosFingerData. + + 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); + R__b >> fVamos_Finger_Energy; + R__b.CheckByteCount(R__s, R__c, TVamosFingerData::IsA()); + } else { + R__c = R__b.WriteVersion(TVamosFingerData::IsA(), kTRUE); + TObject::Streamer(R__b); + R__b << fVamos_Finger_Energy; + R__b.SetByteCount(R__c, kTRUE); + } +} + +//______________________________________________________________________________ +void TVamosFingerData::ShowMembers(TMemberInspector &R__insp) +{ + // Inspect the data members of an object of class TVamosFingerData. + TClass *R__cl = ::TVamosFingerData::IsA(); + if (R__cl || R__insp.IsA()) { } + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_Finger_Energy", &fVamos_Finger_Energy); + TObject::ShowMembers(R__insp); +} + +namespace ROOT { + // Wrappers around operator new + static void *new_TVamosFingerData(void *p) { + return p ? new(p) ::TVamosFingerData : new ::TVamosFingerData; + } + static void *newArray_TVamosFingerData(Long_t nElements, void *p) { + return p ? new(p) ::TVamosFingerData[nElements] : new ::TVamosFingerData[nElements]; + } + // Wrapper around operator delete + static void delete_TVamosFingerData(void *p) { + delete ((::TVamosFingerData*)p); + } + static void deleteArray_TVamosFingerData(void *p) { + delete [] ((::TVamosFingerData*)p); + } + static void destruct_TVamosFingerData(void *p) { + typedef ::TVamosFingerData current_t; + ((current_t*)p)->~current_t(); + } + // Wrapper around a custom streamer member function. + static void streamer_TVamosFingerData(TBuffer &buf, void *obj) { + ((::TVamosFingerData*)obj)->::TVamosFingerData::Streamer(buf); + } +} // end of namespace ROOT for class ::TVamosFingerData + +/******************************************************** +* TVamosFingerDataDict.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_tagtableTVamosFingerDataDict(); + +extern "C" void G__set_cpp_environmentTVamosFingerDataDict() { + G__add_compiledheader("TObject.h"); + G__add_compiledheader("TMemberInspector.h"); + G__add_compiledheader("TVamosFingerData.h"); + G__cpp_reset_tagtableTVamosFingerDataDict(); +} +#include <new> +extern "C" int G__cpp_dllrevTVamosFingerDataDict() { return(30051515); } + +/********************************************************* +* Member function Interface Method +*********************************************************/ + +/* TVamosFingerData */ +static int G__TVamosFingerDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TVamosFingerData* p = NULL; + char* gvp = (char*) G__getgvp(); + int n = G__getaryconstruct(); + if (n) { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TVamosFingerData[n]; + } else { + p = new((void*) gvp) TVamosFingerData[n]; + } + } else { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TVamosFingerData; + } else { + p = new((void*) gvp) TVamosFingerData; + } + } + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData)); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosFingerDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosFingerData*) G__getstructoffset())->Clear(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosFingerDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosFingerData*) G__getstructoffset())->GetFingerEnergy()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosFingerDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosFingerData*) G__getstructoffset())->SetFingerEnergy((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosFingerDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 85, (long) TVamosFingerData::Class()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosFingerDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TVamosFingerData::Class_Name()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosFingerDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 115, (long) TVamosFingerData::Class_Version()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosFingerDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TVamosFingerData::Dictionary(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosFingerDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosFingerData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosFingerDataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TVamosFingerData::DeclFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosFingerDataDict_162_0_16(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TVamosFingerData::ImplFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosFingerDataDict_162_0_17(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TVamosFingerData::ImplFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosFingerDataDict_162_0_18(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TVamosFingerData::DeclFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic copy constructor +static int G__TVamosFingerDataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) + +{ + TVamosFingerData* p; + void* tmp = (void*) G__int(libp->para[0]); + p = new TVamosFingerData(*(TVamosFingerData*) tmp); + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData)); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic destructor +typedef TVamosFingerData G__TTVamosFingerData; +static int G__TVamosFingerDataDict_162_0_20(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[] (TVamosFingerData*) soff; + } else { + G__setgvp((long) G__PVOID); + for (int i = n - 1; i >= 0; --i) { + ((TVamosFingerData*) (soff+(sizeof(TVamosFingerData)*i)))->~G__TTVamosFingerData(); + } + G__setgvp((long)gvp); + } + } else { + if (gvp == (char*)G__PVOID) { + delete (TVamosFingerData*) soff; + } else { + G__setgvp((long) G__PVOID); + ((TVamosFingerData*) (soff))->~G__TTVamosFingerData(); + G__setgvp((long)gvp); + } + } + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic assignment operator +static int G__TVamosFingerDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TVamosFingerData* dest = (TVamosFingerData*) G__getstructoffset(); + *dest = *(TVamosFingerData*) libp->para[0].ref; + const TVamosFingerData& obj = *dest; + result7->ref = (long) (&obj); + result7->obj.i = (long) (&obj); + return(1 || funcname || hash || result7 || libp) ; +} + + +/* Setting up global function */ + +/********************************************************* +* Member function Stub +*********************************************************/ + +/* TVamosFingerData */ + +/********************************************************* +* Global function Stub +*********************************************************/ + +/********************************************************* +* Get size of pointer to member function +*********************************************************/ +class G__Sizep2memfuncTVamosFingerDataDict { + public: + G__Sizep2memfuncTVamosFingerDataDict(): p(&G__Sizep2memfuncTVamosFingerDataDict::sizep2memfunc) {} + size_t sizep2memfunc() { return(sizeof(p)); } + private: + size_t (G__Sizep2memfuncTVamosFingerDataDict::*p)(); +}; + +size_t G__get_sizep2memfuncTVamosFingerDataDict() +{ + G__Sizep2memfuncTVamosFingerDataDict 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_inheritanceTVamosFingerDataDict() { + + /* Setting up class inheritance */ + if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData))) { + TVamosFingerData *G__Lderived; + G__Lderived=(TVamosFingerData*)0x1000; + { + TObject *G__Lpbase=(TObject*)G__Lderived; + G__inheritance_setup(G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData),G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1); + } + } +} + +/********************************************************* +* typedef information setup/ +*********************************************************/ +extern "C" void G__cpp_setup_typetableTVamosFingerDataDict() { + + /* 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("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__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); +} + +/********************************************************* +* Data Member information setup/ +*********************************************************/ + + /* Setting up class,struct,union tag member variable */ + + /* TVamosFingerData */ +static void G__setup_memvarTVamosFingerData(void) { + G__tag_memvar_setup(G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData)); + { TVamosFingerData *p; p=(TVamosFingerData*)0x1000; if (p) { } + G__memvar_setup((void*)0,114,0,0,-1,G__defined_typename("UShort_t"),-1,4,"fVamos_Finger_Energy=",0,(char*)NULL); + G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL); + } + G__tag_memvar_reset(); +} + +extern "C" void G__cpp_setup_memvarTVamosFingerDataDict() { +} +/*********************************************************** +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +***********************************************************/ + +/********************************************************* +* Member function information setup for each class +*********************************************************/ +static void G__setup_memfuncTVamosFingerData(void) { + /* TVamosFingerData */ + G__tag_memfunc_setup(G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData)); + G__memfunc_setup("TVamosFingerData",1583,G__TVamosFingerDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Clear",487,G__TVamosFingerDataDict_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("GetFingerEnergy",1509,G__TVamosFingerDataDict_162_0_5, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetFingerEnergy",1521,G__TVamosFingerDataDict_162_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - E", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Class",502,G__TVamosFingerDataDict_162_0_7, 85, G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TVamosFingerData::Class) ), 0); + G__memfunc_setup("Class_Name",982,G__TVamosFingerDataDict_162_0_8, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosFingerData::Class_Name) ), 0); + G__memfunc_setup("Class_Version",1339,G__TVamosFingerDataDict_162_0_9, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TVamosFingerData::Class_Version) ), 0); + G__memfunc_setup("Dictionary",1046,G__TVamosFingerDataDict_162_0_10, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TVamosFingerData::Dictionary) ), 0); + G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TVamosFingerDataDictLN_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__TVamosFingerDataDict_162_0_14, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("DeclFileName",1145,G__TVamosFingerDataDict_162_0_15, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosFingerData::DeclFileName) ), 0); + G__memfunc_setup("ImplFileLine",1178,G__TVamosFingerDataDict_162_0_16, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosFingerData::ImplFileLine) ), 0); + G__memfunc_setup("ImplFileName",1171,G__TVamosFingerDataDict_162_0_17, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosFingerData::ImplFileName) ), 0); + G__memfunc_setup("DeclFileLine",1152,G__TVamosFingerDataDict_162_0_18, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosFingerData::DeclFileLine) ), 0); + // automatic copy constructor + G__memfunc_setup("TVamosFingerData", 1583, G__TVamosFingerDataDict_162_0_19, (int) ('i'), G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData), -1, 0, 1, 1, 1, 0, "u 'TVamosFingerData' - 11 - -", (char*) NULL, (void*) NULL, 0); + // automatic destructor + G__memfunc_setup("~TVamosFingerData", 1709, G__TVamosFingerDataDict_162_0_20, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1); + // automatic assignment operator + G__memfunc_setup("operator=", 937, G__TVamosFingerDataDict_162_0_21, (int) ('u'), G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData), -1, 1, 1, 1, 1, 0, "u 'TVamosFingerData' - 11 - -", (char*) NULL, (void*) NULL, 0); + G__tag_memfunc_reset(); +} + + +/********************************************************* +* Member function information setup +*********************************************************/ +extern "C" void G__cpp_setup_memfuncTVamosFingerDataDict() { +} + +/********************************************************* +* 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() { + + G__resetglobalenv(); +} +extern "C" void G__cpp_setup_globalTVamosFingerDataDict() { + G__cpp_setup_global0(); + G__cpp_setup_global1(); +} + +/********************************************************* +* 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_funcTVamosFingerDataDict() { + 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__TVamosFingerDataDictLN_TClass = { "TClass" , 99 , -1 }; +G__linked_taginfo G__TVamosFingerDataDictLN_TBuffer = { "TBuffer" , 99 , -1 }; +G__linked_taginfo G__TVamosFingerDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 }; +G__linked_taginfo G__TVamosFingerDataDictLN_TObject = { "TObject" , 99 , -1 }; +G__linked_taginfo G__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 }; +G__linked_taginfo G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 }; +G__linked_taginfo G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TVamosFingerDataDictLN_TVamosFingerData = { "TVamosFingerData" , 99 , -1 }; + +/* Reset class/struct taginfo */ +extern "C" void G__cpp_reset_tagtableTVamosFingerDataDict() { + G__TVamosFingerDataDictLN_TClass.tagnum = -1 ; + G__TVamosFingerDataDictLN_TBuffer.tagnum = -1 ; + G__TVamosFingerDataDictLN_TMemberInspector.tagnum = -1 ; + G__TVamosFingerDataDictLN_TObject.tagnum = -1 ; + G__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ; + G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ; + G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TVamosFingerDataDictLN_TVamosFingerData.tagnum = -1 ; +} + + +extern "C" void G__cpp_setup_tagtableTVamosFingerDataDict() { + + /* Setting up class,struct,union tag entry */ + G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_TClass); + G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_TBuffer); + G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_TMemberInspector); + G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_TObject); + G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR); + G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR); + G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR); + G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR); + G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_TVamosFingerData),sizeof(TVamosFingerData),-1,29952,"VamosFingerData structure",G__setup_memvarTVamosFingerData,G__setup_memfuncTVamosFingerData); +} +extern "C" void G__cpp_setupTVamosFingerDataDict(void) { + G__check_setup_version(30051515,"G__cpp_setupTVamosFingerDataDict()"); + G__set_cpp_environmentTVamosFingerDataDict(); + G__cpp_setup_tagtableTVamosFingerDataDict(); + + G__cpp_setup_inheritanceTVamosFingerDataDict(); + + G__cpp_setup_typetableTVamosFingerDataDict(); + + G__cpp_setup_memvarTVamosFingerDataDict(); + + G__cpp_setup_memfuncTVamosFingerDataDict(); + G__cpp_setup_globalTVamosFingerDataDict(); + G__cpp_setup_funcTVamosFingerDataDict(); + + if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTVamosFingerDataDict(); + return; +} +class G__cpp_setup_initTVamosFingerDataDict { + public: + G__cpp_setup_initTVamosFingerDataDict() { G__add_setup_func("TVamosFingerDataDict",(G__incsetup)(&G__cpp_setupTVamosFingerDataDict)); G__call_setup_funcs(); } + ~G__cpp_setup_initTVamosFingerDataDict() { G__remove_setup_func("TVamosFingerDataDict"); } +}; +G__cpp_setup_initTVamosFingerDataDict G__cpp_setup_initializerTVamosFingerDataDict; + diff --git a/NPLib/Vamos/TVamosFingerDataDict.h b/NPLib/Vamos/TVamosFingerDataDict.h new file mode 100644 index 0000000000000000000000000000000000000000..ef30c138422e932fb722cf6c20140bbe2f66c87d --- /dev/null +++ b/NPLib/Vamos/TVamosFingerDataDict.h @@ -0,0 +1,52 @@ +/******************************************************************** +* TVamosFingerDataDict.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 TVamosFingerDataDict.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_tagtableTVamosFingerDataDict(); +extern void G__cpp_setup_inheritanceTVamosFingerDataDict(); +extern void G__cpp_setup_typetableTVamosFingerDataDict(); +extern void G__cpp_setup_memvarTVamosFingerDataDict(); +extern void G__cpp_setup_globalTVamosFingerDataDict(); +extern void G__cpp_setup_memfuncTVamosFingerDataDict(); +extern void G__cpp_setup_funcTVamosFingerDataDict(); +extern void G__set_cpp_environmentTVamosFingerDataDict(); +} + + +#include "TObject.h" +#include "TMemberInspector.h" +#include "TVamosFingerData.h" +#include <algorithm> +namespace std { } +using namespace std; + +#ifndef G__MEMFUNCBODY +#endif + +extern G__linked_taginfo G__TVamosFingerDataDictLN_TClass; +extern G__linked_taginfo G__TVamosFingerDataDictLN_TBuffer; +extern G__linked_taginfo G__TVamosFingerDataDictLN_TMemberInspector; +extern G__linked_taginfo G__TVamosFingerDataDictLN_TObject; +extern G__linked_taginfo G__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR; +extern G__linked_taginfo G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR; +extern G__linked_taginfo G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TVamosFingerDataDictLN_TVamosFingerData; + +/* STUB derived class for protected member access */ diff --git a/NPLib/Vamos/TVamosPlasticDataDict.cxx b/NPLib/Vamos/TVamosPlasticDataDict.cxx new file mode 100644 index 0000000000000000000000000000000000000000..32f5e5795fa40b366d3cdca28bfbe1caa6d970d2 --- /dev/null +++ b/NPLib/Vamos/TVamosPlasticDataDict.cxx @@ -0,0 +1,686 @@ +// +// File generated by rootcint at Tue Jul 17 16:41:36 2012 + +// Do NOT change. Changes will be lost next time file is generated +// + +#define R__DICTIONARY_FILENAME TVamosPlasticDataDict +#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 "TVamosPlasticDataDict.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 TVamosPlasticData_ShowMembers(void *obj, TMemberInspector &R__insp); + static void *new_TVamosPlasticData(void *p = 0); + static void *newArray_TVamosPlasticData(Long_t size, void *p); + static void delete_TVamosPlasticData(void *p); + static void deleteArray_TVamosPlasticData(void *p); + static void destruct_TVamosPlasticData(void *p); + static void streamer_TVamosPlasticData(TBuffer &buf, void *obj); + + // Function generating the singleton type initializer + static TGenericClassInfo *GenerateInitInstanceLocal(const ::TVamosPlasticData*) + { + ::TVamosPlasticData *ptr = 0; + static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TVamosPlasticData >(0); + static ::ROOT::TGenericClassInfo + instance("TVamosPlasticData", ::TVamosPlasticData::Class_Version(), "./TVamosPlasticData.h", 31, + typeid(::TVamosPlasticData), DefineBehavior(ptr, ptr), + &::TVamosPlasticData::Dictionary, isa_proxy, 0, + sizeof(::TVamosPlasticData) ); + instance.SetNew(&new_TVamosPlasticData); + instance.SetNewArray(&newArray_TVamosPlasticData); + instance.SetDelete(&delete_TVamosPlasticData); + instance.SetDeleteArray(&deleteArray_TVamosPlasticData); + instance.SetDestructor(&destruct_TVamosPlasticData); + instance.SetStreamerFunc(&streamer_TVamosPlasticData); + return &instance; + } + TGenericClassInfo *GenerateInitInstance(const ::TVamosPlasticData*) + { + return GenerateInitInstanceLocal((::TVamosPlasticData*)0); + } + // Static variable to force the class initialization + static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TVamosPlasticData*)0x0); R__UseDummy(_R__UNIQUE_(Init)); +} // end of namespace ROOT + +//______________________________________________________________________________ +TClass *TVamosPlasticData::fgIsA = 0; // static to hold class pointer + +//______________________________________________________________________________ +const char *TVamosPlasticData::Class_Name() +{ + return "TVamosPlasticData"; +} + +//______________________________________________________________________________ +const char *TVamosPlasticData::ImplFileName() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TVamosPlasticData*)0x0)->GetImplFileName(); +} + +//______________________________________________________________________________ +int TVamosPlasticData::ImplFileLine() +{ + return ::ROOT::GenerateInitInstanceLocal((const ::TVamosPlasticData*)0x0)->GetImplFileLine(); +} + +//______________________________________________________________________________ +void TVamosPlasticData::Dictionary() +{ + fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosPlasticData*)0x0)->GetClass(); +} + +//______________________________________________________________________________ +TClass *TVamosPlasticData::Class() +{ + if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosPlasticData*)0x0)->GetClass(); + return fgIsA; +} + +//______________________________________________________________________________ +void TVamosPlasticData::Streamer(TBuffer &R__b) +{ + // Stream an object of class TVamosPlasticData. + + 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); + R__b >> fVamos_Plastic_Energy_Left; + R__b >> fVamos_Plastic_Energy_Right; + R__b >> fVamos_Plastic_Time_LeftRight; + R__b.CheckByteCount(R__s, R__c, TVamosPlasticData::IsA()); + } else { + R__c = R__b.WriteVersion(TVamosPlasticData::IsA(), kTRUE); + TObject::Streamer(R__b); + R__b << fVamos_Plastic_Energy_Left; + R__b << fVamos_Plastic_Energy_Right; + R__b << fVamos_Plastic_Time_LeftRight; + R__b.SetByteCount(R__c, kTRUE); + } +} + +//______________________________________________________________________________ +void TVamosPlasticData::ShowMembers(TMemberInspector &R__insp) +{ + // Inspect the data members of an object of class TVamosPlasticData. + TClass *R__cl = ::TVamosPlasticData::IsA(); + if (R__cl || R__insp.IsA()) { } + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_Plastic_Energy_Left", &fVamos_Plastic_Energy_Left); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_Plastic_Energy_Right", &fVamos_Plastic_Energy_Right); + R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_Plastic_Time_LeftRight", &fVamos_Plastic_Time_LeftRight); + TObject::ShowMembers(R__insp); +} + +namespace ROOT { + // Wrappers around operator new + static void *new_TVamosPlasticData(void *p) { + return p ? new(p) ::TVamosPlasticData : new ::TVamosPlasticData; + } + static void *newArray_TVamosPlasticData(Long_t nElements, void *p) { + return p ? new(p) ::TVamosPlasticData[nElements] : new ::TVamosPlasticData[nElements]; + } + // Wrapper around operator delete + static void delete_TVamosPlasticData(void *p) { + delete ((::TVamosPlasticData*)p); + } + static void deleteArray_TVamosPlasticData(void *p) { + delete [] ((::TVamosPlasticData*)p); + } + static void destruct_TVamosPlasticData(void *p) { + typedef ::TVamosPlasticData current_t; + ((current_t*)p)->~current_t(); + } + // Wrapper around a custom streamer member function. + static void streamer_TVamosPlasticData(TBuffer &buf, void *obj) { + ((::TVamosPlasticData*)obj)->::TVamosPlasticData::Streamer(buf); + } +} // end of namespace ROOT for class ::TVamosPlasticData + +/******************************************************** +* TVamosPlasticDataDict.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_tagtableTVamosPlasticDataDict(); + +extern "C" void G__set_cpp_environmentTVamosPlasticDataDict() { + G__add_compiledheader("TObject.h"); + G__add_compiledheader("TMemberInspector.h"); + G__add_compiledheader("TVamosPlasticData.h"); + G__cpp_reset_tagtableTVamosPlasticDataDict(); +} +#include <new> +extern "C" int G__cpp_dllrevTVamosPlasticDataDict() { return(30051515); } + +/********************************************************* +* Member function Interface Method +*********************************************************/ + +/* TVamosPlasticData */ +static int G__TVamosPlasticDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TVamosPlasticData* p = NULL; + char* gvp = (char*) G__getgvp(); + int n = G__getaryconstruct(); + if (n) { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TVamosPlasticData[n]; + } else { + p = new((void*) gvp) TVamosPlasticData[n]; + } + } else { + if ((gvp == (char*)G__PVOID) || (gvp == 0)) { + p = new TVamosPlasticData; + } else { + p = new((void*) gvp) TVamosPlasticData; + } + } + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData)); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosPlasticData*) G__getstructoffset())->Clear(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosPlasticData*) G__getstructoffset())->GetEnergyLeft()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosPlasticData*) G__getstructoffset())->GetEnergyRight()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 114, (long) ((TVamosPlasticData*) G__getstructoffset())->GetTimeLeftRight()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosPlasticData*) G__getstructoffset())->SetEnergyLeft((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosPlasticData*) G__getstructoffset())->SetEnergyRight((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosPlasticData*) G__getstructoffset())->SetTimeLeftRight((UShort_t) G__int(libp->para[0])); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 85, (long) TVamosPlasticData::Class()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TVamosPlasticData::Class_Name()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 115, (long) TVamosPlasticData::Class_Version()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TVamosPlasticData::Dictionary(); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_18(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + ((TVamosPlasticData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref); + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TVamosPlasticData::DeclFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TVamosPlasticData::ImplFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 67, (long) TVamosPlasticData::ImplFileName()); + return(1 || funcname || hash || result7 || libp) ; +} + +static int G__TVamosPlasticDataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + G__letint(result7, 105, (long) TVamosPlasticData::DeclFileLine()); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic copy constructor +static int G__TVamosPlasticDataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) + +{ + TVamosPlasticData* p; + void* tmp = (void*) G__int(libp->para[0]); + p = new TVamosPlasticData(*(TVamosPlasticData*) tmp); + result7->obj.i = (long) p; + result7->ref = (long) p; + G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData)); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic destructor +typedef TVamosPlasticData G__TTVamosPlasticData; +static int G__TVamosPlasticDataDict_162_0_24(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[] (TVamosPlasticData*) soff; + } else { + G__setgvp((long) G__PVOID); + for (int i = n - 1; i >= 0; --i) { + ((TVamosPlasticData*) (soff+(sizeof(TVamosPlasticData)*i)))->~G__TTVamosPlasticData(); + } + G__setgvp((long)gvp); + } + } else { + if (gvp == (char*)G__PVOID) { + delete (TVamosPlasticData*) soff; + } else { + G__setgvp((long) G__PVOID); + ((TVamosPlasticData*) (soff))->~G__TTVamosPlasticData(); + G__setgvp((long)gvp); + } + } + G__setnull(result7); + return(1 || funcname || hash || result7 || libp) ; +} + +// automatic assignment operator +static int G__TVamosPlasticDataDict_162_0_25(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) +{ + TVamosPlasticData* dest = (TVamosPlasticData*) G__getstructoffset(); + *dest = *(TVamosPlasticData*) libp->para[0].ref; + const TVamosPlasticData& obj = *dest; + result7->ref = (long) (&obj); + result7->obj.i = (long) (&obj); + return(1 || funcname || hash || result7 || libp) ; +} + + +/* Setting up global function */ + +/********************************************************* +* Member function Stub +*********************************************************/ + +/* TVamosPlasticData */ + +/********************************************************* +* Global function Stub +*********************************************************/ + +/********************************************************* +* Get size of pointer to member function +*********************************************************/ +class G__Sizep2memfuncTVamosPlasticDataDict { + public: + G__Sizep2memfuncTVamosPlasticDataDict(): p(&G__Sizep2memfuncTVamosPlasticDataDict::sizep2memfunc) {} + size_t sizep2memfunc() { return(sizeof(p)); } + private: + size_t (G__Sizep2memfuncTVamosPlasticDataDict::*p)(); +}; + +size_t G__get_sizep2memfuncTVamosPlasticDataDict() +{ + G__Sizep2memfuncTVamosPlasticDataDict 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_inheritanceTVamosPlasticDataDict() { + + /* Setting up class inheritance */ + if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData))) { + TVamosPlasticData *G__Lderived; + G__Lderived=(TVamosPlasticData*)0x1000; + { + TObject *G__Lpbase=(TObject*)G__Lderived; + G__inheritance_setup(G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData),G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1); + } + } +} + +/********************************************************* +* typedef information setup/ +*********************************************************/ +extern "C" void G__cpp_setup_typetableTVamosPlasticDataDict() { + + /* 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("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__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); + G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR)); + G__setnewtype(-1,NULL,0); +} + +/********************************************************* +* Data Member information setup/ +*********************************************************/ + + /* Setting up class,struct,union tag member variable */ + + /* TVamosPlasticData */ +static void G__setup_memvarTVamosPlasticData(void) { + G__tag_memvar_setup(G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData)); + { TVamosPlasticData *p; p=(TVamosPlasticData*)0x1000; if (p) { } + G__memvar_setup((void*)0,114,0,0,-1,G__defined_typename("UShort_t"),-1,4,"fVamos_Plastic_Energy_Left=",0,(char*)NULL); + G__memvar_setup((void*)0,114,0,0,-1,G__defined_typename("UShort_t"),-1,4,"fVamos_Plastic_Energy_Right=",0,(char*)NULL); + G__memvar_setup((void*)0,114,0,0,-1,G__defined_typename("UShort_t"),-1,4,"fVamos_Plastic_Time_LeftRight=",0,(char*)NULL); + G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL); + } + G__tag_memvar_reset(); +} + +extern "C" void G__cpp_setup_memvarTVamosPlasticDataDict() { +} +/*********************************************************** +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +***********************************************************/ + +/********************************************************* +* Member function information setup for each class +*********************************************************/ +static void G__setup_memfuncTVamosPlasticData(void) { + /* TVamosPlasticData */ + G__tag_memfunc_setup(G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData)); + G__memfunc_setup("TVamosPlasticData",1700,G__TVamosPlasticDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Clear",487,G__TVamosPlasticDataDict_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("GetEnergyLeft",1301,G__TVamosPlasticDataDict_162_0_5, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetEnergyRight",1416,G__TVamosPlasticDataDict_162_0_6, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("GetTimeLeftRight",1592,G__TVamosPlasticDataDict_162_0_7, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetEnergyLeft",1313,G__TVamosPlasticDataDict_162_0_8, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - E", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetEnergyRight",1428,G__TVamosPlasticDataDict_162_0_9, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - E", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("SetTimeLeftRight",1604,G__TVamosPlasticDataDict_162_0_10, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - E", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("Class",502,G__TVamosPlasticDataDict_162_0_11, 85, G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TVamosPlasticData::Class) ), 0); + G__memfunc_setup("Class_Name",982,G__TVamosPlasticDataDict_162_0_12, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosPlasticData::Class_Name) ), 0); + G__memfunc_setup("Class_Version",1339,G__TVamosPlasticDataDict_162_0_13, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TVamosPlasticData::Class_Version) ), 0); + G__memfunc_setup("Dictionary",1046,G__TVamosPlasticDataDict_162_0_14, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TVamosPlasticData::Dictionary) ), 0); + G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_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__TVamosPlasticDataDict_162_0_18, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("DeclFileName",1145,G__TVamosPlasticDataDict_162_0_19, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosPlasticData::DeclFileName) ), 0); + G__memfunc_setup("ImplFileLine",1178,G__TVamosPlasticDataDict_162_0_20, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosPlasticData::ImplFileLine) ), 0); + G__memfunc_setup("ImplFileName",1171,G__TVamosPlasticDataDict_162_0_21, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosPlasticData::ImplFileName) ), 0); + G__memfunc_setup("DeclFileLine",1152,G__TVamosPlasticDataDict_162_0_22, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosPlasticData::DeclFileLine) ), 0); + // automatic copy constructor + G__memfunc_setup("TVamosPlasticData", 1700, G__TVamosPlasticDataDict_162_0_23, (int) ('i'), G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData), -1, 0, 1, 1, 1, 0, "u 'TVamosPlasticData' - 11 - -", (char*) NULL, (void*) NULL, 0); + // automatic destructor + G__memfunc_setup("~TVamosPlasticData", 1826, G__TVamosPlasticDataDict_162_0_24, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1); + // automatic assignment operator + G__memfunc_setup("operator=", 937, G__TVamosPlasticDataDict_162_0_25, (int) ('u'), G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData), -1, 1, 1, 1, 1, 0, "u 'TVamosPlasticData' - 11 - -", (char*) NULL, (void*) NULL, 0); + G__tag_memfunc_reset(); +} + + +/********************************************************* +* Member function information setup +*********************************************************/ +extern "C" void G__cpp_setup_memfuncTVamosPlasticDataDict() { +} + +/********************************************************* +* 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() { + + G__resetglobalenv(); +} +extern "C" void G__cpp_setup_globalTVamosPlasticDataDict() { + G__cpp_setup_global0(); + G__cpp_setup_global1(); +} + +/********************************************************* +* 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_funcTVamosPlasticDataDict() { + 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__TVamosPlasticDataDictLN_TClass = { "TClass" , 99 , -1 }; +G__linked_taginfo G__TVamosPlasticDataDictLN_TBuffer = { "TBuffer" , 99 , -1 }; +G__linked_taginfo G__TVamosPlasticDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 }; +G__linked_taginfo G__TVamosPlasticDataDictLN_TObject = { "TObject" , 99 , -1 }; +G__linked_taginfo G__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 }; +G__linked_taginfo G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 }; +G__linked_taginfo G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 }; +G__linked_taginfo G__TVamosPlasticDataDictLN_TVamosPlasticData = { "TVamosPlasticData" , 99 , -1 }; + +/* Reset class/struct taginfo */ +extern "C" void G__cpp_reset_tagtableTVamosPlasticDataDict() { + G__TVamosPlasticDataDictLN_TClass.tagnum = -1 ; + G__TVamosPlasticDataDictLN_TBuffer.tagnum = -1 ; + G__TVamosPlasticDataDictLN_TMemberInspector.tagnum = -1 ; + G__TVamosPlasticDataDictLN_TObject.tagnum = -1 ; + G__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ; + G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ; + G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ; + G__TVamosPlasticDataDictLN_TVamosPlasticData.tagnum = -1 ; +} + + +extern "C" void G__cpp_setup_tagtableTVamosPlasticDataDict() { + + /* Setting up class,struct,union tag entry */ + G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_TClass); + G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_TBuffer); + G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_TMemberInspector); + G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_TObject); + G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR); + G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR); + G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR); + G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR); + G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_TVamosPlasticData),sizeof(TVamosPlasticData),-1,29952,"VamosPlasticData structure",G__setup_memvarTVamosPlasticData,G__setup_memfuncTVamosPlasticData); +} +extern "C" void G__cpp_setupTVamosPlasticDataDict(void) { + G__check_setup_version(30051515,"G__cpp_setupTVamosPlasticDataDict()"); + G__set_cpp_environmentTVamosPlasticDataDict(); + G__cpp_setup_tagtableTVamosPlasticDataDict(); + + G__cpp_setup_inheritanceTVamosPlasticDataDict(); + + G__cpp_setup_typetableTVamosPlasticDataDict(); + + G__cpp_setup_memvarTVamosPlasticDataDict(); + + G__cpp_setup_memfuncTVamosPlasticDataDict(); + G__cpp_setup_globalTVamosPlasticDataDict(); + G__cpp_setup_funcTVamosPlasticDataDict(); + + if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTVamosPlasticDataDict(); + return; +} +class G__cpp_setup_initTVamosPlasticDataDict { + public: + G__cpp_setup_initTVamosPlasticDataDict() { G__add_setup_func("TVamosPlasticDataDict",(G__incsetup)(&G__cpp_setupTVamosPlasticDataDict)); G__call_setup_funcs(); } + ~G__cpp_setup_initTVamosPlasticDataDict() { G__remove_setup_func("TVamosPlasticDataDict"); } +}; +G__cpp_setup_initTVamosPlasticDataDict G__cpp_setup_initializerTVamosPlasticDataDict; + diff --git a/NPLib/Vamos/TVamosPlasticDataDict.h b/NPLib/Vamos/TVamosPlasticDataDict.h new file mode 100644 index 0000000000000000000000000000000000000000..a096865c280d99ac6adec50d00a7facd7ddae460 --- /dev/null +++ b/NPLib/Vamos/TVamosPlasticDataDict.h @@ -0,0 +1,52 @@ +/******************************************************************** +* TVamosPlasticDataDict.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 TVamosPlasticDataDict.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_tagtableTVamosPlasticDataDict(); +extern void G__cpp_setup_inheritanceTVamosPlasticDataDict(); +extern void G__cpp_setup_typetableTVamosPlasticDataDict(); +extern void G__cpp_setup_memvarTVamosPlasticDataDict(); +extern void G__cpp_setup_globalTVamosPlasticDataDict(); +extern void G__cpp_setup_memfuncTVamosPlasticDataDict(); +extern void G__cpp_setup_funcTVamosPlasticDataDict(); +extern void G__set_cpp_environmentTVamosPlasticDataDict(); +} + + +#include "TObject.h" +#include "TMemberInspector.h" +#include "TVamosPlasticData.h" +#include <algorithm> +namespace std { } +using namespace std; + +#ifndef G__MEMFUNCBODY +#endif + +extern G__linked_taginfo G__TVamosPlasticDataDictLN_TClass; +extern G__linked_taginfo G__TVamosPlasticDataDictLN_TBuffer; +extern G__linked_taginfo G__TVamosPlasticDataDictLN_TMemberInspector; +extern G__linked_taginfo G__TVamosPlasticDataDictLN_TObject; +extern G__linked_taginfo G__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR; +extern G__linked_taginfo G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR; +extern G__linked_taginfo G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR; +extern G__linked_taginfo G__TVamosPlasticDataDictLN_TVamosPlasticData; + +/* STUB derived class for protected member access */ diff --git a/NPSimulation/include/AnnularS1.hh b/NPSimulation/include/AnnularS1.hh index 50a8cbfccda7a4d893e2c647e4c057075d51ebc2..2805c6865c47639a86c688b7c7c3e7185aee8aa1 100644 --- a/NPSimulation/include/AnnularS1.hh +++ b/NPSimulation/include/AnnularS1.hh @@ -25,6 +25,7 @@ // C++ headers #include <vector> +using namespace std; // NPTool header #include "VDetector.hh" @@ -32,8 +33,8 @@ // NPTool - ROOT headers #include "TS1Data.h" -using namespace std; - +// Geant4Header +#include "G4MultiFunctionalDetector.hh" class AnnularS1 : public VDetector diff --git a/NPSimulation/include/ComptonTelescope.hh b/NPSimulation/include/ComptonTelescope.hh new file mode 100755 index 0000000000000000000000000000000000000000..7e4b1cd28f75629ff4f707c21e5da5ab90a84b1c --- /dev/null +++ b/NPSimulation/include/ComptonTelescope.hh @@ -0,0 +1,192 @@ +/***************************************************************************** + * 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: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * * + * Creation Date : 10/06/09 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: Define a module of square shape for the Gaspard tracker * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#ifndef ComptonTelescope_h +#define ComptonTelescope_h 1 + +// NPTool headers +#include "VDetector.hh" +#include "TComptonTelescopeData.h" +#include "TComptonTelescopeProcessData.h" + +// Geant4 headers +#include "G4SDManager.hh" +#include "G4MultiFunctionalDetector.hh" +#include "G4Event.hh" + +// C++ headers +#include <vector> +using namespace std; + + + +class ComptonTelescope : public VDetector +//class ComptonTelescope +{ + //////////////////////////////////////////////////// + /////// Default Constructor and Destructor ///////// + //////////////////////////////////////////////////// +public: + ComptonTelescope(); + virtual ~ComptonTelescope(); + + //////////////////////////////////////////////////// + //////// Specific Function of this Class /////////// + //////////////////////////////////////////////////// +public: + // By Position Method + void AddModule(G4ThreeVector TL , + G4ThreeVector BL , + G4ThreeVector BR , + G4ThreeVector CT , + bool wTracker , + bool wCalorimeter); + + // By Angle Method + void AddModule(G4double R , + G4double Theta , + G4double Phi , + G4double beta_u , + G4double beta_v , + G4double beta_w , + bool wTracker , + bool wCalorimeter); + + // Effectively construct Volume + // Avoid to have two time same code for Angle and Point definition + void VolumeMaker(G4int TelescopeNumber , + G4ThreeVector CTpos , + G4RotationMatrix* CTrot , + bool wTracker , + bool wCalorimeter , + G4LogicalVolume* world); + + + ///////////////////////////////////////// + //// Inherite from VDetector class ///// + ///////////////////////////////////////// +public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + // Called in DetecorConstruction::ReadDetextorConfiguration Method + void ReadConfiguration(string Path); + + // Construct detector and inialise sensitive part. + // Called After DetecorConstruction::AddDetector Method + void ConstructDetector(G4LogicalVolume* world); + + // Add Detector branch to the EventTree. + // Called After DetecorConstruction::AddDetector Method + void InitializeRootOutput(); + + // Initialize all scorers necessary for the detector + void InitializeScorers(); + + // Read sensitive part and fill the Root tree. + // Called at in the EventAction::EndOfEventAvtion + void ReadSensitive(const G4Event* event); + + + //////////////////////////////////////////////////// + ///////////Event class to store Data//////////////// + //////////////////////////////////////////////////// +private: + TComptonTelescopeData* m_Event; + TComptonTelescopeProcessData* m_ProcessEvent; + + + //////////////////////////////////////////////////// + ///////////////////// Scorer /////////////////////// + //////////////////////////////////////////////////// +private: + // Silicon Associate Scorer + G4MultiFunctionalDetector* m_TrackerScorer; + + // CsI Associate Scorer + G4MultiFunctionalDetector* m_CalorimeterScorer; + + + //////////////////////////////////////////////////// + //////////////////// Material ////////////////////// + //////////////////////////////////////////////////// +private: + // Declare all material used by the MUST2Array + void InitializeMaterial() ; + // Si + G4Material* m_MaterialSilicon; + // Al + G4Material* m_MaterialAluminium; + // CsI + G4Material* m_MaterialLaBr3; + // Vacuum + G4Material* m_MaterialVacuum ; + + + //////////////////////////////////////////////////// + ///////////////Private intern Data////////////////// + //////////////////////////////////////////////////// +private: + // True if Define by Position, False is Define by angle + vector<bool> m_DefinitionType ; + + // Used for "By Point Definition" + vector<G4ThreeVector> m_X1_Y1 ; // Top Left Corner Position Vector + vector<G4ThreeVector> m_X1_Y128 ; // Bottom Left Corner Position Vector + vector<G4ThreeVector> m_X128_Y1 ; // Bottom Right Corner Position Vector + vector<G4ThreeVector> m_X128_Y128 ; // Center Corner Position Vector + + // Used for "By Angle Definition" + vector<G4double> m_R ; // | + vector<G4double> m_Theta ; // > Spherical coordinate of Strips Silicium Plate + vector<G4double> m_Phi ; // | + + vector<G4double> m_beta_u ; // | + vector<G4double> m_beta_v ; // > Tilt angle of the Telescope + vector<G4double> m_beta_w ; // | + + // Set to true if you want this stage on you telescope + vector<bool> m_wTracker; + vector<bool> m_wCalorimeter; + + // Set to true if you want to see Telescope Frame in your visualisation + bool m_non_sensitive_part_visiualisation ; + + G4int m_NumberOfDSSSD; + G4int m_SizeOfDSSSD; + G4int m_NumberOfStrips; + G4double m_ThicknessOfDSSSD; + G4double m_DistanceInterDSSSD; + G4double m_ThicknessOfCalorimeter; + G4double m_DistanceTrackerCalorimeter; + G4double m_TowerHeight; +}; + + + +namespace COMPTONTELESCOPE +{ + // Resolution + const G4double EnergyResolutionTracker = 0.0064; // = 15 keV of Resolution // Unit is MeV/2.35 + const G4double TimeResolutionTracker = 0.212765957; // = 500ps // Unit is ns/2.35 + const G4double EnergyReolutionCalorimeter = 0.021; // = 52keV of Resolution // Unit is MeV/2.35 + const G4double TimeResolutionCalorimeter = 0.212765957; // = 500ps // Unit is ns/2.35 +} + +#endif diff --git a/NPSimulation/include/ComptonTelescopeScorers.hh b/NPSimulation/include/ComptonTelescopeScorers.hh new file mode 100755 index 0000000000000000000000000000000000000000..502212ac8fc51296fdafb3b9b14f31ab59d2f565 --- /dev/null +++ b/NPSimulation/include/ComptonTelescopeScorers.hh @@ -0,0 +1,225 @@ +/***************************************************************************** + * Copyright (C) 2009 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: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 30/02/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class holds all the scorers needed by the * + * GaspardTracker*** objects. * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#ifndef ComptonTelescopeScorer_h +#define ComptonTelescopeScorer_h 1 + +#include "G4VPrimitiveScorer.hh" +#include "G4THitsMap.hh" + +namespace COMPTONTELESCOPESCORERS +{ + + class ComptonTelescopeScorerProcess : public G4VPrimitiveScorer + { + public: // with description + ComptonTelescopeScorerProcess(G4String name, G4String volumeName, G4String processName = "compt", G4int depth = 0); + virtual ~ComptonTelescopeScorerProcess(); + + protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + + public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + + private: + G4String m_VolumeName; + G4String m_ProcessName; + G4int HCID; + G4THitsMap<G4double>* EvtMap; + }; + + + + class ComptonTelescopeScorerTrackerTowerNumber : public G4VPrimitiveScorer + { + public: // with description + ComptonTelescopeScorerTrackerTowerNumber(G4String name, G4String volumeName, G4int depth = 0); + virtual ~ComptonTelescopeScorerTrackerTowerNumber(); + + protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + + public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + + private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4int>* EvtMap; + }; + + + + class ComptonTelescopeScorerTrackerDSSSDNumber : public G4VPrimitiveScorer + { + public: // with description + ComptonTelescopeScorerTrackerDSSSDNumber(G4String name, G4String volumeName, G4int depth = 0); + virtual ~ComptonTelescopeScorerTrackerDSSSDNumber(); + + protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + + public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + + private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4int>* EvtMap; + }; + + + + class ComptonTelescopeScorerTrackerEnergy : public G4VPrimitiveScorer + { + public: // with description + ComptonTelescopeScorerTrackerEnergy(G4String name, G4String volumeName, G4int depth = 0); + virtual ~ComptonTelescopeScorerTrackerEnergy(); + + protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + + public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + + private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4double>* EvtMap; + }; + + + + + class ComptonTelescopeScorerTrackerTOF : public G4VPrimitiveScorer + { + public: // with description + ComptonTelescopeScorerTrackerTOF(G4String name, G4String volumeName, G4int depth = 0); + virtual ~ComptonTelescopeScorerTrackerTOF(); + + protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + + public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + + private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4double>* EvtMap; + }; + + + + class ComptonTelescopeScorerCalorimeterTowerNumber : public G4VPrimitiveScorer + { + public: // with description + ComptonTelescopeScorerCalorimeterTowerNumber(G4String name, G4String volumeName, G4int depth = 0); + virtual ~ComptonTelescopeScorerCalorimeterTowerNumber(); + + protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + + public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + + private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4int>* EvtMap; + }; + + + + class ComptonTelescopeScorerCalorimeterDetectorNumber : public G4VPrimitiveScorer + { + public: // with description + ComptonTelescopeScorerCalorimeterDetectorNumber(G4String name, G4String volumeName, G4int depth = 0); + virtual ~ComptonTelescopeScorerCalorimeterDetectorNumber(); + + protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + + public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + + private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4int>* EvtMap; + }; + + + class ComptonTelescopeScorerCalorimeterEnergy : public G4VPrimitiveScorer + { + public: // with description + ComptonTelescopeScorerCalorimeterEnergy(G4String name, G4String volumeName, G4int depth = 0); + virtual ~ComptonTelescopeScorerCalorimeterEnergy(); + + protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + + public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + + private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4double>* EvtMap; + }; + +} + +using namespace COMPTONTELESCOPESCORERS; +#endif diff --git a/NPSimulation/include/DetectorConstruction.hh b/NPSimulation/include/DetectorConstruction.hh index 48a79b434bfcc7b5362012110bca6c981d85b8f7..e3b63699879ac04b16ab36fce3454518d864a853 100644 --- a/NPSimulation/include/DetectorConstruction.hh +++ b/NPSimulation/include/DetectorConstruction.hh @@ -73,11 +73,11 @@ private: private: // Data about the target Target* m_Target; - Chamber* m_Chamber; + Chamber* m_Chamber; public: // Getter and Setter Target* GetTarget() {return m_Target;} - Chamber* GetChamber() {return m_Chamber;} + Chamber* GetChamber() {return m_Chamber;} }; #endif diff --git a/NPSimulation/include/Eurogam.hh b/NPSimulation/include/Eurogam.hh new file mode 100755 index 0000000000000000000000000000000000000000..de98ef5a8495a1c77d2e7526d77c98b862e74412 --- /dev/null +++ b/NPSimulation/include/Eurogam.hh @@ -0,0 +1,150 @@ +#ifndef Eurogam_h +#define Eurogam_h 1 +/***************************************************************************** + * Copyright (C) 2009 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: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * * + * Creation Date : December 2010 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class describes the Eurogam germanium detector * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +// C++ header +#include <string> +#include <vector> + +// G4 header defining G4 types +#include "globals.hh" + +// G4 headers +#include "G4ThreeVector.hh" +#include "G4RotationMatrix.hh" +#include "G4LogicalVolume.hh" +#include "G4SDManager.hh" +#include "G4MultiFunctionalDetector.hh" + +// NPTool header +#include "VDetector.hh" +#include "TEurogamData.h" + +using namespace std; + +class Eurogam : public VDetector +{ + //////////////////////////////////////////////////// + /////// Default Constructor and Destructor ///////// + //////////////////////////////////////////////////// +public: + Eurogam() ; + virtual ~Eurogam() ; + + //////////////////////////////////////////////////// + //////// Specific Function of this Class /////////// + //////////////////////////////////////////////////// +public: + // By Angle Method + void AddEurogamModule(G4double R, G4double Theta, G4double Phi, + G4double beta_u, G4double beta_v, G4double beta_w); + + void VolumeMaker(G4int DetectorNumber, + G4ThreeVector DetectorPosition, + G4RotationMatrix* DetectorRotation, + G4LogicalVolume* world); + + + //////////////////////////////////////////////////// + ///////// Inherite from VDetector class /////////// + //////////////////////////////////////////////////// +public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + // Called in DetecorConstruction::ReadDetextorConfiguration Method + void ReadConfiguration(string Path); + + // Construct detector and inialise sensitive part. + // Called After DetecorConstruction::AddDetector Method + void ConstructDetector(G4LogicalVolume* world); + + // Add Detector branch to the EventTree. + // Called After DetecorConstruction::AddDetector Method + void InitializeRootOutput(); + + // Read sensitive part and fill the Root tree. + // Called at in the EventAction::EndOfEventAvtion + void ReadSensitive(const G4Event* event); + + + ///////////////////////////////////////////////// + /////////////////// Materials /////////////////// + ///////////////////////////////////////////////// +private: + void InitializeMaterial(); + G4Material* m_Material_Vacuum; + G4Material* m_Material_Aluminium; + G4Material* m_Material_Silicon; + G4Material* m_Material_Germanium; + + + ///////////////////////////////////////////////// + //////////////////// Scorers //////////////////// + ///////////////////////////////////////////////// +public: + // Initialize all Scorer used by Eurogam + void InitializeScorers(); + +private: + // Eurogam Scorer + G4MultiFunctionalDetector* m_EurogamScorer; + + + //////////////////////////////////////////////////// + ///////////Event class to store Data//////////////// + //////////////////////////////////////////////////// +private: + TEurogamData* m_Event; + + + //////////////////////////////////////////////////// + ///////////////Private intern Data////////////////// + //////////////////////////////////////////////////// +private: + // Used for "By Angle Definition" + vector<G4double> m_R; // | + vector<G4double> m_Theta; // > Spherical coordinate Eurogam volume center + vector<G4double> m_Phi; // | + vector<G4double> m_beta_u; // | + vector<G4double> m_beta_v; // > Tilt angle of the detector + vector<G4double> m_beta_w; // | +}; + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +namespace EUROGAMDETECTOR +{ + // Energy and time Resolution + const G4double ResoTime = 4.2 ;// = 10ns of Resolution // Unit is MeV/2.35 + const G4double ResoEnergy = 0.2 ;// Resolution in % + + // Geometry + const G4double EurogamSize = 90*mm; + const G4double EurogamDepth = 280*mm; + + // definition of the +// const G4double + + // Definition of the crystal +// const G4double CrystalLength = +} + +#endif diff --git a/NPSimulation/include/GaspardTrackerAnnular.hh b/NPSimulation/include/GaspardTrackerAnnular.hh index 0588131883a00af6362f2c88d0243c5bf65dd543..3e6ab8b68d8c08e92b4620397efdc4fe565e1350 100644 --- a/NPSimulation/include/GaspardTrackerAnnular.hh +++ b/NPSimulation/include/GaspardTrackerAnnular.hh @@ -121,11 +121,9 @@ private: namespace GPDANNULAR { // Energy/Time resolutions for the different layers - const G4double ResoFirstStage = 0 ;// = 52keV of Resolution // Unit is MeV/2.35 -// const G4double ResoFirstStage = 0.022 ;// = 52keV of Resolution // Unit is MeV/2.35 - const G4double ResoSecondStage = 0.055 ;// = 130 keV of resolution // Unit is MeV/2.35 - const G4double ResoThirdStage = 0 ;// = 100 keV of resolution // Unit is MeV/2.35 -// const G4double ResoThirdStage = 0.043 ;// = 100 kev of resolution // Unit is MeV/2.35 + const G4double ResoFirstStage = 0.021 ;// = 52keV of Resolution // Unit is MeV/2.35 + const G4double ResoSecondStage = 0.043 ;// = 100 keV of resolution // Unit is MeV/2.35 + const G4double ResoThirdStage = 0.043 ;// = 100 kev of resolution // Unit is MeV/2.35 const G4double ResoTimeGpd = 0.212765957 ;// = 500ps // Unit is ns/2.35 const G4double ResoTimePPAC = 0.106382979 ;// = 250ps // Unit is ns/2.35 diff --git a/NPSimulation/include/GaspardTrackerSquare.hh b/NPSimulation/include/GaspardTrackerSquare.hh index 97354b96fc20f726f84f980efe49f611f603fabc..6d699163276372f2a93d420272e3a6bf7e252461 100644 --- a/NPSimulation/include/GaspardTrackerSquare.hh +++ b/NPSimulation/include/GaspardTrackerSquare.hh @@ -139,11 +139,9 @@ private: namespace GPDSQUARE { // Resolution - const G4double ResoFirstStage = 0 ;// = 52keV of Resolution // Unit is MeV/2.35 -// const G4double ResoFirstStage = 0.022 ;// = 52keV of Resolution // Unit is MeV/2.35 - const G4double ResoSecondStage = 0.055 ;// = 130 keV of resolution // Unit is MeV/2.35 - const G4double ResoThirdStage = 0 ;// = 100 keV of resolution // Unit is MeV/2.35 -// const G4double ResoThirdStage = 0.043 ;// = 100 kev of resolution // Unit is MeV/2.35 + const G4double ResoFirstStage = 0.021 ;// = 52keV of Resolution // Unit is MeV/2.35 + const G4double ResoSecondStage = 0.043 ;// = 130 keV of resolution // Unit is MeV/2.35 + const G4double ResoThirdStage = 0.043 ;// = 100 kev of resolution // Unit is MeV/2.35 const G4double ResoTimeGpd = 0.212765957 ;// = 500ps // Unit is ns/2.35 const G4double ResoTimePPAC = 0.106382979 ;// = 250ps // Unit is ns/2.35 diff --git a/NPSimulation/include/GaspardTrackerTrapezoid.hh b/NPSimulation/include/GaspardTrackerTrapezoid.hh index ec2c74028ead60e1d1cf1887928dc94855fbadd2..c5578b7c833a8440d8b1271adfdfd2d07b14f193 100644 --- a/NPSimulation/include/GaspardTrackerTrapezoid.hh +++ b/NPSimulation/include/GaspardTrackerTrapezoid.hh @@ -139,11 +139,9 @@ private: namespace GPDTRAP { // Energy/Time resolutions for the different layers - const G4double ResoFirstStage = 0 ;// = 52keV of Resolution // Unit is MeV/2.35 -// const G4double ResoFirstStage = 0.022 ;// = 52keV of Resolution // Unit is MeV/2.35 - const G4double ResoSecondStage = 0.055 ;// = 130 keV of resolution // Unit is MeV/2.35 - const G4double ResoThirdStage = 0 ;// = 100 keV of resolution // Unit is MeV/2.35 -// const G4double ResoThirdStage = 0.043 ;// = 100 kev of resolution // Unit is MeV/2.35 + const G4double ResoFirstStage = 0.021 ;// = 52keV of Resolution // Unit is MeV/2.35 + const G4double ResoSecondStage = 0.043 ;// = 130 keV of resolution // Unit is MeV/2.35 + const G4double ResoThirdStage = 0.043 ;// = 100 kev of resolution // Unit is MeV/2.35 const G4double ResoTimeGpd = 0.212765957 ;// = 500ps // Unit is ns/2.35 const G4double ResoTimePPAC = 0.106382979 ;// = 250ps // Unit is ns/2.35 diff --git a/NPSimulation/include/ParisCluster.hh b/NPSimulation/include/ParisCluster.hh index da11f06369b13e68c69b8bd6c97d951f3ae9efb1..5b9e497adef65f791d7f49fe4a41bb3d932aa735 100644 --- a/NPSimulation/include/ParisCluster.hh +++ b/NPSimulation/include/ParisCluster.hh @@ -95,7 +95,7 @@ public: // deriving from ParisModule // This is mandatory since the Paris*** does not derive from VDetector void SetInterCoordPointer(TInteractionCoordinates* interCoord); - TInteractionCoordinates* GetInterCoordPointer() {return ms_InterCoord;}; + TInteractionCoordinates* GetInterCoordPointer() {return ms_InterCoord;}; //////////////////////////////////////////////////// @@ -133,26 +133,30 @@ private: namespace PARISCLUSTER { // Resolution -// const G4double ResoFirstStage = 0; // = 50 keV of Resolution // Unit is MeV/2.35 - const G4double ResoFirstStage = 0.0085; // = 3% at .662 MeV of Resolution // Unit is MeV/2.35 - const G4double ResoSecondStage = 0.0366; // = 13% at .662 MeV of resolution // Unit is MeV/2.35 - const G4double ResoThirdStage = 0.0; // = 50 keV of resolution // Unit is MeV/2.35 +// const G4double ResoFirstStage = 0; // = 50 keV of Resolution // Unit is MeV/2.35 + const G4double ResoFirstStage = 0.0085; // = 3% at .662 MeV of Resolution // Unit is MeV/2.35 + const G4double ResoSecondStage = 0.0366; // = 13% at .662 MeV of resolution // Unit is MeV/2.35 + const G4double ResoThirdStage = 0.0; // = 50 keV of resolution // Unit is MeV/2.35 const G4double ResoTimeGpd = 0.212765957;// = 500ps // Unit is ns/2.35 // Geometry for the mother volume containing the different layers of your dummy shape module const G4double FaceFront = 16.9*cm; const G4double FaceBack = 16.9*cm; - const G4double Length = 21*cm; + //const G4double Length = 21*cm; // for 2x2x2 LaBr + 2x2x6 NaI + const G4double Length = 23.6*cm; // for 2x2x3 LaBr + 2x2x6 NaI // Geometry for the phoswitch // LaBr3 const G4double LaBr3Face = 5.08*cm; - const G4double LaBr3Thickness = 5.08*cm; + //const G4double LaBr3Thickness = 5.08*cm; // for phoswich 2x2x2 + const G4double LaBr3Thickness = 7.62*cm; // for phoswich 2x2x3 + //const G4double LaBr3Thickness = 15.24*cm; // for long LaBr3 2x2x6 const G4double InterSpace = 0.3*cm; // CsI const G4double CsIFace = LaBr3Face; - const G4double CsIThickness = 15.24*cm; + const G4double CsIThickness = 15.24*cm; // for phoswich 2x2x6 + //const G4double CsIThickness = 0.001*cm; // for long LaBr3 // Starting form the LaBr3 and going to the CsI const G4double LaBr3Stage_PosZ = Length* -0.5 + 0.5*LaBr3Thickness; diff --git a/NPSimulation/include/ParisPhoswich.hh b/NPSimulation/include/ParisPhoswich.hh index 650fff8c1c1f918ffe3c7386315ec980641ba84a..68a86c41d7c2925af4f42fd2ad0fac534c3b8113 100644 --- a/NPSimulation/include/ParisPhoswich.hh +++ b/NPSimulation/include/ParisPhoswich.hh @@ -95,7 +95,7 @@ public: // deriving from ParisModule // This is mandatory since the Paris*** does not derive from VDetector void SetInterCoordPointer(TInteractionCoordinates* interCoord); - TInteractionCoordinates* GetInterCoordPointer() {return ms_InterCoord;}; + TInteractionCoordinates* GetInterCoordPointer() {return ms_InterCoord;}; //////////////////////////////////////////////////// @@ -138,25 +138,29 @@ namespace PARISPHOSWICH // Resolution -// const G4double ResoFirstStage = 0; // = 50 keV of Resolution // Unit is MeV/2.35 - const G4double ResoFirstStage = 0.0099; // = 3.5% at .662MeV of Resolution // Unit is MeV/2.35 - const G4double ResoSecondStage = 0.0366; // = 13% at .662 MeV of resolution // Unit is MeV/2.35 - const G4double ResoThirdStage = 0.0213; // = 50 keV of resolution // Unit is MeV/2.35 +// const G4double ResoFirstStage = 0; // = 50 keV of Resolution // Unit is MeV/2.35 + const G4double ResoFirstStage = 0.0099; // = 3.5% at .662MeV of Resolution // Unit is MeV/2.35 + const G4double ResoSecondStage = 0.0366; // = 13% at .662 MeV of resolution // Unit is MeV/2.35 + const G4double ResoThirdStage = 0.0213; // = 50 keV of resolution // Unit is MeV/2.35 const G4double ResoTimeGpd = 0.212765957;// = 500ps // Unit is ns/2.35 // Geometry for the mother volume containing the different layers of your dummy shape module const G4double FaceFront = 5.7*cm; //6.3*cm; const G4double FaceBack = 5.7*cm; //6.3*cm; - const G4double Length = 21*cm; + //const G4double Length = 21*cm; // for 2x2x2 LaBr + 2x2x6 NaI + const G4double Length = 23.6*cm;// for 2x2x3 LaBr + 2x2x6 NaI // Geometry for the phoswitch // LaBr3 const G4double LaBr3Face = 5.08*cm; - const G4double LaBr3Thickness = 5.08*cm; + //const G4double LaBr3Thickness = 5.08*cm; // for phoswich 2x2x2 + const G4double LaBr3Thickness = 7.62*cm; // for phoswich 2x2x3 + //const G4double LaBr3Thickness = 15.24*cm; // for LaBr3 long 2x2x6 inches // CsI const G4double CsIFace = LaBr3Face; - const G4double CsIThickness = 15.24*cm; + const G4double CsIThickness = 15.24*cm; // for phoswich + //const G4double CsIThickness = 0.001*cm; // For LaBr long // Starting form the LaBr3 and going to the CsI const G4double LaBr3Stage_PosZ = Length* -0.5 + 0.5*LaBr3Thickness; diff --git a/NPSimulation/include/ParisScorers.hh b/NPSimulation/include/ParisScorers.hh index 3fdd99c7ee2208731f2f11ced2cb6150a70d71ca..9ed0bd205b99e37b66e0ac7a5262eb325dc11595 100644 --- a/NPSimulation/include/ParisScorers.hh +++ b/NPSimulation/include/ParisScorers.hh @@ -146,6 +146,29 @@ private: G4THitsMap<G4int>* EvtMap; }; +// Added by Anna +class PARISScorerCsIStageCrystalNumber : public G4VPrimitiveScorer +{ +public: // with description + PARISScorerCsIStageCrystalNumber(G4String name, G4String volumeName, G4int depth = 0); + virtual ~PARISScorerCsIStageCrystalNumber(); + +protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + +public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + +private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4int>* EvtMap; +}; + class PARISScorerCsIStageEnergy : public G4VPrimitiveScorer { diff --git a/NPSimulation/include/Particle.hh b/NPSimulation/include/Particle.hh new file mode 100644 index 0000000000000000000000000000000000000000..7be0c5bf9dd08fd4d64b9eef74a22163e53dd97d --- /dev/null +++ b/NPSimulation/include/Particle.hh @@ -0,0 +1,60 @@ +#ifndef __PARTICLE__ +#define __PARTICLE__ +/***************************************************************************** + * 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 : April 2012 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class define particle to be shoot at the end of the generated event * + * It contain a G4ParticleDefinition, a Kinetic energy and the direction to * + * shoot the particle in the laboratory frame. * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +// G4 +#include"G4ParticleDefinition.hh" +#include"G4ThreeVector.hh" + +class Particle{ + +public: // Constructor and Destructor + // Empty constructor (return geantino at zero degree) + Particle(); + ~Particle(); + // Constructor to be used + Particle(G4ParticleDefinition* particle,double T,G4ThreeVector Direction, G4ThreeVector Position,bool ShootStatus=true); + +private: // Private Member + G4ParticleDefinition* m_ParticleDefinition; + double m_T ; + G4ThreeVector m_Direction; + G4ThreeVector m_Position; + bool m_ShootStatus; + +public: // Setter and Getter + // Getter + G4ParticleDefinition* GetParticleDefinition(); + double GetParticleKineticEnergy(); + G4ThreeVector GetParticleMomentumDirection(); + G4ThreeVector GetParticlePosition(); + bool GetShootStatus(); + // Setter + void SetParticleDefinition(G4ParticleDefinition*); + void SetParticleKineticEnergy(double); + void SetParticlePosition(G4ThreeVector); + void SetParticleMomentumDirection(G4ThreeVector); + void SetShootStatus(bool); +}; +#endif \ No newline at end of file diff --git a/NPSimulation/include/ParticleStack.hh b/NPSimulation/include/ParticleStack.hh new file mode 100644 index 0000000000000000000000000000000000000000..62c432e67e4f8476d079581cf5962a818c75ddf1 --- /dev/null +++ b/NPSimulation/include/ParticleStack.hh @@ -0,0 +1,89 @@ +#ifndef __PARTICLESTACK__ +#define __PARTICLESTACK__ +/***************************************************************************** + * 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 : April 2012 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This singleton class contain all the particle to be shooted at the end of * + * the event generation. * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +// NPS +#include"Particle.hh" + +// STL +#include<vector> +#include<string> +using namespace std; + +// G4 +#include "G4ParticleGun.hh" +#include "G4Event.hh" + +class ParticleStack{ +public: + // Designed to be a singleton (i.e. only one instance + // can exist). A member function called Instance is defined, which allows + // the user to get a pointer to the existing instance or to create it if + // it does not yet exist: + // (see the constructor for an explanation of the arguments) + static ParticleStack* getInstance(); + + // The analysis class instance can be deleted by calling the Destroy + // method (NOTE: The class destructor is protected, and can thus not be + // called directly): + static void Destroy(); + +protected: + // Constructor (protected) + ParticleStack(); + + // Destructor (protected) + ~ParticleStack(); + + // Prevent copying + ParticleStack(const ParticleStack& only); + const ParticleStack& operator=(const ParticleStack& only); + +private: + // The static instance of the ParticleStack class: + static ParticleStack* instance; + // The particle gun + G4ParticleGun* m_particleGun; + +private: // Private Member + vector<Particle> m_ParticleStack; + +public: // Getter and Setter + vector<Particle> GetParticleStack(); + void SetParticleStack(vector<Particle>); + G4ParticleGun GetParticleGun(); + +public: // Particle management and shooting method + // EventGenerator use this method to add particle in the stack + void AddParticleToStack(Particle); + + // Search for a specific particle in the stack + Particle SearchAndRemoveParticle(string); + + // Transform the particle name to G4 standard: i.e: 10He -> He10 + string ChangeNameToG4Standard(string); + + // Shoot everything in the stack at the end of the event + void ShootAllParticle(G4Event* anEvent); +}; +#endif \ No newline at end of file diff --git a/NPSimulation/src/ComptonTelescope.cc b/NPSimulation/src/ComptonTelescope.cc new file mode 100755 index 0000000000000000000000000000000000000000..a7539bcadce4f465c9f6a6cbd9d98c900e119668 --- /dev/null +++ b/NPSimulation/src/ComptonTelescope.cc @@ -0,0 +1,1053 @@ +/***************************************************************************** + * 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: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * * + * Creation Date : 10/06/09 * + * Last update : 12/10/09 * + *---------------------------------------------------------------------------* + * Decription: Define a module of square shape for the Gaspard tracker * + * * + *---------------------------------------------------------------------------* + * Comment: * + * + 07/09/09: Fix bug for placing module with (r,theta,phi) method. * + * (N. de Sereville) * + * + 12/10/09: Change scorer scheme (N. de Sereville) * + * + 01/10/10: Fix bug with TInteractionCoordinate map size in Read * + * Sensitive (N. de Sereville) * + * * + * * + *****************************************************************************/ + +// C++ headers +#include <sstream> +#include <string> +#include <cmath> + +// ROOT headers +#include "TString.h" + +// G4 Geometry headers +#include "G4Trd.hh" +#include "G4Box.hh" +#include "G4Trap.hh" + +// G4 various headers +#include "G4MaterialTable.hh" +#include "G4Element.hh" +#include "G4ElementTable.hh" +#include "G4VisAttributes.hh" +#include "G4Colour.hh" +#include "G4RotationMatrix.hh" +#include "G4Transform3D.hh" +#include "G4PVPlacement.hh" +#include "G4PVDivision.hh" + +// NPTool headers +#include "ComptonTelescope.hh" +#include "ComptonTelescopeScorers.hh" +#include "GeneralScorers.hh" +#include "RootOutput.h" + +// CLHEP +#include "CLHEP/Random/RandGauss.h" + +using namespace std; +using namespace CLHEP; + +using namespace COMPTONTELESCOPE; + + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +ComptonTelescope::ComptonTelescope() + : m_Event(new TComptonTelescopeData()), + m_ProcessEvent(new TComptonTelescopeProcessData()), + m_NumberOfDSSSD(1), + m_SizeOfDSSSD(100), + m_NumberOfStrips(50), + m_ThicknessOfDSSSD(2), + m_DistanceInterDSSSD(7), + m_ThicknessOfCalorimeter(50), + m_DistanceTrackerCalorimeter(7) + +{ + // calculate tower height + m_TowerHeight = (m_NumberOfDSSSD-1) * m_DistanceInterDSSSD + m_ThicknessOfDSSSD + + m_DistanceTrackerCalorimeter + m_ThicknessOfCalorimeter; + + // initialize materials + InitializeMaterial(); +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +ComptonTelescope::~ComptonTelescope() +{ + // Materials + delete m_MaterialSilicon; + delete m_MaterialAluminium; + delete m_MaterialLaBr3; + delete m_MaterialVacuum; + + // Data + delete m_Event; + + // Scorers + delete m_TrackerScorer; + delete m_CalorimeterScorer; +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void ComptonTelescope::AddModule(G4ThreeVector X1_Y1 , + G4ThreeVector X128_Y1 , + G4ThreeVector X1_Y128 , + G4ThreeVector X128_Y128 , + bool wTracker , + bool wCalorimeter) +{ + m_DefinitionType.push_back(true) ; + + m_X1_Y1.push_back(X1_Y1) ; + m_X128_Y1.push_back(X128_Y1) ; + m_X1_Y128.push_back(X1_Y128) ; + m_X128_Y128.push_back(X128_Y128) ; + m_wTracker.push_back(wTracker) ; + m_wCalorimeter.push_back(wCalorimeter) ; + + m_R.push_back(0) ; + m_Theta.push_back(0) ; + m_Phi.push_back(0) ; + m_beta_u.push_back(0) ; + m_beta_v.push_back(0) ; + m_beta_w.push_back(0) ; +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void ComptonTelescope::AddModule(G4double R , + G4double Theta , + G4double Phi , + G4double beta_u , + G4double beta_v , + G4double beta_w , + bool wTracker , + bool wCalorimeter) +{ + G4ThreeVector empty = G4ThreeVector(0, 0, 0); + + m_DefinitionType.push_back(false); + + m_R.push_back(R) ; + m_Theta.push_back(Theta) ; + m_Phi.push_back(Phi) ; + m_beta_u.push_back(beta_u) ; + m_beta_v.push_back(beta_v) ; + m_beta_w.push_back(beta_w) ; + m_wTracker.push_back(wTracker) ; + m_wCalorimeter.push_back(wCalorimeter) ; + + m_X1_Y1.push_back(empty) ; + m_X128_Y1.push_back(empty) ; + m_X1_Y128.push_back(empty) ; + m_X128_Y128.push_back(empty) ; +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void ComptonTelescope::VolumeMaker(G4int TelescopeNumber, + G4ThreeVector CTpos, + G4RotationMatrix* CTrot, + bool wTracker, + bool wCalorimeter, + G4LogicalVolume* world) +{ + G4double NbrTelescopes = TelescopeNumber ; + G4String DetectorNumber ; + ostringstream Number ; + Number << NbrTelescopes ; + DetectorNumber = Number.str() ; + + //////////////////////////////////////////////////////////////// + ////////////// Starting Volume Definition ////////////////////// + //////////////////////////////////////////////////////////////// + G4String Name = "ComptonTelescopeTower" + DetectorNumber; + + // calculate tower height + m_TowerHeight = (m_NumberOfDSSSD-1) * m_DistanceInterDSSSD + m_ThicknessOfDSSSD + + m_DistanceTrackerCalorimeter + m_ThicknessOfCalorimeter; + + G4Box* solidComptonTelescope = new G4Box(Name, 0.5*m_SizeOfDSSSD, 0.5*m_SizeOfDSSSD, 0.5*m_TowerHeight); + G4LogicalVolume* logicComptonTelescope = new G4LogicalVolume(solidComptonTelescope, m_MaterialVacuum, Name, 0, 0, 0); + + new G4PVPlacement(G4Transform3D(*CTrot, CTpos), logicComptonTelescope, Name, world, false, 0); + + logicComptonTelescope->SetVisAttributes(G4VisAttributes::Invisible); + if (m_non_sensitive_part_visiualisation) logicComptonTelescope->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); + + + //////////////////////////////////////////////////////////// + //////////////// Tracker Construction ////////////////////// + //////////////////////////////////////////////////////////// + if (wTracker) { + // tracker detector itself + G4Box* solidTracker = new G4Box("solidTracker", 0.5*m_SizeOfDSSSD, 0.5*m_SizeOfDSSSD, 0.5*m_ThicknessOfDSSSD); + G4LogicalVolume* logicTracker = new G4LogicalVolume(solidTracker, m_MaterialSilicon, "logicTracker", 0, 0, 0); + + G4ThreeVector positionTracker; + for (G4int i = 0; i < m_NumberOfDSSSD; ++i) { // loop on number of DSSSDs + G4double position = -m_TowerHeight/2 + m_ThicknessOfDSSSD/2 + i*m_DistanceInterDSSSD; + positionTracker = G4ThreeVector(0, 0, position); + G4String nameTracker = Name + "_Tracker"; + ostringstream index; + index << i; + nameTracker = nameTracker + index.str(); + new G4PVPlacement(0, positionTracker, logicTracker, nameTracker, logicComptonTelescope, false, i); + } // end loop on number of DSSSDs + + // set tracker sensible + logicTracker->SetSensitiveDetector(m_TrackerScorer); + + // visualisation of tracker + G4VisAttributes* TrackerVisAtt = new G4VisAttributes(G4Colour(0.0, 0.0, 0.9)); // blue + logicTracker->SetVisAttributes(TrackerVisAtt); + } + + + //////////////////////////////////////////////////////////////// + ///////////////// Calorimeter Construction ///////////////////// + //////////////////////////////////////////////////////////////// + if (wCalorimeter) { + // calorimeter detector + G4Box* solidCalorimeter = new G4Box("solidCalorimeter", 0.5*m_SizeOfDSSSD, 0.5*m_SizeOfDSSSD, 0.5*m_ThicknessOfCalorimeter); + G4LogicalVolume* logicCalorimeter = new G4LogicalVolume(solidCalorimeter, m_MaterialSilicon, "logicCalorimeter", 0, 0, 0); + + G4double position = m_TowerHeight/2 - m_ThicknessOfCalorimeter/2; + G4ThreeVector positionCalorimeter = G4ThreeVector(0, 0, position); + new G4PVPlacement(0, positionCalorimeter, logicCalorimeter, Name + "_Calorimeter", logicComptonTelescope, false, 0); + + // Set Third Stage sensible + logicCalorimeter->SetSensitiveDetector(m_CalorimeterScorer); + + ///Visualisation of Third Stage + G4VisAttributes* CalorimeterVisAtt = new G4VisAttributes(G4Colour(0.0, 0.9, 0.0)); // green + logicCalorimeter->SetVisAttributes(CalorimeterVisAtt); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Virtual Method of VDetector class + +// Read stream at Configfile to pick-up parameters of detector (Position,...) +// Called in DetecorConstruction::ReadDetextorConfiguration Method +void ComptonTelescope::ReadConfiguration(string Path) +{ + ifstream ConfigFile ; + ConfigFile.open(Path.c_str()) ; + string LineBuffer ; + string DataBuffer ; + + // A:X1_Y1 --> X:1 Y:1 + // B:X128_Y1 --> X:128 Y:1 + // C:X1_Y128 --> X:1 Y:128 + // D:X128_Y128 --> X:128 Y:128 + + G4double Ax , Bx , Cx , Dx , Ay , By , Cy , Dy , Az , Bz , Cz , Dz ; + G4ThreeVector A , B , C , D ; + G4double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0 ; + + G4int TRACKER = 0, CALORIMETER = 0; + + bool ReadingStatus = false ; + + bool check_A = false ; + bool check_C = false ; + bool check_B = false ; + bool check_D = false ; + + bool check_Theta = false ; + bool check_Phi = false ; + bool check_R = false ; + + while (!ConfigFile.eof()) { + getline(ConfigFile, LineBuffer); + if (LineBuffer.compare(0, 16, "ComptonTelescope") == 0) { + G4cout << "///" << G4endl ; + G4cout << "ComptonTelescope found: " << G4endl ; + ReadingStatus = true ; + } + else ReadingStatus = false; + + while (ReadingStatus) { + + ConfigFile >> DataBuffer; + + // Comment Line + if (DataBuffer.compare(0, 1, "%") == 0) { + ConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); + } + + // Finding another telescope (safety), toggle out + else if (DataBuffer.compare(0, 16, "ComptonTelescope") == 0) { +// cout << "WARNING: Another Detector is find before standard sequence of Token, Error may occured in Telecope definition" << endl; +// ReadingStatus = false; + } + + // Position method + else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) { + check_A = true; + ConfigFile >> DataBuffer ; + Ax = atof(DataBuffer.c_str()) ; + Ax = Ax * mm ; + ConfigFile >> DataBuffer ; + Ay = atof(DataBuffer.c_str()) ; + Ay = Ay * mm ; + ConfigFile >> DataBuffer ; + Az = atof(DataBuffer.c_str()) ; + Az = Az * mm ; + + A = G4ThreeVector(Ax, Ay, Az); + cout << "X1 Y1 corner position : " << A << endl; + } + + else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) { + check_B = true; + ConfigFile >> DataBuffer ; + Bx = atof(DataBuffer.c_str()) ; + Bx = Bx * mm ; + ConfigFile >> DataBuffer ; + By = atof(DataBuffer.c_str()) ; + By = By * mm ; + ConfigFile >> DataBuffer ; + Bz = atof(DataBuffer.c_str()) ; + Bz = Bz * mm ; + + B = G4ThreeVector(Bx, By, Bz); + cout << "X128 Y1 corner position : " << B << endl; + } + + else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) { + check_C = true; + ConfigFile >> DataBuffer ; + Cx = atof(DataBuffer.c_str()) ; + Cx = Cx * mm ; + ConfigFile >> DataBuffer ; + Cy = atof(DataBuffer.c_str()) ; + Cy = Cy * mm ; + ConfigFile >> DataBuffer ; + Cz = atof(DataBuffer.c_str()) ; + Cz = Cz * mm ; + + C = G4ThreeVector(Cx, Cy, Cz); + cout << "X1 Y128 corner position : " << C << endl; + } + + else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) { + check_D = true; + ConfigFile >> DataBuffer ; + Dx = atof(DataBuffer.c_str()) ; + Dx = Dx * mm ; + ConfigFile >> DataBuffer ; + Dy = atof(DataBuffer.c_str()) ; + Dy = Dy * mm ; + ConfigFile >> DataBuffer ; + Dz = atof(DataBuffer.c_str()) ; + Dz = Dz * mm ; + + D = G4ThreeVector(Dx, Dy, Dz); + cout << "X128 Y128 corner position : " << D << endl; + } + + // Angle method + else if (DataBuffer.compare(0, 2, "R=") == 0) { + check_R = true; + ConfigFile >> DataBuffer ; + R = atof(DataBuffer.c_str()) ; + R = R * mm; + cout << "R: " << R / mm << endl; + } + + else if (DataBuffer.compare(0, 6, "THETA=") == 0) { + check_Theta = true; + ConfigFile >> DataBuffer ; + Theta = atof(DataBuffer.c_str()) ; + Theta = Theta * deg; + cout << "Theta: " << Theta / deg << endl; + } + + else if (DataBuffer.compare(0, 4, "PHI=") == 0) { + check_Phi = true; + ConfigFile >> DataBuffer ; + Phi = atof(DataBuffer.c_str()) ; + Phi = Phi * deg; + cout << "Phi: " << Phi / deg << endl; + } + + else if (DataBuffer.compare(0, 5, "BETA=") == 0) { + ConfigFile >> DataBuffer ; + beta_u = atof(DataBuffer.c_str()) ; + beta_u = beta_u * deg ; + ConfigFile >> DataBuffer ; + beta_v = atof(DataBuffer.c_str()) ; + beta_v = beta_v * deg ; + ConfigFile >> DataBuffer ; + beta_w = atof(DataBuffer.c_str()) ; + beta_w = beta_w * deg ; + G4cout << "Beta: " << beta_u / deg << " " << beta_v / deg << " " << beta_w / deg << G4endl ; + } + + else if (DataBuffer.compare(0, 11, "SIZE_DSSSD=") == 0) { + ConfigFile >> DataBuffer; + m_SizeOfDSSSD = atof(DataBuffer.c_str()); + m_SizeOfDSSSD = m_SizeOfDSSSD * mm; + G4cout << "Size DSSSD: " << m_SizeOfDSSSD / mm << G4endl; + } + + else if (DataBuffer.compare(0, 13, "NUMBER_DSSSD=") == 0) { + ConfigFile >> DataBuffer; + m_NumberOfDSSSD = atoi(DataBuffer.c_str()); + G4cout << "Number of DSSSD: " << m_NumberOfDSSSD << G4endl; + } + + else if (DataBuffer.compare(0, 21, "DISTANCE_INTER_DSSSD=") == 0) { + ConfigFile >> DataBuffer; + m_DistanceInterDSSSD = atof(DataBuffer.c_str()); + m_DistanceInterDSSSD = m_DistanceInterDSSSD * mm; + G4cout << "Distance Inter DSSSD: " << m_DistanceInterDSSSD / mm << G4endl; + } + + else if (DataBuffer.compare(0, 16, "THICKNESS_DSSSD=") == 0) { + ConfigFile >> DataBuffer; + m_ThicknessOfDSSSD = atof(DataBuffer.c_str()); + m_ThicknessOfDSSSD = m_ThicknessOfDSSSD * mm; + G4cout << "Thickness DSSSD: " << m_ThicknessOfDSSSD / mm << G4endl; + } + + else if (DataBuffer.compare(0, 14, "NUMBER_STRIPS=") == 0) { + ConfigFile >> DataBuffer; + m_NumberOfStrips = atoi(DataBuffer.c_str()); + G4cout << "Number of STRIPS: " << m_NumberOfStrips << G4endl; + } + + else if (DataBuffer.compare(0, 29, "DISTANCE_TRACKER_CALORIMETER=") == 0) { + ConfigFile >> DataBuffer; + m_DistanceTrackerCalorimeter = atof(DataBuffer.c_str()); + m_DistanceTrackerCalorimeter = m_DistanceTrackerCalorimeter * mm; + G4cout << "Distance Tracker Calorimeter: " << m_DistanceTrackerCalorimeter / mm << G4endl; + } + + else if (DataBuffer.compare(0, 22, "THICKNESS_CALORIMETER=") == 0) { + ConfigFile >> DataBuffer; + m_ThicknessOfCalorimeter = atof(DataBuffer.c_str()); + m_ThicknessOfCalorimeter = m_ThicknessOfCalorimeter * mm; + G4cout << "Thickness Calorimeter: " << m_ThicknessOfCalorimeter / mm << G4endl; + } + + else if (DataBuffer.compare(0, 8, "TRACKER=") == 0) { + ConfigFile >> DataBuffer; + TRACKER = atof(DataBuffer.c_str()) ; + G4cout << "Tracker: " << TRACKER << G4endl; + } + + else if (DataBuffer.compare(0, 12, "CALORIMETER=") == 0) { + ConfigFile >> DataBuffer; + CALORIMETER = atof(DataBuffer.c_str()) ; + G4cout << "Calorimeter: " << CALORIMETER << G4endl; + } + + else if (DataBuffer.compare(0, 4, "VIS=") == 0) { + ConfigFile >> DataBuffer; + if (DataBuffer.compare(0, 3, "all") == 0) m_non_sensitive_part_visiualisation = true; + } + + else { + ReadingStatus = false; + G4cout << "other token " << DataBuffer << G4endl; + G4cout << "WARNING: Wrong Token, ComptonTelescope not added" << G4endl; + } + + //Add The previously define telescope + //With position method + if ((check_A && check_B && check_C && check_D) && !(check_Theta && check_Phi && check_R)) { + ReadingStatus = false ; + check_A = false ; + check_C = false ; + check_B = false ; + check_D = false ; + + AddModule(A , + B , + C , + D , + TRACKER == 1 , + CALORIMETER == 1); + } + + //with angle method + if ((check_Theta && check_Phi && check_R) && !(check_A && check_B && check_C && check_D)) { + ReadingStatus = false ; + check_Theta = false ; + check_Phi = false ; + check_R = false ; + + AddModule(R , + Theta , + Phi , + beta_u , + beta_v , + beta_w , + TRACKER == 1 , + CALORIMETER == 1); + } + + } + } +} + +// Construct detector and inialise sensitive part. +// Called After DetecorConstruction::AddDetector Method +void ComptonTelescope::ConstructDetector(G4LogicalVolume* world) +{ + G4RotationMatrix* CTrot = NULL ; + G4ThreeVector CTpos = G4ThreeVector(0, 0, 0) ; + G4ThreeVector CTu = G4ThreeVector(0, 0, 0) ; + G4ThreeVector CTv = G4ThreeVector(0, 0, 0) ; + G4ThreeVector CTw = G4ThreeVector(0, 0, 0) ; + G4ThreeVector CTCenter = G4ThreeVector(0, 0, 0) ; + bool FirstStage = true; + bool SecondStage = true; + + G4int NumberOfTelescope = m_DefinitionType.size() ; + + for (G4int i = 0; i < NumberOfTelescope; i++) { + // By Point + if (m_DefinitionType[i]) { + // (u,v,w) unitary vector associated to telescope referencial + // (u,v) // to silicon plan + // w perpendicular to (u,v) plan and pointing ThirdStage + CTu = m_X128_Y1[i] - m_X1_Y1[i]; + CTu = CTu.unit(); + + CTv = m_X1_Y128[i] - m_X1_Y1[i]; + CTv = CTv.unit(); + + CTw = CTu.cross(CTv); + CTw = CTw.unit(); + + CTCenter = (m_X1_Y1[i] + m_X1_Y128[i] + m_X128_Y1[i] + m_X128_Y128[i]) / 4; + + // Passage Matrix from Lab Referential to Telescope Referential + CTrot = new G4RotationMatrix(CTu, CTv, CTw); + // translation to place Telescope + CTpos = CTw * m_TowerHeight * 0.5 + CTCenter; + } + + // By Angle + else { + G4double Theta = m_Theta[i] ; + G4double Phi = m_Phi[i] ; + + // (u,v,w) unitary vector associated to telescope referencial + // (u,v) // to silicon plan + // w perpendicular to (u,v) plan and pointing ThirdStage + // Phi is angle between X axis and projection in (X,Y) plan + // Theta is angle between position vector and z axis + G4double wX = m_R[i] * sin(Theta / rad) * cos(Phi / rad); + G4double wY = m_R[i] * sin(Theta / rad) * sin(Phi / rad); + G4double wZ = m_R[i] * cos(Theta / rad); + CTw = G4ThreeVector(wX, wY, wZ); + + // vector corresponding to the center of the module + CTCenter = CTw; + + // vector parallel to one axis of silicon plane + G4double ii = cos(Theta / rad) * cos(Phi / rad); + G4double jj = cos(Theta / rad) * sin(Phi / rad); + G4double kk = -sin(Theta / rad); + G4ThreeVector Y = G4ThreeVector(ii, jj, kk); + + CTw = CTw.unit(); + CTu = CTw.cross(Y); + CTv = CTw.cross(CTu); + CTv = CTv.unit(); + CTu = CTu.unit(); + + // Passage Matrix from Lab Referential to Telescope Referential + // MUST2 + CTrot = new G4RotationMatrix(CTu, CTv, CTw); + // Telescope is rotate of Beta angle around CTv axis. + CTrot->rotate(m_beta_u[i], CTu); + CTrot->rotate(m_beta_v[i], CTv); + CTrot->rotate(m_beta_w[i], CTw); + // translation to place Telescope + CTpos = CTw * m_TowerHeight * 0.5 + CTCenter; + } + + FirstStage = m_wTracker[i] ; + SecondStage = m_wCalorimeter[i] ; + + VolumeMaker(i + 1, CTpos, CTrot, FirstStage, SecondStage, world); + } + + delete CTrot ; +} + + + +// Connect the GaspardTrackingData class to the output TTree +// of the simulation +void ComptonTelescope::InitializeRootOutput() +{ + RootOutput *pAnalysis = RootOutput::getInstance(); + TTree *pTree = pAnalysis->GetTree(); + pTree->Branch("ComptonTelescope", "TComptonTelescopeData", &m_Event); + pTree->Branch("ComptonTelescopeProcess", "TComptonTelescopeProcessData", &m_ProcessEvent); +} + + + +// Read sensitive part and fill the Root tree. +// Called at in the EventAction::EndOfEventAvtion +void ComptonTelescope::ReadSensitive(const G4Event* event) +{ + m_Event->Clear(); + + ////////////////////////////////////////////////////////////////////////////////////// + //////////////////////// Used to Read Event Map of detector ////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + // Tracker + std::map<G4int, G4int*>::iterator TowerNumber_itr; + std::map<G4int, G4int*>::iterator DSSSDNumber_itr; + std::map<G4int, G4double*>::iterator Energy_itr; + std::map<G4int, G4double*>::iterator Time_itr; +/* std::map<G4int, G4int*>::iterator X_itr; + std::map<G4int, G4int*>::iterator Y_itr; + std::map<G4int, G4double*>::iterator Pos_X_itr; + std::map<G4int, G4double*>::iterator Pos_Y_itr; + std::map<G4int, G4double*>::iterator Pos_Z_itr; + std::map<G4int, G4double*>::iterator Ang_Theta_itr; + std::map<G4int, G4double*>::iterator Ang_Phi_itr; +*/ + G4THitsMap<G4int>* TowerNumberHitMap; + G4THitsMap<G4int>* DSSSDNumberHitMap; + G4THitsMap<G4double>* EnergyHitMap; + G4THitsMap<G4double>* TimeHitMap; +/* G4THitsMap<G4int>* XHitMap; + G4THitsMap<G4int>* YHitMap; + G4THitsMap<G4double>* PosXHitMap; + G4THitsMap<G4double>* PosYHitMap; + G4THitsMap<G4double>* PosZHitMap; + G4THitsMap<G4double>* AngThetaHitMap; + G4THitsMap<G4double>* AngPhiHitMap; +*/ + // Calorimeter + std::map<G4int, G4int*>::iterator CalorimeterTowerNumber_itr; + std::map<G4int, G4int*>::iterator CalorimeterDetectorNumber_itr; + std::map<G4int, G4double*>::iterator CalorimeterEnergy_itr; +// std::map<G4int, G4double*>::iterator CalorimeterTime_itr; + G4THitsMap<G4int>* CalorimeterTowerNumberHitMap; + G4THitsMap<G4int>* CalorimeterDetectorNumberHitMap; + G4THitsMap<G4double>* CalorimeterEnergyHitMap; +// G4THitsMap<G4double>* CalorimeterTimeHitMap; + + + // Read scorers associated to the tracker part + // tower number + G4int TrackTowCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/TowerNumber"); + TowerNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(TrackTowCollectionID)); + TowerNumber_itr = TowerNumberHitMap->GetMap()->begin(); + + // detector number + G4int TrackDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/DSSSDNumber"); + DSSSDNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(TrackDetCollectionID)); + DSSSDNumber_itr = DSSSDNumberHitMap->GetMap()->begin(); + + // energy + G4int TrackEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/Energy"); + EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(TrackEnergyCollectionID)) ; + Energy_itr = EnergyHitMap->GetMap()->begin(); + + // time of flight + G4int TrackTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/Time"); + TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(TrackTimeCollectionID)); + Time_itr = TimeHitMap->GetMap()->begin(); +/* + //Track Number X + G4int TrackXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/NumberX"); + XHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(TrackXCollectionID)); + X_itr = XHitMap->GetMap()->begin(); + + //Track Number Y + G4int TrackYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/TrackNumberY") ; + YHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(TrackYCollectionID)); + Y_itr = YHitMap->GetMap()->begin(); + + //Interaction Coordinate X + G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/InterCoordX") ; + PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID)) ; + Pos_X_itr = PosXHitMap->GetMap()->begin() ; + + //Interaction Coordinate Y + G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/InterCoordY") ; + PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID)) ; + Pos_Y_itr = PosYHitMap->GetMap()->begin() ; + + //Interaction Coordinate Z + G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/InterCoordZ") ; + PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID)) ; + Pos_Z_itr = PosXHitMap->GetMap()->begin() ; + + //Interaction Coordinate Angle Theta + G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/InterCoordAngTheta") ; + AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID)) ; + Ang_Theta_itr = AngThetaHitMap->GetMap()->begin() ; + + //Interaction Coordinate Angle Phi + G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/InterCoordAngPhi") ; + AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID)) ; + Ang_Phi_itr = AngPhiHitMap->GetMap()->begin() ; +*/ + + // read the scorers associated to the calorimeter + // tower number + G4int CaloTowCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CalorimeterScorerComptonTelescope/TowerNumber"); + CalorimeterTowerNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CaloTowCollectionID)); + CalorimeterTowerNumber_itr = CalorimeterTowerNumberHitMap->GetMap()->begin(); + + // detector number + G4int CaloDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CalorimeterScorerComptonTelescope/DetectorNumber"); + CalorimeterDetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CaloDetCollectionID)); + CalorimeterDetectorNumber_itr = CalorimeterDetectorNumberHitMap->GetMap()->begin(); + + // energy + G4int CaloEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CalorimeterScorerComptonTelescope/Energy"); + CalorimeterEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CaloEnergyCollectionID)) ; + CalorimeterEnergy_itr = CalorimeterEnergyHitMap->GetMap()->begin(); +/* + // time of flight + G4int CaloTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CalorimeterScorerComptonTelescope/Time"); + CalorimeterTimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CaloTimeCollectionID)); + CalorimeterTime_itr = CalorimeterTimeHitMap->GetMap()->begin(); +*/ + + // Calorimeter +// G4int sizeCaloTower = ->entries(); + + // Check the size of different map + G4int sizeTrackerNtower = TowerNumberHitMap->entries(); + G4int sizeTrackerNdsssd = DSSSDNumberHitMap->entries(); sizeTrackerNdsssd *= 1; + G4int sizeTrackerE = EnergyHitMap->entries(); + G4int sizeTrackerT = TimeHitMap->entries(); +// G4cout << sizeTrackerNtower << "\t" << sizeTrackerNdsssd << "\t" << sizeTrackerE << "\t" << sizeTrackerT << G4endl; +// G4int sizeTrackerX = XHitMap->entries(); +// G4int sizeTrackerY = YHitMap->entries(); + +// if (sizeE != sizeT || sizeT != sizeX || sizeX != sizeY) { + if (sizeTrackerE != sizeTrackerT) { + G4cout << "No match size Si Event Map: sE:" << sizeTrackerE << " sT:" << sizeTrackerT << G4endl ; + return; + } + + G4double Etot = 0; + + // Loop on FirstStage number + for (G4int l = 0; l < sizeTrackerNtower; l++) { + G4double N = *(TowerNumber_itr->second); + G4int NTrackID = TowerNumber_itr->first - N; +// G4cout << N << "\t" << NTrackID << G4endl; + + if (N > 0) { + // Fill tower number + m_Event->SetCTTrackerFrontETowerNbr(N); + m_Event->SetCTTrackerFrontTTowerNbr(N); + m_Event->SetCTTrackerBackEDetectorNbr(N); + m_Event->SetCTTrackerBackTDetectorNbr(N); + + // Energy + Energy_itr = EnergyHitMap->GetMap()->begin(); + for (G4int l = 0 ; l < sizeTrackerE ; l++) { + G4int ETrackID = Energy_itr->first - N; + G4double E = *(Energy_itr->second); + if (ETrackID == NTrackID) { + Etot += E; + m_Event->SetCTTrackerFrontEEnergy(RandGauss::shoot(E, EnergyResolutionTracker)); +// m_Event->SetCTTrackerBackEEnergy(RandGauss::shoot(E, EnergyResolutionTracker)); + } + Energy_itr++; + } + + // Time + Time_itr = TimeHitMap->GetMap()->begin(); + for (G4int h = 0 ; h < sizeTrackerT ; h++) { + G4int TTrackID = Time_itr->first - N; + G4double T = *(Time_itr->second); + if (TTrackID == NTrackID) { + m_Event->SetCTTrackerFrontTTime(RandGauss::shoot(T, TimeResolutionTracker)); + m_Event->SetCTTrackerBackTTime(RandGauss::shoot(T, TimeResolutionTracker)); + } + Time_itr++; + } +/* + // X + X_itr = XHitMap->GetMap()->begin(); + for (G4int h = 0 ; h < sizeTrackerX ; h++) { + G4int XTrackID = X_itr->first - N; + G4int X = *(X_itr->second); + if (XTrackID == NTrackID) { + m_Event->SetCTFrontEStripNbr(X); + m_Event->SetCTFrontTStripNbr(X); + } + + X_itr++; + } + + // Y + Y_itr = YHitMap->GetMap()->begin() ; + for (G4int h = 0 ; h < sizeTrackerY ; h++) { + G4int YTrackID = Y_itr->first - N; + G4int Y = *(Y_itr->second); + if (YTrackID == NTrackID) { + m_Event->SetCTBackEStripNbr(Y); + m_Event->SetCTBackTStripNbr(Y); + } + + Y_itr++; + } + + // Pos X + Pos_X_itr = PosXHitMap->GetMap()->begin(); + for (G4int h = 0; h < PosXHitMap->entries(); h++) { + G4int PosXTrackID = Pos_X_itr->first - N ; + G4double PosX = *(Pos_X_itr->second) ; + if (PosXTrackID == NTrackID) { + ms_InterCoord->SetDetectedPositionX(PosX) ; + } + Pos_X_itr++; + } + + // Pos Y + Pos_Y_itr = PosYHitMap->GetMap()->begin(); + for (G4int h = 0; h < PosYHitMap->entries(); h++) { + G4int PosYTrackID = Pos_Y_itr->first - N ; + G4double PosY = *(Pos_Y_itr->second) ; + if (PosYTrackID == NTrackID) { + ms_InterCoord->SetDetectedPositionY(PosY) ; + } + Pos_Y_itr++; + } + + // Pos Z + Pos_Z_itr = PosZHitMap->GetMap()->begin(); + for (G4int h = 0; h < PosZHitMap->entries(); h++) { + G4int PosZTrackID = Pos_Z_itr->first - N ; + G4double PosZ = *(Pos_Z_itr->second) ; + if (PosZTrackID == NTrackID) { + ms_InterCoord->SetDetectedPositionZ(PosZ) ; + } + Pos_Z_itr++; + } + + // Angle Theta + Ang_Theta_itr = AngThetaHitMap->GetMap()->begin(); + for (G4int h = 0; h < AngThetaHitMap->entries(); h++) { + G4int AngThetaTrackID = Ang_Theta_itr->first - N ; + G4double AngTheta = *(Ang_Theta_itr->second) ; + if (AngThetaTrackID == NTrackID) { + ms_InterCoord->SetDetectedAngleTheta(AngTheta) ; + } + Ang_Theta_itr++; + } + + // Angle Phi + Ang_Phi_itr = AngPhiHitMap->GetMap()->begin(); + for (G4int h = 0; h < AngPhiHitMap->entries(); h++) { + G4int AngPhiTrackID = Ang_Phi_itr->first - N ; + G4double AngPhi = *(Ang_Phi_itr->second) ; + if (AngPhiTrackID == NTrackID) { + ms_InterCoord->SetDetectedAnglePhi(AngPhi) ; + } + Ang_Phi_itr++; + } +*/ +/* + // Third Stage + ThirdStageEnergy_itr = ThirdStageEnergyHitMap->GetMap()->begin() ; + for (G4int h = 0 ; h < ThirdStageEnergyHitMap->entries() ; h++) { + G4int ThirdStageEnergyTrackID = ThirdStageEnergy_itr->first - N; + G4double ThirdStageEnergy = *(ThirdStageEnergy_itr->second) ; + + if (ThirdStageEnergyTrackID == NTrackID) { + m_Event->SetGPDTrkThirdStageEEnergy(RandGauss::shoot(ThirdStageEnergy, ResoThirdStage)); + m_Event->SetGPDTrkThirdStageEPadNbr(1); + m_Event->SetGPDTrkThirdStageTPadNbr(1); + m_Event->SetGPDTrkThirdStageTTime(1); + m_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Square"] + N); + m_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Square"] + N); + } + + ThirdStageEnergy_itr++; + } +*/ + } + TowerNumber_itr++; + + } + + // Fill total energy here + if (Etot > 0) m_Event->SetCTTrackerBackEEnergy(RandGauss::shoot(Etot, EnergyResolutionTracker)); + + // clear map for next event + TowerNumberHitMap -> clear(); + DSSSDNumberHitMap -> clear(); + EnergyHitMap -> clear(); + TimeHitMap -> clear(); +/* XHitMap ->clear() ; + YHitMap ->clear() ; + PosXHitMap ->clear(); + PosYHitMap ->clear(); + PosZHitMap ->clear(); + AngThetaHitMap ->clear(); + AngPhiHitMap ->clear();*/ +// ThirdStageEnergyHitMap ->clear(); + + /////////////////////////////////////////////////// + // counting processes (compton, .....) // + /////////////////////////////////////////////////// + // clear root object + m_ProcessEvent->Clear(); + + // scorers for processes.... + std::map<G4int, G4double*>::iterator TrkProcC_itr; + G4THitsMap<G4double>* TrkProcCHitMap; + G4int TrkProcCCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/Process"); + TrkProcCHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(TrkProcCCollectionID)) ; + TrkProcC_itr = TrkProcCHitMap->GetMap()->begin(); + + for (G4int l = 0; l < TrkProcCHitMap->entries(); l++) { + // get electron energy + G4double ElectronKineticEnergy = *(TrkProcC_itr->second); + // get tower, dssd number & trackID + G4int index = TrkProcC_itr->first; +// G4cout << "Read Sensitive : " << l << "\t" << index << G4endl; + G4int towerID = index / (G4int)pow(100.,2.); + index -= towerID * (G4int)pow(100.,2.); + G4int dsssdID = index / (G4int)pow(100.,1.); + G4int trackID = index - dsssdID * (G4int)pow(100.,1.); + trackID *= 1; +// G4cout << "IDs : " << towerID << "\t" << dsssdID << "\t" << trackID << G4endl; +// G4cout << "Energy : " << ElectronKineticEnergy << G4endl; + // fill process data class + m_ProcessEvent->SetCTTrackerComptonTowerNbr(towerID); + m_ProcessEvent->SetCTTrackerComptonDetectorNbr(dsssdID); + m_ProcessEvent->SetCTTrackerComptonEnergy(ElectronKineticEnergy); + + TrkProcC_itr++; + } + TrkProcCHitMap->clear(); + +} + + +void ComptonTelescope::InitializeMaterial() +{ + + //////////////////////////////////////////////////////////////// + /////////////////Element Definition /////////////////////////// + //////////////////////////////////////////////////////////////// + G4String symbol; + G4double density = 0, a = 0, z = 0; + G4int ncomponents = 0, natoms = 0; + + G4Element* N = new G4Element("Nitrogen" , symbol = "N" , z = 7 , a = 14.01 * g / mole); + G4Element* O = new G4Element("Oxigen" , symbol = "O" , z = 8 , a = 16.00 * g / mole); + G4Element* Br = new G4Element("Bromine" , symbol = "Br" , z = 35 , a = 79.9 * g / mole); + G4Element* La = new G4Element("Lanthanum", symbol = "La" , z = 57 , a = 138.9 * g / mole); + + //////////////////////////////////////////////////////////////// + /////////////////Material Definition /////////////////////////// + //////////////////////////////////////////////////////////////// + + // Si + a = 28.0855 * g / mole; + density = 2.321 * g / cm3; + m_MaterialSilicon = new G4Material("Si", z = 14., a, density); + + // Al + density = 2.702 * g / cm3; + a = 26.98 * g / mole; + m_MaterialAluminium = new G4Material("Aluminium", z = 13., a, density); + + // LaBr3 + density = 5.06 * g / cm3; + m_MaterialLaBr3 = new G4Material("LaBr3", density, ncomponents = 2); + m_MaterialLaBr3->AddElement(La , natoms = 1); + m_MaterialLaBr3->AddElement(Br , natoms = 3); + + // Vacuum + density = 0.000000001 * mg / cm3; + m_MaterialVacuum = new G4Material("Vacuum", density, ncomponents = 2); + m_MaterialVacuum->AddElement(N, .7); + m_MaterialVacuum->AddElement(O, .3); +} + + + +void ComptonTelescope::InitializeScorers() +{ + // First stage Associate Scorer + m_TrackerScorer = new G4MultiFunctionalDetector("TrackerScorerComptonTelescope"); + G4VPrimitiveScorer* TowerNbr = new ComptonTelescopeScorerTrackerTowerNumber("TowerNumber", "ComptonTelescopeTower", 0); + G4VPrimitiveScorer* DSSSDNbr = new ComptonTelescopeScorerTrackerDSSSDNumber("DSSSDNumber", "ComptonTelescopeTower", 0); + G4VPrimitiveScorer* Energy = new ComptonTelescopeScorerTrackerEnergy("Energy", "ComptonTelescopeTower", 0); + G4VPrimitiveScorer* TOF = new ComptonTelescopeScorerTrackerTOF("Time", "ComptonTelescopeTower", 0); + G4VPrimitiveScorer* ProcessTypeCompt = new ComptonTelescopeScorerProcess("Process", "ComptonTelescopeTower", "compt", 0); +/* G4VPrimitiveScorer* StripPositionX = new GPDScorerFirstStageFrontStripSquare("StripNumberX", 0, m_NumberOfStrips); + G4VPrimitiveScorer* StripPositionY = new GPDScorerFirstStageBackStripSquare("StripNumberY", 0, m_NumberOfStrips); + G4VPrimitiveScorer* InteractionCoordinatesX = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","", 0); + G4VPrimitiveScorer* InteractionCoordinatesY = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","", 0); + G4VPrimitiveScorer* InteractionCoordinatesZ = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","", 0); + G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","", 0); + G4VPrimitiveScorer* InteractionCoordinatesAnglePhi = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","", 0); +*/ + //and register it to the multifunctionnal detector + m_TrackerScorer->RegisterPrimitive(TowerNbr); + m_TrackerScorer->RegisterPrimitive(DSSSDNbr); + m_TrackerScorer->RegisterPrimitive(Energy); + m_TrackerScorer->RegisterPrimitive(TOF); + m_TrackerScorer->RegisterPrimitive(ProcessTypeCompt); +/* m_TrackerScorer->RegisterPrimitive(StripPositionX); + m_TrackerScorer->RegisterPrimitive(StripPositionY); + m_TrackerScorer->RegisterPrimitive(InteractionCoordinatesX); + m_TrackerScorer->RegisterPrimitive(InteractionCoordinatesY); + m_TrackerScorer->RegisterPrimitive(InteractionCoordinatesZ); + m_TrackerScorer->RegisterPrimitive(InteractionCoordinatesAngleTheta); + m_TrackerScorer->RegisterPrimitive(InteractionCoordinatesAnglePhi); +*/ + // Third stage Associate Scorer + m_CalorimeterScorer = new G4MultiFunctionalDetector("CalorimeterScorerComptonTelescope"); + G4VPrimitiveScorer* CaloTower = new ComptonTelescopeScorerCalorimeterTowerNumber("TowerNumber", "ComptonTelescopeTower", 0); + G4VPrimitiveScorer* CaloDetector = new ComptonTelescopeScorerCalorimeterDetectorNumber("DetectorNumber", "ComptonTelescopeTower", 0); + G4VPrimitiveScorer* CaloEnergy = new ComptonTelescopeScorerCalorimeterEnergy("Energy", "ComptonTelescopeTower", 0); +// G4VPrimitiveScorer* CaloTime = new ComptonTelescopeScorerCalorimeterTOF("Time", "ComptonTelescopeTower", 0); + m_CalorimeterScorer->RegisterPrimitive(CaloTower); + m_CalorimeterScorer->RegisterPrimitive(CaloDetector); + m_CalorimeterScorer->RegisterPrimitive(CaloEnergy); +// m_CalorimeterScorer->RegisterPrimitive(CaloTime); + + // Add All Scorer to the Global Scorer Manager + G4SDManager::GetSDMpointer()->AddNewDetector(m_TrackerScorer); + G4SDManager::GetSDMpointer()->AddNewDetector(m_CalorimeterScorer); +} diff --git a/NPSimulation/src/ComptonTelescopeScorers.cc b/NPSimulation/src/ComptonTelescopeScorers.cc new file mode 100755 index 0000000000000000000000000000000000000000..278a8b93b55938b8ad81ec72bd1bfcce06f1acc8 --- /dev/null +++ b/NPSimulation/src/ComptonTelescopeScorers.cc @@ -0,0 +1,608 @@ +/***************************************************************************** + * Copyright (C) 2009 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: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 30/02/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class holds all the scorers needed by the * + * Paris*** objects. * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +// G4 headers +#include "G4UnitsTable.hh" +#include "G4VProcess.hh" + +// NPTool headers +#include "GeneralScorers.hh" + +#include "ComptonTelescopeScorers.hh" + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Added by Adrien MATTA: +// Those Scorer use TrackID as map index. This way ones can rebuild energy deposit, +// time of flight or position,... particle by particle for each event. Because standard +// scorer provide by G4 don't work this way but using a global ID for each event you should +// not use those scorer with some G4 provided ones or being very carefull doing so. + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// FirstStage Tower Number Scorer (deal with multiple particle hit) +ComptonTelescopeScorerProcess::ComptonTelescopeScorerProcess(G4String name, G4String volumeName, G4String processName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; + m_ProcessName = processName; +} + +ComptonTelescopeScorerProcess::~ComptonTelescopeScorerProcess() +{ +} + +G4bool ComptonTelescopeScorerProcess::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + G4bool status = false; + + // Get track ID + G4Track *track = aStep->GetTrack(); + G4int trackID = track->GetTrackID(); + if (trackID > 1) { // secondary particle + // get some relevant track informations +// G4int parentID = track->GetParentID(); + G4int stepNumber = track->GetCurrentStepNumber(); + G4String parentProcName = track->GetCreatorProcess()->GetProcessName(); + G4String particleName = track->GetDefinition()->GetParticleName(); + // select secondary electrons created by compton effect + if (particleName == "e-" && // secondary is an electron + parentProcName == m_ProcessName && // electron has been created through compton effect + stepNumber == 1 // first step of track + ) { + // electron kinetic energy + G4double ElectronKineticEnergy = aStep->GetPreStepPoint()->GetKineticEnergy() / MeV; + // id of dsssd & tower + // dsssd id + G4int dsssdID = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0); + // tower id + G4int towerID = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); + // build index for map + G4int index = trackID + pow(100,1)*dsssdID + pow(100,2)*towerID; + // fill map + EvtMap->set(index, ElectronKineticEnergy); + + // debug outputs +// G4cout << "////////// Compton electron found.............." << G4endl; +// G4cout << "\tCopyNumbers()\t" << dsssdID << "\t" << towerID << G4endl; +// G4cout << "\tElectron energy\t" << ElectronKineticEnergy << G4endl; + + status = true; + } + } + + return status; +} + +void ComptonTelescopeScorerProcess::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void ComptonTelescopeScorerProcess::EndOfEvent(G4HCofThisEvent*) +{ +} + +void ComptonTelescopeScorerProcess::Clear() +{ + EvtMap->clear(); +} + +void ComptonTelescopeScorerProcess::DrawAll() +{ +} + +void ComptonTelescopeScorerProcess::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4double*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " Tower Number : " << G4BestUnit(*(itr->second), "TowerNumber") + << G4endl; + } +} + + + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// FirstStage Tower Number Scorer (deal with multiple particle hit) +ComptonTelescopeScorerTrackerTowerNumber::ComptonTelescopeScorerTrackerTowerNumber(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +ComptonTelescopeScorerTrackerTowerNumber::~ComptonTelescopeScorerTrackerTowerNumber() +{ +} + +G4bool ComptonTelescopeScorerTrackerTowerNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + // int DetNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0); // this line does exactly the same than the line above + int DSSSDNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0); + + // get energy + G4double edep = aStep->GetTotalEnergyDeposit(); + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->set(DSSSDNbr + DetNbr + index, DetNbr); + return TRUE; +} + +void ComptonTelescopeScorerTrackerTowerNumber::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void ComptonTelescopeScorerTrackerTowerNumber::EndOfEvent(G4HCofThisEvent*) +{ +} + +void ComptonTelescopeScorerTrackerTowerNumber::Clear() +{ + EvtMap->clear(); +} + +void ComptonTelescopeScorerTrackerTowerNumber::DrawAll() +{ +} + +void ComptonTelescopeScorerTrackerTowerNumber::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " Tower Number : " << G4BestUnit(*(itr->second), "TowerNumber") + << G4endl; + } +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// FirstStage Energy Scorer (deal with multiple particle hit) +ComptonTelescopeScorerTrackerEnergy::ComptonTelescopeScorerTrackerEnergy(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +ComptonTelescopeScorerTrackerEnergy::~ComptonTelescopeScorerTrackerEnergy() +{ +} + +G4bool ComptonTelescopeScorerTrackerEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + int DSSSDNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); + + // get energy + G4ThreeVector POS = aStep->GetPreStepPoint()->GetPosition(); + POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS); + + G4double edep = aStep->GetTotalEnergyDeposit(); + // if (edep < 100*keV) return FALSE; + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->add(DSSSDNbr + DetNbr + index, edep); + return TRUE; +} + +void ComptonTelescopeScorerTrackerEnergy::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void ComptonTelescopeScorerTrackerEnergy::EndOfEvent(G4HCofThisEvent*) +{ +} + +void ComptonTelescopeScorerTrackerEnergy::Clear() +{ + EvtMap->clear(); +} + +void ComptonTelescopeScorerTrackerEnergy::DrawAll() +{ +} + +void ComptonTelescopeScorerTrackerEnergy::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4double*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " energy deposit: " << G4BestUnit(*(itr->second), "Energy") + << G4endl; + } +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// FirstStage CrystalNbr Scorer (deal with multiple particle hit) +ComptonTelescopeScorerTrackerDSSSDNumber::ComptonTelescopeScorerTrackerDSSSDNumber(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +ComptonTelescopeScorerTrackerDSSSDNumber::~ComptonTelescopeScorerTrackerDSSSDNumber() +{ +} + +G4bool ComptonTelescopeScorerTrackerDSSSDNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + + //G4int CrystalNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1); + //Adde by Anna: + G4int DSSSDNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); // daughter crystal volume + //depth:0 is the world, 1 is the mother... + //AC instead of GetReplicaNumber(1) + //cout<<"****replica****"<<endl; + //cout<<"copy nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1)<<endl; + //cout<<"replica nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1)<<endl; + //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(2)<<endl; + //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0)<<endl; + + // get energy + G4double edep = aStep->GetTotalEnergyDeposit(); + // if (edep < 100*keV) return FALSE; + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + //EvtMap->add(DetNbr + index, CrystalNbr); // Marc + //cout<<"index "<<index<<endl; + //cout<<"DetNbr + index "<<DetNbr + index<<endl; + EvtMap->set(DSSSDNbr + DetNbr + index, DSSSDNbr);// modified by Anna + return TRUE; + +} + +void ComptonTelescopeScorerTrackerDSSSDNumber::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void ComptonTelescopeScorerTrackerDSSSDNumber::EndOfEvent(G4HCofThisEvent*) +{ +} + +void ComptonTelescopeScorerTrackerDSSSDNumber::Clear() +{ + EvtMap->clear(); +} + +void ComptonTelescopeScorerTrackerDSSSDNumber::DrawAll() +{ +} + +void ComptonTelescopeScorerTrackerDSSSDNumber::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " crystal nbr: " << G4BestUnit(*(itr->second), "DSSSD") + << G4endl; + } +} + + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// FirstStage ToF Scorer (deal with multiple particle hit) +ComptonTelescopeScorerTrackerTOF::ComptonTelescopeScorerTrackerTOF(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +ComptonTelescopeScorerTrackerTOF::~ComptonTelescopeScorerTrackerTOF() +{ +} + +G4bool ComptonTelescopeScorerTrackerTOF::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + int DSSSDNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); + + // get TOF + G4double TOF = aStep->GetPreStepPoint()->GetGlobalTime(); + + G4double edep = aStep->GetTotalEnergyDeposit(); + // if (edep < 100*keV) return FALSE; + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->add(DSSSDNbr + DetNbr + index, TOF); + return TRUE; +} + +void ComptonTelescopeScorerTrackerTOF::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void ComptonTelescopeScorerTrackerTOF::EndOfEvent(G4HCofThisEvent*) +{ +} + +void ComptonTelescopeScorerTrackerTOF::Clear() +{ + EvtMap->clear(); +} + +void ComptonTelescopeScorerTrackerTOF::DrawAll() +{ +} + +void ComptonTelescopeScorerTrackerTOF::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; +} + + + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// SecondStage (CsI) Tower Number Scorer (deal with multiple particle hit) +ComptonTelescopeScorerCalorimeterTowerNumber::ComptonTelescopeScorerCalorimeterTowerNumber(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +ComptonTelescopeScorerCalorimeterTowerNumber::~ComptonTelescopeScorerCalorimeterTowerNumber() +{ +} + +G4bool ComptonTelescopeScorerCalorimeterTowerNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + // int DetNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0); // this line does exactly the same than the line above + int DSSSDNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); + + // get energy + G4double edep = aStep->GetTotalEnergyDeposit(); + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->set(DSSSDNbr + DetNbr + index, DetNbr); + return TRUE; +} + +void ComptonTelescopeScorerCalorimeterTowerNumber::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void ComptonTelescopeScorerCalorimeterTowerNumber::EndOfEvent(G4HCofThisEvent*) +{ +} + +void ComptonTelescopeScorerCalorimeterTowerNumber::Clear() +{ + EvtMap->clear(); +} + +void ComptonTelescopeScorerCalorimeterTowerNumber::DrawAll() +{ +} + +void ComptonTelescopeScorerCalorimeterTowerNumber::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " Tower Number : " << G4BestUnit(*(itr->second), "DetectorNumber") + << G4endl; + } +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Calorimeter Energy Scorer (deal with multiple particle hit) +ComptonTelescopeScorerCalorimeterEnergy::ComptonTelescopeScorerCalorimeterEnergy(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +ComptonTelescopeScorerCalorimeterEnergy::~ComptonTelescopeScorerCalorimeterEnergy() +{ +} + +G4bool ComptonTelescopeScorerCalorimeterEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + int DSSSDNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); + + // get energy + G4ThreeVector POS = aStep->GetPreStepPoint()->GetPosition(); + POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS); + + G4double edep = aStep->GetTotalEnergyDeposit(); + //if (edep < 100*keV) return FALSE; + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->add(DSSSDNbr + DetNbr + index, edep); + return TRUE; +} + +void ComptonTelescopeScorerCalorimeterEnergy::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void ComptonTelescopeScorerCalorimeterEnergy::EndOfEvent(G4HCofThisEvent*) +{ +} + +void ComptonTelescopeScorerCalorimeterEnergy::Clear() +{ + EvtMap->clear(); +} + +void ComptonTelescopeScorerCalorimeterEnergy::DrawAll() +{ +} + +void ComptonTelescopeScorerCalorimeterEnergy::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4double*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " energy deposit: " << G4BestUnit(*(itr->second), "Energy") + << G4endl; + } +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// all added by Anna: + +// FirstStage DetectorNbr Scorer (deal with multiple particle hit) +ComptonTelescopeScorerCalorimeterDetectorNumber::ComptonTelescopeScorerCalorimeterDetectorNumber(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +ComptonTelescopeScorerCalorimeterDetectorNumber::~ComptonTelescopeScorerCalorimeterDetectorNumber() +{ +} + +G4bool ComptonTelescopeScorerCalorimeterDetectorNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + + // get energy + G4int DetectorNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); + //depth:0 is the world, 1 is the mother... + //AC instead of GetReplicaNumber(1) + //cout<<"****replica****"<<endl; + //cout<<"copy nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1)<<endl; + //cout<<"replica nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1)<<endl; + //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(2)<<endl; + //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0)<<endl; + + G4double edep = aStep->GetTotalEnergyDeposit(); + // if (edep < 100*keV) return FALSE; + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + //cout<<"index "<<index<<endl; + //cout<<"DetNbr + index "<<DetNbr + index<<endl; + EvtMap->set(DetectorNbr + DetNbr + index, DetectorNbr); + return TRUE; + +} + +void ComptonTelescopeScorerCalorimeterDetectorNumber::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void ComptonTelescopeScorerCalorimeterDetectorNumber::EndOfEvent(G4HCofThisEvent*) +{ +} + +void ComptonTelescopeScorerCalorimeterDetectorNumber::Clear() +{ + EvtMap->clear(); +} + +void ComptonTelescopeScorerCalorimeterDetectorNumber::DrawAll() +{ +} + +void ComptonTelescopeScorerCalorimeterDetectorNumber::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " detector nbr: " << G4BestUnit(*(itr->second), "Detector") + << G4endl; + } +} diff --git a/NPSimulation/src/DetectorConstruction.cc b/NPSimulation/src/DetectorConstruction.cc index 43dccfde964fe7558a1f3ee677e4a7f649386a6c..8101ed47cd79abff216495cd448f47ff048ecc71 100644 --- a/NPSimulation/src/DetectorConstruction.cc +++ b/NPSimulation/src/DetectorConstruction.cc @@ -40,16 +40,18 @@ #include "G4RotationMatrix.hh" // Detector class +#include "AnnularS1.hh" +#include "Chamber.hh" +#include "ComptonTelescope.hh" #include "DummyDetector.hh" -#include "MUST2Array.hh" +#include "Eurogam.hh" #include "GaspardTracker.hh" #include "HydeTracker.hh" -#include "AnnularS1.hh" +#include "MUST2Array.hh" +#include "Paris.hh" +#include "Plastic.hh" #include "Target.hh" -#include "Chamber.hh" #include "ThinSi.hh" -#include "Plastic.hh" -#include "Paris.hh" #include "Shield.hh" #include "W1.hh" @@ -93,9 +95,9 @@ G4VPhysicalVolume* DetectorConstruction::Construct() //------------------------------world volume - G4double world_x = 80.0 * cm; - G4double world_y = 80.0 * cm; - G4double world_z = 80.0 * cm; + G4double world_x = 10.0 * m; + G4double world_y = 10.0 * m; + G4double world_z = 10.0 * m; G4Box* world_box = new G4Box("world_box", world_x, world_y, world_z); @@ -137,20 +139,26 @@ G4VPhysicalVolume* DetectorConstruction::Construct() return world_phys; } + + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void DetectorConstruction::AddDetector(VDetector* NewDetector) { // Add new detector to vector m_Detectors.push_back(NewDetector); + // Initialize Scorer NewDetector->InitializeScorers(); + // Construct new detector NewDetector->ConstructDetector(world_log); + // Add Detector to TTree NewDetector->InitializeRootOutput(); - } + + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void DetectorConstruction::ReadConfigurationFile(string Path) { @@ -159,18 +167,20 @@ void DetectorConstruction::ReadConfigurationFile(string Path) string DataBuffer; /////////Checking Boolean//////////////////// - bool cMUST2 = false; - bool cAddThinSi = false; - bool cGeneralTarget = false; - bool cGeneralChamber = false; - bool cGPDTracker = false; // Gaspard Tracker - bool cHYDTracker = false; // Hyde detector - bool cS1 = false; - bool cPlastic = false; - bool cDummy = false; - bool cParis = false; // Paris Calorimeter - bool cShield = false; // Paris Shield CsI - bool cW1 = false; // W1 Micron DSSD + bool cAddThinSi = false; + bool cComptonTelescope = false; + bool cDummy = false; + bool cEurogam = false; + bool cGeneralTarget = false; + bool cGeneralChamber = false; + bool cGPDTracker = false; // Gaspard Tracker + bool cHYDTracker = false; // Hyde detector + bool cMUST2 = false; + bool cPlastic = false; + bool cParis = false; // Paris Calorimeter + bool cS1 = false; + bool cShield = false; // Paris Shield CsI + bool cW1 = false; // W1 Micron DSSD ////////////////////////////////////////////////////////////////////////////////////////// ifstream ConfigFile; ConfigFile.open(Path.c_str()); @@ -208,6 +218,46 @@ void DetectorConstruction::ReadConfigurationFile(string Path) } + ///////////////////////////////////////////////////// + //////////// Search for ComptonTelescope //////////// + ///////////////////////////////////////////////////// + else if (LineBuffer.compare(0, 16, "ComptonTelescope") == 0 && cComptonTelescope == false) { + cComptonTelescope = true; + G4cout << "//////// ComptonTelescope ////////" << G4endl; + + // Instantiate the new array as a VDetector Object + VDetector* myDetector = new ComptonTelescope(); + + // Read Position of detector + ConfigFile.close(); + myDetector->ReadConfiguration(Path); + ConfigFile.open(Path.c_str()); + + // Add array to the VDetector Vector + AddDetector(myDetector); + } + + + //////////////////////////////////////////// + //////////// Search for Eurogam //////////// + //////////////////////////////////////////// + else if (LineBuffer.compare(0, 7, "Eurogam") == 0 && cEurogam == false) { + cEurogam = true; + G4cout << "//////// Eurogam ////////" << G4endl; + + // Instantiate the new array as a VDetector Object + VDetector* myDetector = new Eurogam(); + + // Read Position of detector + ConfigFile.close(); + myDetector->ReadConfiguration(Path); + ConfigFile.open(Path.c_str()); + + // Add array to the VDetector Vector + AddDetector(myDetector); + } + + //////////////////////////////////////////// //////////// Search for Gaspard //////////// //////////////////////////////////////////// diff --git a/NPSimulation/src/Eurogam.cc b/NPSimulation/src/Eurogam.cc new file mode 100755 index 0000000000000000000000000000000000000000..d9d2c9ed4fa682de3e77ab986370e73d6a489444 --- /dev/null +++ b/NPSimulation/src/Eurogam.cc @@ -0,0 +1,694 @@ +/***************************************************************************** + * Copyright (C) 2009 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: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * * + * Creation Date : December 2010 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class describes the Eurogam germanium detector * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +// C++ headers +#include <sstream> +#include <cmath> +#include <limits> + +//G4 Geometry object +#include "G4Box.hh" +#include "G4Tubs.hh" +#include "G4Cons.hh" +#include "G4UnionSolid.hh" +#include "G4SubtractionSolid.hh" +#include "G4IntersectionSolid.hh" + +//G4 sensitive +#include "G4SDManager.hh" +#include "G4MultiFunctionalDetector.hh" + +//G4 various object +#include "G4MaterialTable.hh" +#include "G4Element.hh" +#include "G4ElementTable.hh" +#include "G4Transform3D.hh" +#include "G4PVPlacement.hh" +#include "G4VisAttributes.hh" +#include "G4Colour.hh" + +// NPTool header +#include "Eurogam.hh" +#include "GeneralScorers.hh" +#include "RootOutput.h" +using namespace GENERALSCORERS; + +// CLHEP header +#include "CLHEP/Random/RandGauss.h" + +using namespace std; +using namespace CLHEP; +using namespace EUROGAMDETECTOR; + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Eurogam Specific Method +Eurogam::Eurogam() +{ + InitializeMaterial(); + m_Event = new TEurogamData(); +} + + + +Eurogam::~Eurogam() +{ + // Materials + delete m_Material_Vacuum; + delete m_Material_Aluminium; + delete m_Material_Silicon; + delete m_Material_Germanium; + + delete m_Event; + delete m_EurogamScorer; +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void Eurogam::AddEurogamModule(G4double R, G4double Theta, G4double Phi, + G4double beta_u, G4double beta_v, G4double beta_w) +{ + m_R.push_back(R); + m_Theta.push_back(Theta); + m_Phi.push_back(Phi); + m_beta_u.push_back(beta_u); + m_beta_v.push_back(beta_v); + m_beta_w.push_back(beta_w); +} + + + +// Read stream at Configfile to pick-up parameters of detector (Position,...) +// Called in DetecorConstruction::ReadDetextorConfiguration Method +void Eurogam::ReadConfiguration(string Path) +{ + ifstream ConfigFile; + ConfigFile.open(Path.c_str()); + string LineBuffer, DataBuffer; + + G4double R = 0, Theta = 0, Phi = 0; + G4double beta_u = 0, beta_v = 0, beta_w = 0; + + bool check_Theta = false; + bool check_Phi = false; + bool check_R = false; + bool ReadingStatus = false; + + + while (!ConfigFile.eof()) { + getline(ConfigFile, LineBuffer); + + // If line is a Start Up Eurogam bloc, Reading toggle to true + if (LineBuffer.compare(0, 7, "Eurogam") == 0) { + G4cout << "///" << G4endl; + G4cout << "Eurogam Module found: " << G4endl; + ReadingStatus = true; + } + // Else don't toggle to Reading Block Status + else ReadingStatus = false; + + // Reading Block + while (ReadingStatus) { + // Pickup Next Word + ConfigFile >> DataBuffer; + + // Comment Line + if (DataBuffer.compare(0, 1, "%") == 0) { + ConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); + } + + // Finding another telescope (safety), toggle out + else if (DataBuffer.compare(0, 7, "Eurogam") == 0) { + cout << "WARNING: Another Detector is find before standard sequence of Token, Error may occured in Telecope definition" << endl; + ReadingStatus = false; + } + + // Angle method + else if (DataBuffer.compare(0, 2, "R=") == 0) { + check_R = true; + ConfigFile >> DataBuffer ; + R = atof(DataBuffer.c_str()) ; + R = R * mm; + cout << "R: " << R/mm << endl; + } + + else if (DataBuffer.compare(0, 6, "THETA=") == 0) { + check_Theta = true; + ConfigFile >> DataBuffer ; + Theta = atof(DataBuffer.c_str()) ; + Theta = Theta * deg; + cout << "Theta: " << Theta / deg << endl; + } + + else if (DataBuffer.compare(0, 4, "PHI=") == 0) { + check_Phi = true; + ConfigFile >> DataBuffer ; + Phi = atof(DataBuffer.c_str()) ; + Phi = Phi * deg; + cout << "Phi: " << Phi / deg << endl; + } + + else if (DataBuffer.compare(0, 5, "BETA=") == 0) { + ConfigFile >> DataBuffer ; + beta_u = atof(DataBuffer.c_str()) ; + beta_u = beta_u * deg ; + ConfigFile >> DataBuffer ; + beta_v = atof(DataBuffer.c_str()) ; + beta_v = beta_v * deg ; + ConfigFile >> DataBuffer ; + beta_w = atof(DataBuffer.c_str()) ; + beta_w = beta_w * deg ; + G4cout << "Beta: " << beta_u / deg << " " << beta_v / deg << " " << beta_w / deg << G4endl ; + } + + /////////////////////////////////////////////////// + // If no Detector Token and no comment, toggle out + else { + ReadingStatus = false; + G4cout << "Wrong Token Sequence: Getting out " << DataBuffer << G4endl; + } + + ///////////////////////////////////////////////// + // If All necessary information there, toggle out + if (check_Theta && check_Phi && check_R) { + AddEurogamModule(R, Theta, Phi, beta_u, beta_v, beta_w); + + // Reinitialisation of Check Boolean + check_R = false; + check_Theta = false; + check_Phi = false; + ReadingStatus = false; + cout << "///"<< endl; + } + } + } +} + + + +// Construct detector and inialise sensitive part. +// Called After DetecorConstruction::AddDetector Method +void Eurogam::ConstructDetector(G4LogicalVolume* world) +{ + G4ThreeVector Det_pos = G4ThreeVector(0, 0, 0); + G4RotationMatrix* Det_rot = new G4RotationMatrix(); + + for (unsigned short i = 0; i < m_R.size(); i++) { + G4double Theta = m_Theta[i]; + G4double Phi = m_Phi[i]; + + // (u,v,w) unitary vector associated to the detector referencial + // (u,v) // to detector front + // w perpendicular to (u,v) plan and pointing to the detector back + // Phi is angle between X axis and projection in (X,Y) plan + // Theta is angle between position vector and z axis + G4double wX = m_R[i] * sin(Theta / rad) * cos(Phi / rad); + G4double wY = m_R[i] * sin(Theta / rad) * sin(Phi / rad); + G4double wZ = m_R[i] * cos(Theta / rad); + G4ThreeVector dirw = G4ThreeVector(wX, wY, wZ); + + // vector corresponding to the center of the module + Det_pos = dirw; + dirw = dirw.unit(); + + // vector parallel to one axis of silicon plane + G4double ii = cos(Theta / rad) * cos(Phi / rad); + G4double jj = cos(Theta / rad) * sin(Phi / rad); + G4double kk = -sin(Theta / rad); + G4ThreeVector Y = G4ThreeVector(ii, jj, kk); + + // build rotation matrix to go from the lab referential + // to the telescope referential + G4ThreeVector diru = dirw.cross(Y); + G4ThreeVector dirv = dirw.cross(diru); + dirv = dirv.unit(); + diru = diru.unit(); + Det_rot = new G4RotationMatrix(diru, dirv, dirw); + + // Detector is rotated by Beta angles around the v axis. + Det_rot->rotate(m_beta_u[i], diru); + Det_rot->rotate(m_beta_v[i], dirv); + Det_rot->rotate(m_beta_w[i], dirw); + + // translation to place the detector + Det_pos += dirw * EurogamDepth * 0.5; + + // Build geometry + VolumeMaker(i + 1, Det_pos, Det_rot, world); + } +} + + + +void Eurogam::VolumeMaker(G4int DetNumber, + G4ThreeVector DetPos, + G4RotationMatrix* DetRot, + G4LogicalVolume* world) +{ + + //////////////////////////////////////////////////////////////// + ////////////// Starting Volume Definition ////////////////////// + //////////////////////////////////////////////////////////////// + // Name of the module + std::ostringstream DetectorNumber; + DetectorNumber << DetNumber; + G4String Name = "Eurogam" + DetectorNumber.str(); + + // EUROGAM box + G4Box* solidEurogam = new G4Box(Name, EurogamSize/2, EurogamSize/2, EurogamDepth/2); + + G4LogicalVolume* logicEurogam = new G4LogicalVolume(solidEurogam, m_Material_Vacuum, Name, 0, 0, 0); + + new G4PVPlacement(G4Transform3D(*DetRot, DetPos), logicEurogam, Name, world, false, 0); + + logicEurogam->SetVisAttributes(G4VisAttributes::Invisible); + + // Germanium detector itself + // Capot en Aluminium + // Epaisseur du capot + G4double AluThickness = 1*mm; + // Fermeture du capot par 2 disques pleins + G4double RMinFront = 0, RMaxFront = 66.2/2*mm, DzFront = AluThickness; + G4double RMinBack = 0, RMaxBack = 86.2/2*mm, DzBack = AluThickness; + // Composante conique du capot + G4double RMin1Cone = RMaxFront - DzFront, RMax1Cone = RMaxFront; + G4double RMin2Cone = RMaxBack - DzBack, RMax2Cone = RMaxBack; + G4double DzCone = 101.5*mm; + // Composante cylindrique du capot + G4double RMinCylin = RMaxBack - DzBack, RMaxCylin = RMaxBack; + G4double DzCylin = 163.1*mm; + + // Capot avant + G4VSolid* solidCapotFront = new G4Tubs("solidCapotFront", RMinFront, RMaxFront, DzFront/2, 0*degree, 360*degree); + + G4LogicalVolume* logicCapotFront = new G4LogicalVolume(solidCapotFront, // its solid + m_Material_Aluminium, // its material + "logicCapotFront"); // its name + + G4double OffsetZCapotFront = -(EurogamDepth - DzFront)/2; + G4ThreeVector ZposCapotFront = G4ThreeVector(0, 0, OffsetZCapotFront); + new G4PVPlacement(0, // no rotation + ZposCapotFront, // at (0,0,Dz) + logicCapotFront, // its logical name + Name + "_CapotFront", // its name + logicEurogam, // its mother name + false, // no boolean operation + 0); // copy number + + // Partie conique + G4VSolid* solidCapotCone = new G4Cons("solidCapotCone", RMin1Cone, RMax1Cone, RMin2Cone, RMax2Cone, DzCone/2, 0*degree, 360*degree); + + G4LogicalVolume* logicCapotCone = new G4LogicalVolume(solidCapotCone, //its solid + m_Material_Aluminium, //its material + "logicCapotCone"); //its name + + G4double OffsetZCapotCone = -(EurogamDepth/2 - DzFront - DzCone/2); + G4ThreeVector ZposCapotCone = G4ThreeVector(0, 0, OffsetZCapotCone); + new G4PVPlacement(0, // no rotation + ZposCapotCone, // at (0,0,Dz) + logicCapotCone, // its logical name + Name + "_CapotCone", // its name + logicEurogam, // its mother name + false, // no boolean operation + 0); // copy number + + // Partie cylindrique + G4VSolid* solidCapotCylin = new G4Tubs("solidCapotCylin", RMinCylin, RMaxCylin, DzCylin/2, 0*degree, 360*degree); + + G4LogicalVolume* logicCapotCylin = new G4LogicalVolume(solidCapotCylin, //its solid + m_Material_Aluminium, //its material + "logicCapotCylin"); //its name + + G4double OffsetZCapotCylin = -(EurogamDepth/2 - DzFront - DzCone - DzCylin/2); + G4ThreeVector ZposCapotCylin = G4ThreeVector(0, 0, OffsetZCapotCylin); + new G4PVPlacement(0, // no rotation + ZposCapotCylin, // at (0,0,Dz) + logicCapotCylin, // its logical name + Name + "_CapotCylin", // its name + logicEurogam, // its mother name + false, // no boolean operation + 0); // copy number + + // Capot arriere + G4VSolid* solidCapotBack = new G4Tubs("solidCapotBack", RMinBack, RMaxBack, DzBack/2, 0*degree, 360*degree); + + G4LogicalVolume* logicCapotBack = new G4LogicalVolume(solidCapotBack, //its solid + m_Material_Aluminium, //its material + "logicCapotBack"); //its name + + G4double OffsetZCapotBack = -(EurogamDepth/2 - DzFront - DzCone - DzCylin - DzBack/2); + G4ThreeVector ZposCapotBack = G4ThreeVector(0, 0, OffsetZCapotBack); + new G4PVPlacement(0, // no rotation + ZposCapotBack, // at (0,0,Dz) + logicCapotBack, // its logical name + Name + "_CapotBack", // its name + logicEurogam, // its mother name + false, // no boolean operation + 0); // copy number + + // cristal de Ge et doigt froid + G4double RMinGe = 0, RMaxGe = 63.1/2*mm, DzGe = 78.5*mm; + G4double SPhiGe = 0, DPhiGe = 360*degree; + G4double distCapotGe = 20*mm; + G4double RMinDoigt = 0, RMaxDoigt = 11.2/2*mm, DzDoigt = 70*mm; + G4double SPhiDoigt = 0*degree, DPhiDoigt = 360*degree; + + G4VSolid* solidDetec = new G4Tubs("solidGermanium", //its name + RMinGe, RMaxGe, DzGe/2, //its size + SPhiGe, DPhiGe); //its size + + G4VSolid* solidDoigt = new G4Tubs("solidDoigt", + RMinDoigt, RMaxDoigt, DzDoigt/2, + SPhiDoigt, DPhiDoigt); + + // !!! pour soustraire le doigt froid du cristal initial de Germainum + // cela se fait dans le repere du cristal de Germanium + // *************** changer signe - en signe + ??????????? + G4double OffsetZDoigt = - (DzGe/2 - DzDoigt/2); + G4ThreeVector ZposDoigt = G4ThreeVector(0, 0, OffsetZDoigt); + G4VSolid* solidSubtrac = new G4SubtractionSolid("solidCristalGe", solidDetec, solidDoigt, 0, ZposDoigt); + + G4LogicalVolume* logicDetec= new G4LogicalVolume(solidSubtrac, //its solid +// m_Material_Germanium, //its material + m_Material_Silicon, //its material + "logicCristalGe"); //its name + +// G4LogicalVolume* logicDetec= new G4LogicalVolume(solidDetec, //its solid +// m_Material_Germanium, //its material +// "logicCristalGe"); //its name + + + G4double OffsetZGe = -(EurogamDepth/2 - distCapotGe - DzGe/2); + G4ThreeVector ZposGe = G4ThreeVector(0, 0, OffsetZGe); + new G4PVPlacement(0, //no rotation + ZposGe, //at (0,0,0) + logicDetec, //its logical volume + Name + "_CristalGe", //its name + logicEurogam, //its mother volume + false, //no boolean operation + 0); //copy number + + // Set Ge detector sensible + logicDetec->SetSensitiveDetector(m_EurogamScorer); + + // Visualisation of FirstStage Strip + G4VisAttributes* DetectorVisAtt = new G4VisAttributes(G4Colour(0.0, 0.0, 0.9)); // blue + logicDetec->SetVisAttributes(DetectorVisAtt); +} + + + +// Add Detector branch to the EventTree. +// Called After DetecorConstruction::AddDetector Method +void Eurogam::InitializeRootOutput() +{ + RootOutput *pAnalysis = RootOutput::getInstance(); + TTree *pTree = pAnalysis->GetTree(); + pTree->Branch("Eurogam", "TEurogamData", &m_Event) ; +} + + + +// Read sensitive part and fill the Root tree. +// Called at in the EventAction::EndOfEventAvtion +void Eurogam::ReadSensitive(const G4Event* event) +{ + // Clear the data of the TEurogamData object + m_Event->Clear(); + + ////////////////////////////////////////////////////////////////////////////////////// + //////////////////////// Used to Read Event Map of detector ////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + std::map<G4int, G4int*>::iterator DetectorNumber_itr; + std::map<G4int, G4double*>::iterator Energy_itr; + std::map<G4int, G4double*>::iterator Time_itr; + std::map<G4int, G4double*>::iterator Pos_X_itr; + std::map<G4int, G4double*>::iterator Pos_Y_itr; + std::map<G4int, G4double*>::iterator Pos_Z_itr; + std::map<G4int, G4double*>::iterator Ang_Theta_itr; + std::map<G4int, G4double*>::iterator Ang_Phi_itr; + + G4THitsMap<G4int>* DetectorNumberHitMap; + G4THitsMap<G4double>* EnergyHitMap; + G4THitsMap<G4double>* TimeHitMap; + G4THitsMap<G4double>* PosXHitMap; + G4THitsMap<G4double>* PosYHitMap; + G4THitsMap<G4double>* PosZHitMap; + G4THitsMap<G4double>* AngThetaHitMap; + G4THitsMap<G4double>* AngPhiHitMap; + + // Read the Scorer associate to the Silicon Strip + //Detector Number + G4int DetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/DetectorNumber"); + DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(DetCollectionID)); + DetectorNumber_itr = DetectorNumberHitMap->GetMap()->begin(); + + // Energy + G4int EnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/Energy"); + EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(EnergyCollectionID)); + Energy_itr = EnergyHitMap->GetMap()->begin(); + + //Time of Flight + G4int TimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/Time"); + TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(TimeCollectionID)); + Time_itr = TimeHitMap->GetMap()->begin(); + + //Interaction Coordinate X + G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/InterCoordX"); + PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID)); + Pos_X_itr = PosXHitMap->GetMap()->begin(); + + //Interaction Coordinate Y + G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/InterCoordY"); + PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID)); + Pos_Y_itr = PosYHitMap->GetMap()->begin(); + + //Interaction Coordinate Z + G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/InterCoordZ"); + PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID)); + Pos_Z_itr = PosXHitMap->GetMap()->begin(); + + //Interaction Coordinate Angle Theta + G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/InterCoordAngTheta"); + AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID)); + Ang_Theta_itr = AngThetaHitMap->GetMap()->begin(); + + //Interaction Coordinate Angle Phi + G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/InterCoordAngPhi"); + AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID)); + Ang_Phi_itr = AngPhiHitMap->GetMap()->begin(); + + // Check the size of different map + G4int sizeN = DetectorNumberHitMap->entries(); + G4int sizeE = EnergyHitMap->entries(); + G4int sizeT = TimeHitMap->entries(); + G4int sizeX = PosXHitMap->entries(); + +/* if (sizeN != sizeE || sizeE != sizeT) { + G4cout << "No match size Eurogam Event Map: sE:" << sizeE << " sT:" << sizeT << endl; + return; + }*/ + G4cout << "*******SIZE********: " << sizeN << " " << sizeE << " " << sizeT << " " << sizeX << G4endl; + + G4double Etot = 0; + + // Loop on detector number + for (G4int l = 0; l < sizeN; l++) { + G4double N = *(DetectorNumber_itr->second); + G4int NTrackID = DetectorNumber_itr->first - N; + G4cout << "NTrackID: " << NTrackID << " " << N << G4endl; + + if (N > 0) { + // Fill detector number + m_Event->SetEurogamDetectorNumber(N); + + // Energy + Energy_itr = EnergyHitMap->GetMap()->begin(); + for (G4int l = 0; l < sizeE; l++) { + G4int ETrackID = Energy_itr->first - N; + G4double E = *(Energy_itr->second); + G4cout << "ETrackID, E: " << ETrackID << " " << E << G4endl; + if (ETrackID == NTrackID) { + Etot += E; +// m_Event->SetEurogamEnergy(RandGauss::shoot(E, 1)); + // Fill energy loss for each step +// m_Event->SetEurogamEnergy(E*1e3); + } + Energy_itr++; + } + + // Time + Time_itr = TimeHitMap->GetMap()->begin(); + for (G4int h = 0; h < sizeT; h++) { + G4int TTrackID = Time_itr->first - N; + G4double T = *(Time_itr->second); + if (TTrackID == NTrackID) { + m_Event->SetEurogamTime(RandGauss::shoot(T, 1)); + } + Time_itr++; + } + + // Pos X + Pos_X_itr = PosXHitMap->GetMap()->begin(); + for (G4int h = 0; h < PosXHitMap->entries(); h++) { + G4int PosXTrackID = Pos_X_itr->first - N; + G4double PosX = *(Pos_X_itr->second); + if (PosXTrackID == NTrackID) { + ms_InterCoord->SetDetectedPositionX(PosX); + } + Pos_X_itr++; + } + + // Pos Y + Pos_Y_itr = PosYHitMap->GetMap()->begin(); + for (G4int h = 0; h < PosYHitMap->entries(); h++) { + G4int PosYTrackID = Pos_Y_itr->first - N; + G4double PosY = *(Pos_Y_itr->second); + if (PosYTrackID == NTrackID) { + ms_InterCoord->SetDetectedPositionY(PosY); + } + Pos_Y_itr++; + } + + // Pos Z + Pos_Z_itr = PosZHitMap->GetMap()->begin(); + for (G4int h = 0; h < PosZHitMap->entries(); h++) { + G4int PosZTrackID = Pos_Z_itr->first - N; + G4double PosZ = *(Pos_Z_itr->second); + if (PosZTrackID == NTrackID) { + ms_InterCoord->SetDetectedPositionZ(PosZ); + } + Pos_Z_itr++; + } + + // Angle Theta + Ang_Theta_itr = AngThetaHitMap->GetMap()->begin(); + for (G4int h = 0; h < AngThetaHitMap->entries(); h++) { + G4int AngThetaTrackID = Ang_Theta_itr->first - N; + G4double AngTheta = *(Ang_Theta_itr->second); + if (AngThetaTrackID == NTrackID) { + ms_InterCoord->SetDetectedAngleTheta(AngTheta); + } + Ang_Theta_itr++; + } + + // Angle Phi + Ang_Phi_itr = AngPhiHitMap->GetMap()->begin(); + for (G4int h = 0; h < AngPhiHitMap->entries(); h++) { + G4int AngPhiTrackID = Ang_Phi_itr->first - N; + G4double AngPhi = *(Ang_Phi_itr->second); + if (AngPhiTrackID == NTrackID) { + ms_InterCoord->SetDetectedAnglePhi(AngPhi); + } + Ang_Phi_itr++; + } + + } + DetectorNumber_itr++; + } + + // Fill total energy here + if (Etot > 0) m_Event->SetEurogamEnergy(RandGauss::shoot(Etot*1e3, 1)); + + // clear map for next event + DetectorNumberHitMap -> clear(); + EnergyHitMap -> clear(); + TimeHitMap -> clear(); + PosXHitMap -> clear(); + PosYHitMap -> clear(); + PosZHitMap -> clear(); + AngThetaHitMap -> clear(); + AngPhiHitMap -> clear(); +} + + + +//////////////////////////////////////////////////////////////// +void Eurogam::InitializeMaterial() +{ + //////////////////////////////////////////////////////////////// + /////////////////Element Definition /////////////////////////// + //////////////////////////////////////////////////////////////// + G4String symbol; + G4double density = 0, a = 0, z = 0; + G4int ncomponents = 0; + + // Elements + G4Element* N = new G4Element("Nitrogen" , symbol = "N", z = 7, a = 14.01 * g / mole); + G4Element* O = new G4Element("Oxigen" , symbol = "O", z = 8, a = 16.00 * g / mole); + G4Element* Al = new G4Element("Aluminium", symbol = "Al", z= 13, a = 26.98 * g / mole); + G4Element* Si = new G4Element("Silicon" , symbol = "Si", z= 14, a = 28.09 * g / mole); + G4Element* Ge = new G4Element("Germanium", symbol = "Ge", z= 32, a = 72.61 * g / mole); + + + //////////////////////////////////////////////////////////////// + /////////////////Material Definition /////////////////////////// + //////////////////////////////////////////////////////////////// + // Vacuum + density = 0.000000001 * mg / cm3; + m_Material_Vacuum = new G4Material("Vacuum", density, ncomponents = 2); + m_Material_Vacuum->AddElement(N, .7); + m_Material_Vacuum->AddElement(O, .3); + + // Aluminium + m_Material_Aluminium = new G4Material("Aluminium", density= 2.699*g/cm3, ncomponents=1); + m_Material_Aluminium->AddElement(Al, 1); + + // Siliclum + m_Material_Silicon = new G4Material("Silicium", density = 2.321*g/cm3, ncomponents=1); + m_Material_Silicon->AddElement(Si, 1); + + // Germanium + m_Material_Germanium = new G4Material("Germanium", density= 5.323*g/cm3, ncomponents=1); + m_Material_Germanium->AddElement(Ge, 1); +} + + + +//////////////////////////////////////////////////////////////// +void Eurogam::InitializeScorers() +{ + // Eurogam associated scorer + m_EurogamScorer = new G4MultiFunctionalDetector("EurogamScorer"); + G4VPrimitiveScorer* DetNbr = new GENERALSCORERS::PSDetectorNumber("DetectorNumber", "Eurogam", 0); + G4VPrimitiveScorer* Energy = new GENERALSCORERS::PSEnergy("Energy","Eurogam", 0); + G4VPrimitiveScorer* TOF = new GENERALSCORERS::PSTOF("Time", "Eurogam", 0); + G4VPrimitiveScorer* InteractionCoordinatesX = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX", "Eurogam", 0); + G4VPrimitiveScorer* InteractionCoordinatesY = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY", "Eurogam", 0); + G4VPrimitiveScorer* InteractionCoordinatesZ = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ", "Eurogam", 0); + G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta", "Eurogam", 0); + G4VPrimitiveScorer* InteractionCoordinatesAnglePhi = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi", "Eurogam", 0); + + //and register it to the multifunctionnal detector + m_EurogamScorer->RegisterPrimitive(DetNbr); + m_EurogamScorer->RegisterPrimitive(Energy); + m_EurogamScorer->RegisterPrimitive(TOF); + m_EurogamScorer->RegisterPrimitive(InteractionCoordinatesX); + m_EurogamScorer->RegisterPrimitive(InteractionCoordinatesY); + m_EurogamScorer->RegisterPrimitive(InteractionCoordinatesZ); + m_EurogamScorer->RegisterPrimitive(InteractionCoordinatesAngleTheta); + m_EurogamScorer->RegisterPrimitive(InteractionCoordinatesAnglePhi); + + // Add All Scorer to the Global Scorer Manager + G4SDManager::GetSDMpointer()->AddNewDetector(m_EurogamScorer); +} diff --git a/NPSimulation/src/GaspardTrackerAnnular.cc b/NPSimulation/src/GaspardTrackerAnnular.cc index af0e3c8b38ca1280ef285c4a580b6ab983b01ae0..fce7062f128579ad6562771a371ea74fa614a33a 100644 --- a/NPSimulation/src/GaspardTrackerAnnular.cc +++ b/NPSimulation/src/GaspardTrackerAnnular.cc @@ -179,10 +179,6 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber , //////////////////////////////////////////////////////////////// ////////////// Starting Volume Definition ////////////////////// //////////////////////////////////////////////////////////////// - // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". - // If don't you will have a Warning unused variable 'myPVP' - G4PVPlacement* PVPBuffer ; - // Name of the module G4String Name = "GPDAnnular" + DetectorNumber; @@ -197,12 +193,7 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber , // G4LogicalVolume* logicMM = new G4LogicalVolume(solidMM, Iron, Name, 0, 0, 0); G4LogicalVolume* logicMM = new G4LogicalVolume(solidMM, Vacuum, Name, 0, 0, 0); - PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , - logicMM , - Name , - world , - false , - 0); + new G4PVPlacement(G4Transform3D(*MMrot, MMpos), logicMM, Name, world, false, 0); logicMM->SetVisAttributes(G4VisAttributes::Invisible); if (m_non_sensitive_part_visiualisation) logicMM->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); @@ -219,7 +210,7 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber , G4LogicalVolume* logicVacBox = new G4LogicalVolume(solidVacBox, Vacuum, "logicVacBox", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, positionVacBox, logicVacBox, "G" + DetectorNumber + "VacBox", logicMM, false, 0); + G4PVPlacement(0, positionVacBox, logicVacBox, "G" + DetectorNumber + "VacBox", logicMM, false, 0); logicVacBox->SetVisAttributes(G4VisAttributes::Invisible); @@ -241,8 +232,8 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber , // G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, Aluminium, "logicAluStrip", 0, 0, 0); G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, Vacuum, "logicAluStrip", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, positionAluStripFront, logicAluStrip, "G" + DetectorNumber + "AluStripFront", logicMM, false, 0); - PVPBuffer = new G4PVPlacement(0, positionAluStripBack, logicAluStrip, "G" + DetectorNumber + "AluStripBack", logicMM, false, 0); + new G4PVPlacement(0, positionAluStripFront, logicAluStrip, "G" + DetectorNumber + "AluStripFront", logicMM, false, 0); + new G4PVPlacement(0, positionAluStripBack, logicAluStrip, "G" + DetectorNumber + "AluStripBack", logicMM, false, 0); logicAluStrip->SetVisAttributes(G4VisAttributes::Invisible); @@ -257,7 +248,7 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber , 360*deg); G4LogicalVolume* logicSilicon = new G4LogicalVolume(solidSilicon, Silicon, "logicSilicon", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicMM, false, 0); + new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicMM, false, 0); // Set First Stage sensible logicSilicon->SetSensitiveDetector(m_FirstStageScorer); @@ -283,7 +274,7 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber , G4LogicalVolume* logicSecondStage = new G4LogicalVolume(solidSecondStage, Silicon, "logicSecondStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, positionSecondStage, logicSecondStage, Name + "_SecondStage", logicMM, false, 0); + new G4PVPlacement(0, positionSecondStage, logicSecondStage, Name + "_SecondStage", logicMM, false, 0); ///Visualisation of Second Stage G4VisAttributes* SecondStageVisAtt = new G4VisAttributes(G4Colour(0.9, 0, 0)); // red @@ -309,7 +300,7 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber , G4LogicalVolume* logicThirdStage = new G4LogicalVolume(solidThirdStage, Silicon, "logicThirdStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, positionThirdStage, logicThirdStage, Name + "_ThirdStage", logicMM, false, 0); + new G4PVPlacement(0, positionThirdStage, logicThirdStage, Name + "_ThirdStage", logicMM, false, 0); ///Visualisation of Third Stage G4VisAttributes* ThirdStageVisAtt = new G4VisAttributes(G4Colour(0.0, 0.9, 0.)) ; // green diff --git a/NPSimulation/src/GaspardTrackerDummyShape.cc b/NPSimulation/src/GaspardTrackerDummyShape.cc index 96872ce593df10b6f7ca2e23d3ebdda740c41bfc..22cf70dfdf8de3603a5dbe085e08d3eae1d18a1c 100644 --- a/NPSimulation/src/GaspardTrackerDummyShape.cc +++ b/NPSimulation/src/GaspardTrackerDummyShape.cc @@ -22,6 +22,7 @@ * + 12/10/09: Change scorer scheme (N. de Sereville) * * + 01/10/10: Fix bug with TInteractionCoordinate map size in Read * * Sensitive (N. de Sereville) * + * + 01/07/11: Add dead layer support (N. de Sereville) * * * * * *****************************************************************************/ @@ -174,6 +175,11 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber, //////////////////////////////////////////////////////////////// /////////////////Material Definition /////////////////////////// //////////////////////////////////////////////////////////////// + // Al +// density = 2.702 * g / cm3; +// a = 26.98 * g / mole; +// G4Material* Aluminium = new G4Material("Aluminium", z = 13., a, density); + // Si a = 28.0855 * g / mole; density = 2.321 * g / cm3; @@ -191,15 +197,12 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber, //////////////////////////////////////////////////////////////// ////////////// Starting Volume Definition ////////////////////// //////////////////////////////////////////////////////////////// - // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". - // If don't you will have a Warning unused variable 'myPVP' - G4PVPlacement* PVPBuffer; G4String Name = "GPDDummyShape" + DetectorNumber ; G4Box* solidGPDDummyShape = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length); G4LogicalVolume* logicGPDDummyShape = new G4LogicalVolume(solidGPDDummyShape, Vacuum, Name, 0, 0, 0); - PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , + new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , logicGPDDummyShape , Name , world , @@ -217,7 +220,7 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber, G4ThreeVector positionMarkerU = MMCenter*0.8 + MMu*FirstStageFace/4; G4Box* solidMarkerU = new G4Box("solidMarkerU", FirstStageFace/4, 1*mm, 1*mm); G4LogicalVolume* logicMarkerU = new G4LogicalVolume(solidMarkerU, Vacuum, "logicMarkerU", 0, 0, 0); - PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot,positionMarkerU), logicMarkerU, "MarkerU", world, false, 0); + new G4PVPlacement(G4Transform3D(*MMrot,positionMarkerU), logicMarkerU, "MarkerU", world, false, 0); G4VisAttributes* MarkerUVisAtt= new G4VisAttributes(G4Colour(0.,0.,0.5)); //blue logicMarkerU->SetVisAttributes(MarkerUVisAtt); @@ -225,7 +228,7 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber, G4ThreeVector positionMarkerV = MMCenter*0.8 + MMv*FirstStageFace/4; G4Box* solidMarkerV = new G4Box("solidMarkerU", 1*mm, FirstStageFace/4, 1*mm); G4LogicalVolume* logicMarkerV = new G4LogicalVolume(solidMarkerV, Vacuum, "logicMarkerV", 0, 0, 0); - PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot,positionMarkerV), logicMarkerV, "MarkerV", world, false, 0); + new G4PVPlacement(G4Transform3D(*MMrot,positionMarkerV), logicMarkerV, "MarkerV", world, false, 0); G4VisAttributes* MarkerVVisAtt= new G4VisAttributes(G4Colour(0.,0.5,0.)); //green logicMarkerV->SetVisAttributes(MarkerVVisAtt); @@ -234,13 +237,26 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber, ///////////////// First Stage Construction ///////////////////// //////////////////////////////////////////////////////////////// if (wFirstStage) { + // Dead layers +/* G4ThreeVector positionFirstStageDLFront = G4ThreeVector(0, 0, FirstStage_DL_Front_PosZ); + G4ThreeVector positionFirstStageDLBack = G4ThreeVector(0, 0, FirstStage_DL_Back_PosZ); + + G4Box* solidFirstStageDL = new G4Box("solidFirstStageDL", 0.5*FirstStageFace, 0.5*FirstStageFace, 0.5*FirstStageDeadLayer); + G4LogicalVolume* logicFirstStageDL = new G4LogicalVolume(solidFirstStageDL, Aluminium, "logicFirstStageDL", 0, 0, 0); + + PVPBuffer = new G4PVPlacement(0, positionFirstStageDLFront, logicFirstStageDL, Name + "_DLFront", logicGPDDummyShape, false, 0); + PVPBuffer = new G4PVPlacement(0, positionFirstStageDLBack, logicFirstStageDL, Name + "_DLBack", logicGPDDummyShape, false, 0); + + logicFirstStageDL->SetVisAttributes(G4VisAttributes::Invisible); +*/ + // Silicon detector itself G4ThreeVector positionFirstStage = G4ThreeVector(0, 0, FirstStage_PosZ); G4Box* solidFirstStage = new G4Box("solidFirstStage", 0.5*FirstStageFace, 0.5*FirstStageFace, 0.5*FirstStageThickness); G4LogicalVolume* logicFirstStage = new G4LogicalVolume(solidFirstStage, Silicon, "logicFirstStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionFirstStage, logicFirstStage, Name + "_FirstStage", @@ -260,13 +276,26 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber, //////////////////// Second Stage Construction //////////////// //////////////////////////////////////////////////////////////// if (wSecondStage) { + // Dead layers +/* G4ThreeVector positionSecondStageDLFront = G4ThreeVector(0, 0, SecondStage_DL_Front_PosZ); + G4ThreeVector positionSecondStageDLBack = G4ThreeVector(0, 0, SecondStage_DL_Back_PosZ); + + G4Box* solidSecondStageDL = new G4Box("solidSecondStageDL", 0.5*SecondStageFace, 0.5*SecondStageFace, 0.5*SecondStageDeadLayer); + G4LogicalVolume* logicSecondStageDL = new G4LogicalVolume(solidSecondStageDL, Aluminium, "logicSecondStageDL", 0, 0, 0); + + PVPBuffer = new G4PVPlacement(0, positionSecondStageDLFront, logicSecondStageDL, Name + "_DLFront", logicGPDDummyShape, false, 0); + PVPBuffer = new G4PVPlacement(0, positionSecondStageDLBack, logicSecondStageDL, Name + "_DLBack", logicGPDDummyShape, false, 0); + + logicSecondStageDL->SetVisAttributes(G4VisAttributes::Invisible); +*/ + // Second stage silicon detector G4ThreeVector positionSecondStage = G4ThreeVector(0, 0, SecondStage_PosZ); G4Box* solidSecondStage = new G4Box("solidSecondStage", 0.5*SecondStageFace, 0.5*SecondStageFace, 0.5*SecondStageThickness); G4LogicalVolume* logicSecondStage = new G4LogicalVolume(solidSecondStage, Silicon, "logicSecondStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionSecondStage, logicSecondStage, Name + "_SecondStage", @@ -286,13 +315,26 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber, ///////////////// Third Stage Construction ///////////////////// //////////////////////////////////////////////////////////////// if (wThirdStage) { + // Dead layers +/* G4ThreeVector positionThirdStageDLFront = G4ThreeVector(0, 0, ThirdStage_DL_Front_PosZ); + G4ThreeVector positionThirdStageDLBack = G4ThreeVector(0, 0, ThirdStage_DL_Back_PosZ); + + G4Box* solidThirdStageDL = new G4Box("solidThirdStageDL", 0.5*ThirdStageFace, 0.5*ThirdStageFace, 0.5*ThirdStageDeadLayer); + G4LogicalVolume* logicThirdStageDL = new G4LogicalVolume(solidThirdStageDL, Aluminium, "logicThirdStageDL", 0, 0, 0); + + PVPBuffer = new G4PVPlacement(0, positionThirdStageDLFront, logicThirdStageDL, Name + "_DLFront", logicGPDDummyShape, false, 0); + PVPBuffer = new G4PVPlacement(0, positionThirdStageDLBack, logicThirdStageDL, Name + "_DLBack", logicGPDDummyShape, false, 0); + + logicThirdStageDL->SetVisAttributes(G4VisAttributes::Invisible); +*/ + // Third stage silicon detector G4ThreeVector positionThirdStage = G4ThreeVector(0, 0, ThirdStage_PosZ); G4Box* solidThirdStage = new G4Box("solidThirdStage", 0.5*ThirdStageFace, 0.5*ThirdStageFace, 0.5*ThirdStageThickness); G4LogicalVolume* logicThirdStage = new G4LogicalVolume(solidThirdStage, Silicon, "logicThirdStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionThirdStage, logicThirdStage, Name + "_ThirdStage", @@ -343,12 +385,10 @@ void GaspardTrackerDummyShape::ReadConfiguration(string Path) bool check_Theta = false; bool check_Phi = false; bool check_R = false; - bool check_beta = false; bool check_FirstStage = false; bool check_SecondStage = false; bool check_ThirdStage = false; - bool check_NStrip = false; bool checkVis = false; while (!ConfigFile.eof()) { @@ -449,7 +489,6 @@ void GaspardTrackerDummyShape::ReadConfiguration(string Path) cout << "R: " << R / mm << endl; } else if (DataBuffer.compare(0, 5, "BETA=") == 0) { - check_beta = true; ConfigFile >> DataBuffer ; beta_u = atof(DataBuffer.c_str()) ; beta_u = beta_u * deg ; @@ -479,9 +518,9 @@ void GaspardTrackerDummyShape::ReadConfiguration(string Path) } else if (DataBuffer.compare(0, 7, "NSTRIP=") == 0) { - check_NStrip = true ; ConfigFile >> DataBuffer; NSTRIP = atof(DataBuffer.c_str()) ; + NSTRIP *= 1; } else if (DataBuffer.compare(0, 4, "VIS=") == 0) { @@ -516,7 +555,6 @@ void GaspardTrackerDummyShape::ReadConfiguration(string Path) check_Theta = false; check_Phi = false; check_R = false; - check_beta = false; check_FirstStage = false; check_SecondStage = false; check_ThirdStage = false; @@ -787,7 +825,6 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event) G4int TTrackID = Time_itr->first - N; G4double T = *(Time_itr->second); if (TTrackID == NTrackID) { - T = RandGauss::shoot(T, ResoTimeGpd); ms_Event->SetGPDTrkFirstStageFrontTTime(RandGauss::shoot(T, ResoTimeGpd)); ms_Event->SetGPDTrkFirstStageBackTTime(RandGauss::shoot(T, ResoTimeGpd)); } diff --git a/NPSimulation/src/GaspardTrackerSquare.cc b/NPSimulation/src/GaspardTrackerSquare.cc index 25319d58224ff162e01746914f2b55df5286ce72..e53923e0a13588cc5bdb80e955c6877be1b92fc4 100644 --- a/NPSimulation/src/GaspardTrackerSquare.cc +++ b/NPSimulation/src/GaspardTrackerSquare.cc @@ -228,15 +228,12 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber, //////////////////////////////////////////////////////////////// ////////////// Starting Volume Definition ////////////////////// //////////////////////////////////////////////////////////////// - // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". - // If don't you will have a Warning unused variable 'myPVP' - G4PVPlacement* PVPBuffer ; G4String Name = "GPDSquare" + DetectorNumber; G4Box* solidGPDSquare = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length); G4LogicalVolume* logicGPDSquare = new G4LogicalVolume(solidGPDSquare, Vacuum, Name, 0, 0, 0); - PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos), logicGPDSquare, Name, world, false, 0); + new G4PVPlacement(G4Transform3D(*MMrot, MMpos), logicGPDSquare, Name, world, false, 0); logicGPDSquare->SetVisAttributes(G4VisAttributes::Invisible); if (m_non_sensitive_part_visiualisation) logicGPDSquare->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); @@ -274,13 +271,7 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber, G4Box* solidFirstStage = new G4Box("solidFirstStage", 0.5*FirstStageFace, 0.5*FirstStageFace, 0.5*FirstStageThickness); G4LogicalVolume* logicFirstStage = new G4LogicalVolume(solidFirstStage, Silicon, "logicFirstStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, - positionFirstStage, - logicFirstStage, - Name + "_FirstStage", - logicGPDSquare, - false, - 0); + new G4PVPlacement(0, positionFirstStage, logicFirstStage, Name + "_FirstStage", logicGPDSquare, false, 0); // Set First Stage sensible logicFirstStage->SetSensitiveDetector(m_FirstStageScorer); @@ -300,13 +291,7 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber, G4Box* solidSecondStage = new G4Box("solidSecondStage", 0.5*SecondStageFace, 0.5*SecondStageFace, 0.5*SecondStageThickness); G4LogicalVolume* logicSecondStage = new G4LogicalVolume(solidSecondStage, Silicon, "logicSecondStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, - positionSecondStage, - logicSecondStage, - Name + "_SecondStage", - logicGPDSquare, - false, - 0); + new G4PVPlacement(0, positionSecondStage, logicSecondStage, Name + "_SecondStage", logicGPDSquare, false, 0); // Set Second Stage sensible logicSecondStage->SetSensitiveDetector(m_SecondStageScorer); @@ -326,13 +311,7 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber, G4Box* solidThirdStage = new G4Box("solidThirdStage", 0.5*ThirdStageFace, 0.5*ThirdStageFace, 0.5*ThirdStageThickness); G4LogicalVolume* logicThirdStage = new G4LogicalVolume(solidThirdStage, Silicon, "logicThirdStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, - positionThirdStage, - logicThirdStage, - Name + "_ThirdStage", - logicGPDSquare, - false, - 0); + new G4PVPlacement(0, positionThirdStage, logicThirdStage, Name + "_ThirdStage", logicGPDSquare, false, 0); // Set Third Stage sensible logicThirdStage->SetSensitiveDetector(m_ThirdStageScorer); @@ -377,7 +356,6 @@ void GaspardTrackerSquare::ReadConfiguration(string Path) bool check_Theta = false ; bool check_Phi = false ; bool check_R = false ; - bool check_beta = false ; bool check_FirstStage = false ; bool check_SecondStage = false ; @@ -490,7 +468,6 @@ void GaspardTrackerSquare::ReadConfiguration(string Path) } else if (DataBuffer.compare(0, 5, "BETA=") == 0) { - check_beta = true; ConfigFile >> DataBuffer ; beta_u = atof(DataBuffer.c_str()) ; beta_u = beta_u * deg ; @@ -558,7 +535,6 @@ void GaspardTrackerSquare::ReadConfiguration(string Path) check_Theta = false ; check_Phi = false ; check_R = false ; - check_beta = false ; check_FirstStage = false ; check_SecondStage = false ; check_ThirdStage = false ; diff --git a/NPSimulation/src/GaspardTrackerTrapezoid.cc b/NPSimulation/src/GaspardTrackerTrapezoid.cc index 9658c41e425a69827c577851f292619f538ca42f..b0beab40b50408669a6104c907ef497686c59e46 100644 --- a/NPSimulation/src/GaspardTrackerTrapezoid.cc +++ b/NPSimulation/src/GaspardTrackerTrapezoid.cc @@ -224,9 +224,6 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber , //////////////////////////////////////////////////////////////// ////////////// Starting Volume Definition ////////////////////// //////////////////////////////////////////////////////////////// - // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". - // If don't you will have a Warning unused variable 'myPVP' - G4PVPlacement* PVPBuffer ; G4String Name = "GPDTrapezoid" + DetectorNumber ; // Definition of the volume containing the sensitive detector @@ -236,7 +233,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber , Height/2, BaseLarge/2, BaseSmall/2, 0*deg); G4LogicalVolume* logicGPDTrapezoid = new G4LogicalVolume(solidGPDTrapezoid, Vacuum, Name, 0, 0, 0); - PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos), logicGPDTrapezoid, Name, world, false, 0); + new G4PVPlacement(G4Transform3D(*MMrot, MMpos), logicGPDTrapezoid, Name, world, false, 0); logicGPDTrapezoid->SetVisAttributes(G4VisAttributes::Invisible); if (m_non_sensitive_part_visiualisation) logicGPDTrapezoid->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); @@ -277,7 +274,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber , FirstStageHeight/2, FirstStageBaseLarge/2, FirstStageBaseSmall/2, 0*deg); G4LogicalVolume* logicFirstStage = new G4LogicalVolume(solidFirstStage, Silicon, "logicFirstStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionFirstStage, logicFirstStage, Name + "_FirstStage", @@ -306,7 +303,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber , FirstStageHeight/2, FirstStageBaseLarge/2, FirstStageBaseSmall/2, 0*deg); G4LogicalVolume* logicSecondStage = new G4LogicalVolume(solidSecondStage, Silicon, "logicSecondStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionSecondStage, logicSecondStage, Name + "_SecondStage", @@ -335,7 +332,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber , FirstStageHeight/2, FirstStageBaseLarge/2, FirstStageBaseSmall/2, 0*deg); G4LogicalVolume* logicThirdStage = new G4LogicalVolume(solidThirdStage, Silicon, "logicThirdStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionThirdStage, logicThirdStage, Name + "_ThirdStage", @@ -386,7 +383,6 @@ void GaspardTrackerTrapezoid::ReadConfiguration(string Path) bool check_Theta = false ; bool check_Phi = false ; bool check_R = false ; - bool check_beta = false ; bool check_FirstStage = false ; bool check_SecondStage = false ; @@ -499,7 +495,6 @@ void GaspardTrackerTrapezoid::ReadConfiguration(string Path) } else if (DataBuffer.compare(0, 5, "BETA=") == 0) { - check_beta = true; ConfigFile >> DataBuffer ; beta_u = atof(DataBuffer.c_str()) ; beta_u = beta_u * deg ; @@ -567,7 +562,6 @@ void GaspardTrackerTrapezoid::ReadConfiguration(string Path) check_Theta = false ; check_Phi = false ; check_R = false ; - check_beta = false ; check_FirstStage = false ; check_SecondStage = false ; check_ThirdStage = false ; diff --git a/NPSimulation/src/ParisCluster.cc b/NPSimulation/src/ParisCluster.cc index c80d9b9c44656b900a0acb5a744082dc4cbafb64..df56f1e006bea64ce88f6a76e8352abe37c967bc 100644 --- a/NPSimulation/src/ParisCluster.cc +++ b/NPSimulation/src/ParisCluster.cc @@ -9,9 +9,9 @@ * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * * * * Creation Date : 04/12/09 * - * Last update : * + * Last update : 20/07/11 * *---------------------------------------------------------------------------* - * Decription: Define a cluster of 9 phoswitch modules for the Paris detector* + * Decription: Define a cluster of 9 phoswich modules for the Paris detector * * * *---------------------------------------------------------------------------* * Comment: * @@ -199,110 +199,107 @@ void ParisCluster::VolumeMaker(G4int DetecNumber, //////////////////////////////////////////////////////////////// ////////////// Starting Volume Definition ////////////////////// //////////////////////////////////////////////////////////////// - // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". - // If don't you will have a Warning unused variable 'myPVP' - G4PVPlacement* PVPBuffer; G4String Name = "ParisCluster" + DetectorNumber ; // Mother Volume G4Box* solidParisCluster = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length); G4LogicalVolume* logicParisCluster = new G4LogicalVolume(solidParisCluster, Vacuum, Name, 0, 0, 0); - PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , - logicParisCluster , - Name , - world , - false , - 0); + new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , + logicParisCluster , + Name , + world , + false , + 0); logicParisCluster->SetVisAttributes(G4VisAttributes::Invisible); if (m_non_sensitive_part_visiualisation) logicParisCluster->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); - // Phoswich construction + // Phoswich volume construction (empty volume) G4ThreeVector positionPhoSwStage = G4ThreeVector(LaBr3Face+InterSpace, LaBr3Face+InterSpace, 0.); - G4Box* solidPhoSwStage = new G4Box(Name+"_PhoSwStage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*(LaBr3Thickness+CsIThickness)); - G4LogicalVolume* logicPhoSwStage = new G4LogicalVolume(solidPhoSwStage, LaBr3, "logicPhoSwStage", 0, 0, 0); - - PVPBuffer = new G4PVPlacement(0, - positionPhoSwStage, - logicPhoSwStage, - Name+"_PhoSwStage", - logicParisCluster, - false, - 0); + G4Box* solidPhoSwStage = new G4Box(Name+"_PhoSwStage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*Length); + G4LogicalVolume* logicPhoSwStage = new G4LogicalVolume(solidPhoSwStage, Vacuum, "logicPhoSwStage", 0, 0, 0); + + new G4PVPlacement(0, + positionPhoSwStage, + logicPhoSwStage, + Name+"_PhoSwStage", + logicParisCluster, + false,8); + // 0); positionPhoSwStage = G4ThreeVector(0., LaBr3Face+InterSpace, 0.); - PVPBuffer = new G4PVPlacement(0, + G4PVPlacement(0, positionPhoSwStage, logicPhoSwStage, Name+"_PhoSwStage", logicParisCluster, - false, - 1); + false,7); + // 1); positionPhoSwStage = G4ThreeVector(-(LaBr3Face+InterSpace), LaBr3Face+InterSpace, 0.); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionPhoSwStage, logicPhoSwStage, Name+"_PhoSwStage", logicParisCluster, - false, - 2); + false,6); + //2); positionPhoSwStage = G4ThreeVector(LaBr3Face+InterSpace, 0., 0.); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionPhoSwStage, logicPhoSwStage, Name+"_PhoSwStage", logicParisCluster, - false, - 3); + false,5); + //3); positionPhoSwStage = G4ThreeVector(0., 0., 0.); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionPhoSwStage, logicPhoSwStage, Name+"_PhoSwStage", logicParisCluster, - false, - 4); + false, 4); + //4); positionPhoSwStage = G4ThreeVector(-(LaBr3Face+InterSpace), 0., 0.); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionPhoSwStage, logicPhoSwStage, Name+"_PhoSwStage", logicParisCluster, - false, - 5); + false, 3); + //5); positionPhoSwStage = G4ThreeVector(LaBr3Face+InterSpace, -(LaBr3Face+InterSpace), 0.); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionPhoSwStage, logicPhoSwStage, Name+"_PhoSwStage", logicParisCluster, - false, - 6); + false,2); + //6); positionPhoSwStage = G4ThreeVector(0.,-(LaBr3Face+InterSpace), 0.); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionPhoSwStage, logicPhoSwStage, Name+"_PhoSwStage", logicParisCluster, - false, - 7); + false, 1); + //7); positionPhoSwStage = G4ThreeVector(-(LaBr3Face+InterSpace),-(LaBr3Face+InterSpace), 0.); - PVPBuffer = new G4PVPlacement(0, + new G4PVPlacement(0, positionPhoSwStage, logicPhoSwStage, Name+"_PhoSwStage", logicParisCluster, - false, - 8); + false, 0); + //8); // LaBr3 @@ -311,13 +308,13 @@ void ParisCluster::VolumeMaker(G4int DetecNumber, G4Box* solidLaBr3Stage = new G4Box(Name+"_LaBr3Stage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*LaBr3Thickness); G4LogicalVolume* logicLaBr3Stage = new G4LogicalVolume(solidLaBr3Stage, LaBr3, "logicLaBr3Stage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, - positionLaBr3Stage, - logicLaBr3Stage, - Name+"_LaBr3Stage", - logicPhoSwStage, - false, - 0); + new G4PVPlacement(0, + positionLaBr3Stage, + logicLaBr3Stage, + Name+"_LaBr3Stage", + logicPhoSwStage, + false, + 0); @@ -336,13 +333,13 @@ void ParisCluster::VolumeMaker(G4int DetecNumber, //G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, CsI, "logicCsIStage", 0, 0, 0); G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, NaI, "logicCsIStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, - positionCsIStage, - logicCsIStage, - Name + "_CsIStage", - logicPhoSwStage, - false, - 0); + new G4PVPlacement(0, + positionCsIStage, + logicCsIStage, + Name + "_CsIStage", + logicPhoSwStage, + false, + 0); // Set CsI sensible logicCsIStage->SetSensitiveDetector(m_CsIStageScorer); @@ -384,7 +381,6 @@ void ParisCluster::ReadConfiguration(string Path) bool check_Theta = false; bool check_Phi = false; bool check_R = false; - bool check_beta = false; bool checkVis = false; @@ -400,7 +396,7 @@ void ParisCluster::ReadConfiguration(string Path) ConfigFile >> DataBuffer; // Comment Line if (DataBuffer.compare(0, 1, "%") == 0) {/*do nothing */;} - + // Position method else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) { check_A = true; @@ -486,7 +482,6 @@ void ParisCluster::ReadConfiguration(string Path) cout << "R: " << R / mm << endl; } else if (DataBuffer.compare(0, 5, "BETA=") == 0) { - check_beta = true; ConfigFile >> DataBuffer ; beta_u = atof(DataBuffer.c_str()) ; beta_u = beta_u * deg ; @@ -512,11 +507,11 @@ void ParisCluster::ReadConfiguration(string Path) if ((check_A && check_B && check_C && check_D && checkVis) && !(check_Theta && check_Phi && check_R)) { ReadingStatus = false; - check_A = false; - check_C = false; - check_B = false; - check_D = false; - checkVis = false; + check_A = false; + check_C = false; + check_B = false; + check_D = false; + checkVis = false; AddModule(A, B, C, D); } @@ -526,11 +521,10 @@ void ParisCluster::ReadConfiguration(string Path) !(check_A && check_B && check_C && check_D)) { ReadingStatus = false; check_Theta = false; - check_Phi = false; - check_R = false; - check_beta = false; - checkVis = false; - + check_Phi = false; + check_R = false; + checkVis = false; + AddModule(R, Theta, Phi, beta_u, beta_v, beta_w); } } @@ -652,8 +646,9 @@ void ParisCluster::ReadSensitive(const G4Event* event) momentum = event->GetPrimaryVertex()->GetPrimary()->GetMomentum(); G4double EGamma = momentum.getR(); // for photon E=p - G4double EGammaMin = EGamma-4*ResoFirstStage; - G4double EGammaMax = EGamma+4*ResoFirstStage; + EGamma *= 1; + //G4double EGammaMin = EGamma-4*ResoFirstStage; + //G4double EGammaMax = EGamma+4*ResoFirstStage; // First Stage (LaBr3) std::map<G4int, G4int*>::iterator DetectorNumber_itr; @@ -683,8 +678,10 @@ void ParisCluster::ReadSensitive(const G4Event* event) // NULL pointer are given to avoid warning at compilation // Second Stage (CsI) std::map<G4int, G4int*>::iterator CsIDetectorNumber_itr; + std::map<G4int, G4int*>::iterator CsICrystalNumber_itr; // added by Anna std::map<G4int, G4double*>::iterator CsIStageEnergy_itr ; G4THitsMap<G4int>* CsIDetectorNumberHitMap = NULL ; + G4THitsMap<G4int>* CsICrystalNumberHitMap = NULL ; // added by Anna G4THitsMap<G4double>* CsIStageEnergyHitMap = NULL ; @@ -753,6 +750,14 @@ void ParisCluster::ReadSensitive(const G4Event* event) G4int CsIDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisCluster/CsIDetectorNumber") ; CsIDetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsIDetCollectionID)) ; CsIDetectorNumber_itr = CsIDetectorNumberHitMap->GetMap()->begin() ; + + //CsI Crystal Number // added by Anna + G4int CsICryCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisCluster/CsICrystalNumber") ; // added by Anna + CsICrystalNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsICryCollectionID)) ; // added by Anna + CsICrystalNumber_itr = CsICrystalNumberHitMap->GetMap()->begin() ; // added by Anna + + + //CsI Energy G4int CsIStageEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisCluster/CsIStageEnergy") ; CsIStageEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIStageEnergyCollectionID)) ; @@ -760,8 +765,8 @@ void ParisCluster::ReadSensitive(const G4Event* event) // Check the size of different map - G4int sizeN = DetectorNumberHitMap->entries(); // number of objects hit by trackID=1 (can be the same object hit several time) - G4int sizeC = CrystalNumberHitMap->entries(); + G4int sizeN = DetectorNumberHitMap->entries(); // number of hits by trackID=1 (can be the same object hit several time) + G4int sizeC = CrystalNumberHitMap->entries(); // number of hits in all crystal by trackID=1 G4int sizeE = EnergyHitMap->entries(); // = number of steps with edep non null G4int sizeT = TimeHitMap->entries(); //G4int sizeX = PosXHitMap->entries(); @@ -770,21 +775,28 @@ void ParisCluster::ReadSensitive(const G4Event* event) //G4int sizeY = YHitMap->entries(); G4int sizeNCsI= CsIDetectorNumberHitMap->entries(); + G4int sizeCCsI= CsICrystalNumberHitMap->entries(); // added by Anna G4int sizeECsI= CsIStageEnergyHitMap->entries(); - sizeC *= 1; // remove warning at compilation - sizeECsI *= 1; // remove warning at compilation - //G4cout <<"SizeN=" << sizeN << endl; - //G4cout <<"SizeC=" << sizeC << endl; - //G4cout <<"SizeN CsI =" << sizeNCsI << endl; - //G4cout <<"SizeE CsI =" << sizeECsI << endl; + sizeC *= 1; // remove warning at compilation added by Anna + sizeCCsI *= 1; // remove warning at compilation added by Anna + sizeECsI *= 1; // remove warning at compilation added by Anna + /* + G4cout <<"SizeN=" << sizeN << endl; + G4cout <<"SizeC=" << sizeC << endl; + G4cout <<"SizeE=" << sizeE << endl; + G4cout <<"SizeT=" << sizeT << endl; + G4cout <<"SizeN CsI =" << sizeNCsI << endl; + G4cout <<"SizeC CsI =" << sizeCCsI << endl; + G4cout <<"SizeE CsI =" << sizeECsI << endl; + */ //DetectorNumberHitMap->PrintAllHits(); if (sizeE != sizeT) { - G4cout << "No match size PARIS Event Map: sE:" - << sizeE << " sT:" << sizeT << endl ; +// G4cout << "No match size PARIS Event Map: sE:" +// << sizeE << " sT:" << sizeT << endl ; // if (sizeE != sizeX) { //G4cout << "No match size PARIS Event Map: sE:" @@ -795,213 +807,356 @@ void ParisCluster::ReadSensitive(const G4Event* event) //G4cout <<"SizeN=" << sizeN << G4endl; - - if(sizeN>0) + //if at least 1 cluster is hit: + if(sizeN>0) { // Deal with trackID=1: - G4int N_first= *(DetectorNumber_itr->second); // ID of first det hit + G4int N_first= *(DetectorNumber_itr->second); // ID of first hit det (det=cluster) G4int NTrackID = DetectorNumber_itr->first - N_first; // first trackID dealt with (not always =1) G4double E = *(Energy_itr->second); G4double T = *(Time_itr->second); - G4int NCryst= *(CrystalNumber_itr->second); - - NCryst *= 1; //remove warning at compilation - //G4cout <<"NTrackID=" << NTrackID << G4endl; - //G4cout <<"N_first=" << N_first << G4endl; - //G4cout <<"CrystalNumber_first=" << NCryst << G4endl; - //G4cout <<"Energy first=" << E << G4endl; - //G4cout <<"Time first =" << T << G4endl; - - - if(sizeN>1) - { - Energy_itr++; - Time_itr++; - CrystalNumber_itr++; - DetectorNumber_itr++; - - for (G4int l = 1; l < sizeN ; l++) { // loop on all the other tracks - - - G4int N= *(DetectorNumber_itr->second); // ID of det hit - NTrackID = DetectorNumber_itr->first - N; // ID of the track - - //G4cout <<"l=" << l << G4endl; - //G4cout <<"N=" << N << G4endl; - //G4cout <<"DetectorNumber_itr->first =" << DetectorNumber_itr->first << G4endl; - //G4cout <<"NTrackID=" << NTrackID << G4endl; - - if(N==N_first) - { - E += *(Energy_itr->second); - - }else // we fill the tree for the first detector hit and move to the next detector hit - { - if(E!=0) - { - // Fill detector number - ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first); - ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first); - // Fill Energy - //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); - E=RandGauss::shoot(E, ResoFirstStage); - ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree - if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); - - // Fill Time - ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); - - } - - N_first=N; - E=*(Energy_itr->second); - - } - + G4int NCryst= *(CrystalNumber_itr->second); // ID of first hit crystal + + NCryst *= 1; //remove warning at compilation // added by Anna + NTrackID *= 1; //remove warning at compilation + /* + G4cout <<"NTrackID=" << NTrackID << G4endl; + G4cout <<"N_first=" << N_first << G4endl; + G4cout <<"CrystalNumber_first=" << NCryst << G4endl; + G4cout <<"Energy first=" << E << G4endl; + G4cout <<"Time first =" << T << G4endl; + cout<<"*******"<<endl; + + //added by Nicolas on the model of gaspard scorers 8/7/11 + CrystalNumber_itr = CrystalNumberHitMap->GetMap()->begin(); + + for (G4int l = 0 ; l < sizeC ; l++) { + G4double NCryst = *(CrystalNumber_itr->second); + G4int CTrackID = CrystalNumber_itr->first - N_first - NCryst; + G4cout << N_first << " " << NTrackID << " " << CTrackID << " " << NCryst << G4endl; + if (CTrackID == NTrackID) { + G4cout << "****************** NCryst " << NCryst << G4endl; + //ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage)); + //ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage)); + } + CrystalNumber_itr++; + } + //rewind: + for (G4int l = 0 ; l < sizeC ; l++) { + CrystalNumber_itr--; + } + */ + + //if there is more than 1 interaction in crystals (1 interaction = 1 hit) + if(sizeN>1) + { + + //At clusters'level + for (G4int l = 1; l < sizeN ; l++) { // loop on all the other hits + + Energy_itr++; + Time_itr++; + DetectorNumber_itr++; + CrystalNumber_itr++; + + G4int N= *(DetectorNumber_itr->second); // ID of hit cluster + G4int Nc= *(CrystalNumber_itr->second); // ID of hit crystal + + //G4cout <<"l=" << l << G4endl; + //G4cout <<"DetectorNumber_itr->first =" << DetectorNumber_itr->first << G4endl; + //G4cout <<"TrackID=" << NTrackID << G4endl; + //G4cout <<"CTrackID=" << CTrackID << G4endl; + + // At clusters'level: + if(N==N_first) // if the hit is still in the same cluster + { + // At crystals'level: + if(Nc==NCryst) // if we are still in the same crystal than the first hit crystal + { + E += *(Energy_itr->second); // if same detector then sum up the energy + + // G4cout <<"Energy=" << E << G4endl; + + }else // we fill the tree for the first hit crystal and move to the next hit crystal if any + { + if(E!=0) + { + //G4cout <<" -1- filling tree with energy=" << E << G4endl; + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first ); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first ); + ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); // added by Anna + ms_Event->SetPARISLaBr3StageTCrystalNbr(NCryst); // added by Anna + // Fill Energy + //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree with energy deposited in first detector + //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + + } + + + NCryst=Nc; // continue with the next hit crystal + E=*(Energy_itr->second); + } + + + }else // if it's a new cluster, one fills the tree with first hit and inspect this new cluster + { + + if(E!=0) + { +// G4cout <<" -2- filling tree with energy=" << E << G4endl; + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first ); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first ); + ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); // added by Anna + ms_Event->SetPARISLaBr3StageTCrystalNbr(NCryst); // added by Anna + // Fill Energy + //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree with energy deposited in first detector + //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + + } + + N_first=N; // continue with the new hit cluster + NCryst=Nc; // and continue with the new hit crystal in this new cluster + E=*(Energy_itr->second); + + } - //G4cout <<"Energy=" << E << G4endl; - //G4cout <<"Time =" << T << G4endl; + //G4cout <<"Energy=" << E << G4endl; + //G4cout <<"Time =" << T << G4endl; - // Always fill the tree at the end of the loop: - if(l==(sizeN-1) && E!=0) - { - // Fill detector number - ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first); - ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first); - // Fill Energy - //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); - E=RandGauss::shoot(E, ResoFirstStage); - ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree - if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); - - // Fill Time - ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); - } - - Energy_itr++; - DetectorNumber_itr++; - } - }else - { - // Fill the tree if sizeN=1: - if(E!=0) - { - // Fill detector number - ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first); - ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first); - // Fill Energy - //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); - E=RandGauss::shoot(E, ResoFirstStage); - ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree - if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); - - // Fill Time - ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); - } - } - - + + // Always fill the tree at the end of the loop: + if(l==(sizeN-1) && E!=0) + { +// G4cout <<"-3- filling tree with energy=" << E << G4endl; + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first); + ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); // added by Anna + ms_Event->SetPARISLaBr3StageTCrystalNbr(NCryst); // added by Anna +// cout<<NTrackID<<" filled at the end "<<NCryst<<endl; + + // Fill Energy + //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree + //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + } + + + } // end of the l loop + + }else + { + // Fill the tree if sizeN=1 and E>0 + if(E!=0) + { +// G4cout <<" -4- filling tree with energy=" << E << G4endl; + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first); + ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); + ms_Event->SetPARISLaBr3StageTCrystalNbr(NCryst); // added by Anna +// cout<<NTrackID<<" filled with sizeN=1 "<<NCryst<<endl; + + + // Fill Energy + //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree + //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + } + } + } ///////// For CsI stage: - EGammaMin = EGamma-4*ResoSecondStage; - EGammaMax = EGamma+4*ResoSecondStage; + //EGammaMin = EGamma-4*ResoSecondStage; + //EGammaMax = EGamma+4*ResoSecondStage; if(sizeNCsI>0) { // Deal with trackID=1: G4int NCsI_first= *(CsIDetectorNumber_itr->second); // ID of first det hit G4int NCsITrackID = CsIDetectorNumber_itr->first - NCsI_first; // first trackID dealt with (not always =1) G4double E_CsI=*(CsIStageEnergy_itr->second); // Energy second stage + G4int NCsICryst= *(CsICrystalNumber_itr->second); //9/6 Nicolas and Anna added //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl; //G4cout <<"NCsI_first=" << NCsI_first << G4endl; //G4cout <<"CsI Energy first=" << E_CsI << G4endl; - if(sizeNCsI>1) - { - CsIDetectorNumber_itr++; - CsIStageEnergy_itr++; - - for (G4int l = 1; l < sizeNCsI ; l++) { // loop on all the other tracks - + //added by Anna and Nicolas on the model of gaspard scorers 8/7/11 + CsICrystalNumber_itr = CsICrystalNumberHitMap->GetMap()->begin(); + /* + for (G4int l = 0 ; l < sizeCCsI ; l++) { + G4double NCsICryst = *(CsICrystalNumber_itr->second); + G4int CCsITrackID = CsICrystalNumber_itr->first - NCsI_first - NCsICryst; + G4cout << NCsI_first << " " << NCsITrackID << " " << CCsITrackID << " " << NCsICryst << G4endl; + if (CCsITrackID == NCsITrackID) { + G4cout << "****************** NCsICryst " << NCsICryst << G4endl; + //ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage)); + //ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage)); + } + CsICrystalNumber_itr++; + } + //rewind: + for (G4int l = 0 ; l < sizeCCsI ; l++) { + CsICrystalNumber_itr--; + } + */ + + if(sizeNCsI>1) + { + for (G4int l = 1; l < sizeNCsI ; l++) { // loop on all the other tracks + + CsIStageEnergy_itr++; + CsIDetectorNumber_itr++; + CsICrystalNumber_itr++; - G4int NCsI= *(CsIDetectorNumber_itr->second); // ID of det hit - NCsITrackID = CsIDetectorNumber_itr->first - NCsI; // ID of the track - - //G4cout <<"l=" << l << G4endl; - //G4cout <<"NCsI=" << NCsI << G4endl; - //G4cout <<"DetectorNumber_itr->first =" << CsIDetectorNumber_itr->first << G4endl; - //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl; - - if(NCsI==NCsI_first) - { - - E_CsI += *(CsIStageEnergy_itr->second); - - }else // we fill the tree for the first detector hit and move to the next detector hit - { - if(E_CsI!=0) - { - // Fill detector number - ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first); - ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first); - // Fill Energy - // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); - E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); - ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree - if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); - - // Fill Time - //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); - } - - NCsI_first=NCsI; - E_CsI=*(CsIStageEnergy_itr->second); - } + G4int NCsI= *(CsIDetectorNumber_itr->second); // ID of hit cluster + //NCsITrackID = CsIDetectorNumber_itr->first - NCsI; // ID of the track + G4int NcCsI= *(CsICrystalNumber_itr->second); // ID of hit CsI crystal + //NcCsITrackID = CsIDetectorNumber_itr->first - NCsI; // ID of the track + + //G4cout <<"l=" << l << G4endl; + //G4cout <<"NCsI=" << NCsI << G4endl; + //G4cout <<"DetectorNumber_itr->first =" << CsIDetectorNumber_itr->first << G4endl; + //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl; + + + // At clusters'level: + if(NCsI==NCsI_first) // if the hit is still in the same cluster + { + + // At crystals'level: + if(NcCsI==NCsICryst) // if we are still in the same crystal than the first hit CsI crystal + { + E_CsI += *(CsIStageEnergy_itr->second); // if same detector then sum up the energy + + }else // we fill the tree for the first detector hit and move to the next detector hit + { + if(E_CsI!=0) + { +// G4cout <<" -1- filling tree with energy in CsI =" << E_CsI << G4endl; + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first); + ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); + ms_Event->SetPARISCsIStageTCrystalNbr(NCsICryst); + // Fill Energy + // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree + //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + + //ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); // added by Anna + //cout<<NCsITrackID<<" filled with sizeN=1 "<<NCsICryst<<endl; + } + + NCsICryst=NcCsI; // continue with the next hit CsI crystal + E_CsI=*(CsIStageEnergy_itr->second); + } + + }else // if it's a new cluster, one fills the tree with first hit and inspect the new cluster + { + if(E_CsI!=0) + { +// G4cout <<" -2- filling tree with energy in CsI =" << E_CsI << G4endl; + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first ); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first ); + ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); // added by Anna + ms_Event->SetPARISCsIStageTCrystalNbr(NCsICryst); // added by Anna + // Fill Energy + //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoFirstStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree with energy deposited in first detector + //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + + } + + NCsI_first=NCsI; // continue with the new hit cluster + NCsICryst=NcCsI; // and continue with the new hit CsI crystal in this new cluster + E_CsI=*(CsIStageEnergy_itr->second); + + } - //G4cout <<"Energy_CsI=" << E_CsI << G4endl; - // Always fill the tree at the end of the loop: + // Always fill the tree at the end of the loop: - if(l==(sizeNCsI-1) && E_CsI!=0) - { - // Fill detector number - ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first); - ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first); - // Fill Energy - // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); - E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); - ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree - if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); - // Fill Time - //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); - - } - - CsIStageEnergy_itr++; - CsIDetectorNumber_itr++; - } - - }else - { - // Fill the tree if sizeN=1: - if(E_CsI!=0) - { - // Fill detector number - ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first); - ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first); - // Fill Energy - // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); - E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); - ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree - if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); - // Fill Time - //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); - } - } + if(l==(sizeNCsI-1) && E_CsI!=0) + { +// G4cout <<" -3- filling tree with energy in CsI =" << E_CsI << G4endl; + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first); + ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); + ms_Event->SetPARISCsIStageTCrystalNbr(NCsICryst); + // Fill Energy + // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree + //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + + ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); // added by Anna + cout<<NCsITrackID<<" filled with sizeN=1 "<<NCsICryst<<endl; + } + + } // end of l loop + + }else + { + // Fill the tree if sizeN=1: + if(E_CsI!=0) + { +// G4cout <<" -4- filling tree with energy in CsI =" << E_CsI << G4endl; + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first); + ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); + ms_Event->SetPARISCsIStageTCrystalNbr(NCsICryst); + // Fill Energy + // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree + //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + + // Fill Crystal number // added by Anna + ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); + //cout<<NCsITrackID<<" filled with sizeN=1 "<<NCsICryst<<endl; + + } + } } @@ -1010,6 +1165,7 @@ void ParisCluster::ReadSensitive(const G4Event* event) // clear map for next event DetectorNumberHitMap -> clear(); + CrystalNumberHitMap -> clear(); // added by anna EnergyHitMap -> clear(); TimeHitMap -> clear(); //XHitMap -> clear(); @@ -1021,6 +1177,7 @@ void ParisCluster::ReadSensitive(const G4Event* event) //AngPhiHitMap -> clear(); CsIDetectorNumberHitMap -> clear(); + CsICrystalNumberHitMap -> clear(); // added by Anna CsIStageEnergyHitMap -> clear(); // SecondStageEnergyHitMap -> clear(); // ThirdStageEnergyHitMap -> clear(); @@ -1072,9 +1229,11 @@ void ParisCluster::InitializeScorers() m_CsIStageScorer = new G4MultiFunctionalDetector("CsIStageScorerParisCluster"); /**/ G4VPrimitiveScorer* CsIDetNbr = new PARISScorerCsIStageDetectorNumber("CsIDetectorNumber", "ParisCluster", 0); + G4VPrimitiveScorer* CsICryNbr = new PARISScorerCsIStageCrystalNumber("CsICrystalNumber", "ParisCluster", 0); G4VPrimitiveScorer* CsIStageEnergy = new PARISScorerCsIStageEnergy("CsIStageEnergy", "ParisCluster", 0); m_CsIStageScorer->RegisterPrimitive(CsIDetNbr); + m_CsIStageScorer->RegisterPrimitive(CsICryNbr); // Added by anna m_CsIStageScorer->RegisterPrimitive(CsIStageEnergy); /**/ diff --git a/NPSimulation/src/ParisPhoswich.cc b/NPSimulation/src/ParisPhoswich.cc index 14ef9081c51543212e80f6891a804aa9e5657d5b..6bc6ce01c316a12af9ce3e8ffb96821e2d7950ae 100644 --- a/NPSimulation/src/ParisPhoswich.cc +++ b/NPSimulation/src/ParisPhoswich.cc @@ -9,9 +9,9 @@ * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * * * * Creation Date : 04/12/09 * - * Last update : * + * Last update : 20/07/11 * *---------------------------------------------------------------------------* - * Decription: Define a phoswitch module for the Paris detector. * + * Decription: Define a phoswich module for the Paris detector. * * * *---------------------------------------------------------------------------* * Comment: * @@ -172,6 +172,10 @@ void ParisPhoswich::VolumeMaker(G4int DetecNumber, Vacuum->AddElement(N, .7); Vacuum->AddElement(O, .3); + // Germanium +// density = 5.32*g/cm3; +// G4Material* Ge = new G4Material(name="Germanium",32,72.59*g/mole, density); + // NaI density = 3.67*g/cm3, nel = 2; G4Material* NaI = new G4Material(name="NaI",density,nel); @@ -199,21 +203,19 @@ void ParisPhoswich::VolumeMaker(G4int DetecNumber, //////////////////////////////////////////////////////////////// ////////////// Starting Volume Definition ////////////////////// //////////////////////////////////////////////////////////////// - // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". - // If don't you will have a Warning unused variable 'myPVP' - G4PVPlacement* PVPBuffer; G4String Name = "ParisPhoswich" + DetectorNumber ; // Mother Volume + // G4Box* solidParisPhoswich = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length); G4Box* solidParisPhoswich = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length); G4LogicalVolume* logicParisPhoswich = new G4LogicalVolume(solidParisPhoswich, Vacuum, Name, 0, 0, 0); - PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , - logicParisPhoswich , - Name , - world , - false , - 0); + new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , + logicParisPhoswich , + Name , + world , + false , + 0); logicParisPhoswich->SetVisAttributes(G4VisAttributes::Invisible); if (m_non_sensitive_part_visiualisation) logicParisPhoswich->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); @@ -224,14 +226,15 @@ void ParisPhoswich::VolumeMaker(G4int DetecNumber, G4Box* solidLaBr3Stage = new G4Box("solidLaBr3Stage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*LaBr3Thickness); G4LogicalVolume* logicLaBr3Stage = new G4LogicalVolume(solidLaBr3Stage, LaBr3, "logicLaBr3Stage", 0, 0, 0); + //G4LogicalVolume* logicLaBr3Stage = new G4LogicalVolume(solidLaBr3Stage, Ge, "logicLaBr3Stage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, - positionLaBr3Stage, - logicLaBr3Stage, - Name + "_LaBr3Stage", - logicParisPhoswich, - false, - 0); + new G4PVPlacement(0, + positionLaBr3Stage, + logicLaBr3Stage, + Name + "_LaBr3Stage", + logicParisPhoswich, + false, + 0); // Set LaBr3 sensible logicLaBr3Stage->SetSensitiveDetector(m_LaBr3StageScorer); @@ -247,13 +250,13 @@ void ParisPhoswich::VolumeMaker(G4int DetecNumber, //G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, CsI, "logicCsIStage", 0, 0, 0); G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, NaI, "logicCsIStage", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, - positionCsIStage, - logicCsIStage, - Name + "_CsIStage", - logicParisPhoswich, - false, - 0); + new G4PVPlacement(0, + positionCsIStage, + logicCsIStage, + Name + "_CsIStage", + logicParisPhoswich, + false, + 0); // Set CsI sensible logicCsIStage->SetSensitiveDetector(m_CsIStageScorer); @@ -295,7 +298,6 @@ void ParisPhoswich::ReadConfiguration(string Path) bool check_Theta = false; bool check_Phi = false; bool check_R = false; - bool check_beta = false; bool checkVis = false; @@ -311,7 +313,7 @@ void ParisPhoswich::ReadConfiguration(string Path) ConfigFile >> DataBuffer; // Comment Line if (DataBuffer.compare(0, 1, "%") == 0) {/*do nothing */;} - + // Position method else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) { check_A = true; @@ -397,7 +399,6 @@ void ParisPhoswich::ReadConfiguration(string Path) cout << "R: " << R / mm << endl; } else if (DataBuffer.compare(0, 5, "BETA=") == 0) { - check_beta = true; ConfigFile >> DataBuffer ; beta_u = atof(DataBuffer.c_str()) ; beta_u = beta_u * deg ; @@ -422,12 +423,12 @@ void ParisPhoswich::ReadConfiguration(string Path) // With position method if ((check_A && check_B && check_C && check_D && checkVis) && !(check_Theta && check_Phi && check_R)) { - ReadingStatus = false; - check_A = false; - check_C = false; - check_B = false; - check_D = false; - checkVis = false; + ReadingStatus = false; + check_A = false; + check_C = false; + check_B = false; + check_D = false; + checkVis = false; AddModule(A, B, C, D); } @@ -435,13 +436,12 @@ void ParisPhoswich::ReadConfiguration(string Path) // With angle method if ((check_Theta && check_Phi && check_R && checkVis) && !(check_A && check_B && check_C && check_D)) { - ReadingStatus = false; - check_Theta = false; - check_Phi = false; - check_R = false; - check_beta = false; - checkVis = false; - + ReadingStatus = false; + check_Theta = false; + check_Phi = false; + check_R = false; + checkVis = false; + AddModule(R, Theta, Phi, beta_u, beta_v, beta_w); } } @@ -563,8 +563,9 @@ void ParisPhoswich::ReadSensitive(const G4Event* event) momentum = event->GetPrimaryVertex()->GetPrimary()->GetMomentum(); G4double EGamma = momentum.getR(); // for photon E=p - G4double EGammaMin = EGamma-4*ResoFirstStage; - G4double EGammaMax = EGamma+4*ResoFirstStage; + EGamma *= 1; + //G4double EGammaMin = EGamma-4*ResoFirstStage; + //G4double EGammaMax = EGamma+4*ResoFirstStage; // First Stage (LaBr3) @@ -595,8 +596,10 @@ void ParisPhoswich::ReadSensitive(const G4Event* event) // NULL pointer are given to avoid warning at compilation // Second Stage (CsI) std::map<G4int, G4int*>::iterator CsIDetectorNumber_itr; + std::map<G4int, G4int*>::iterator CsICrystalNumber_itr; // added by Marc std::map<G4int, G4double*>::iterator CsIStageEnergy_itr ; G4THitsMap<G4int>* CsIDetectorNumberHitMap = NULL ; + G4THitsMap<G4int>* CsICrystalNumberHitMap = NULL ; // added by Marc G4THitsMap<G4double>* CsIStageEnergyHitMap = NULL ; @@ -665,6 +668,12 @@ void ParisPhoswich::ReadSensitive(const G4Event* event) G4int CsIDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisPhoswich/CsIDetectorNumber") ; CsIDetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsIDetCollectionID)) ; CsIDetectorNumber_itr = CsIDetectorNumberHitMap->GetMap()->begin() ; + + //CsI Crystal Number // added by Marc + G4int CsICryCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisPhoswich/CsICrystalNumber") ; // added by Marc + CsICrystalNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsICryCollectionID)) ; // added by Anna + CsICrystalNumber_itr = CsICrystalNumberHitMap->GetMap()->begin() ; // added by Anna + //CsI Energy G4int CsIStageEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisPhoswich/CsIStageEnergy") ; CsIStageEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIStageEnergyCollectionID)) ; @@ -682,17 +691,19 @@ void ParisPhoswich::ReadSensitive(const G4Event* event) //G4int sizeY = YHitMap->entries(); G4int sizeNCsI= CsIDetectorNumberHitMap->entries(); + G4int sizeCCsI= CsICrystalNumberHitMap->entries(); G4int sizeECsI= CsIStageEnergyHitMap->entries(); - sizeC *= 1; // remove warning at compilation - sizeECsI *= 1; // remove warning at compilation + sizeC *= 1; // remove warning at compilation added by Marc + sizeCCsI *= 1; // remove warning at compilation added by Marc + sizeECsI *= 1; // remove warning at compilation added by Marc //G4cout <<"SizeN=" << sizeN << endl; //G4cout <<"SizeC=" << sizeC << endl; //G4cout <<"SizeN CsI =" << sizeNCsI << endl; //G4cout <<"SizeE CsI =" << sizeECsI << endl; //DetectorNumberHitMap->PrintAllHits(); - + if (sizeE != sizeT) { G4cout << "No match size PARIS Event Map: sE:" @@ -708,213 +719,327 @@ void ParisPhoswich::ReadSensitive(const G4Event* event) //G4cout <<"SizeN=" << sizeN << G4endl; - if(sizeN>0) - { - - // Deal with trackID=1: - G4int N_first= *(DetectorNumber_itr->second); // ID of first det hit - G4int NTrackID = DetectorNumber_itr->first - N_first; // first trackID dealt with (not always =1) - G4double E = *(Energy_itr->second); - G4double T = *(Time_itr->second); - G4int NCryst= *(CrystalNumber_itr->second); - NCryst *= 1; // remove warning at compilation - - - //G4cout <<"NTrackID=" << NTrackID << G4endl; - //G4cout <<"N_first=" << N_first << G4endl; - //G4cout <<"CrystalNumber_first=" << NCryst << G4endl; - //G4cout <<"Energy first=" << E << G4endl; - //G4cout <<"Time first =" << T << G4endl; + //if at least 1 phoswich is hit: + if(sizeN>0) + { + // Deal with trackID=1: + G4int N_first= *(DetectorNumber_itr->second); // ID of first det hit + G4int NTrackID = DetectorNumber_itr->first - N_first; // first trackID dealt with (not always =1) + G4double E = *(Energy_itr->second); + G4double T = *(Time_itr->second); + G4int NCryst= *(CrystalNumber_itr->second); + + NCryst *= 1; //remove warning at compilation // added by Marc + /* + G4cout <<"NTrackID=" << NTrackID << G4endl; + G4cout <<"N_first=" << N_first << G4endl; + G4cout <<"CrystalNumber_first=" << NCryst << G4endl; + G4cout <<"Energy first=" << E << G4endl; + G4cout <<"Time first =" << T << G4endl; + cout<<"*******"<<endl; + + //added by Nicolas on the model of gaspard scorers 8/7/11 + CrystalNumber_itr = CrystalNumberHitMap->GetMap()->begin(); + + for (G4int l = 0 ; l < sizeC ; l++) { + G4double NCryst = *(CrystalNumber_itr->second); + G4int CTrackID = CrystalNumber_itr->first - N_first - NCryst; + G4cout << N_first << " " << NTrackID << " " << CTrackID << " " << NCryst << G4endl; + if (CTrackID == NTrackID) { + G4cout << "****************** NCryst " << NCryst << G4endl; + //ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage)); + //ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage)); + } + CrystalNumber_itr++; + } + //rewind: + for (G4int l = 0 ; l < sizeC ; l++) { + CrystalNumber_itr--; + } + */ + //if there is more than 1 interaction in crystals (1 interaction = 1 hit) if(sizeN>1) - { - Energy_itr++; - Time_itr++; - CrystalNumber_itr++; - DetectorNumber_itr++; - - for (G4int l = 1; l < sizeN ; l++) { // loop on all the other tracks - - - G4int N= *(DetectorNumber_itr->second); // ID of det hit - NTrackID = DetectorNumber_itr->first - N; // ID of the track - - //G4cout <<"l=" << l << G4endl; - //G4cout <<"N=" << N << G4endl; - //G4cout <<"DetectorNumber_itr->first =" << DetectorNumber_itr->first << G4endl; - //G4cout <<"NTrackID=" << NTrackID << G4endl; - - if(N==N_first) - { - E += *(Energy_itr->second); - - }else // we fill the tree for the first detector hit and move to the next detector hit - { - if(E!=0) - { - // Fill detector number - ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first); - ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first); - // Fill Energy - // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); - E=RandGauss::shoot(E, ResoFirstStage); - ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree - if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); - - // Fill Time - ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); - - } - - N_first=N; - E=*(Energy_itr->second); - - } - - - //G4cout <<"Energy=" << E << G4endl; - //G4cout <<"Time =" << T << G4endl; + { + + //At clusters'level + for (G4int l = 1; l < sizeN ; l++) { // loop on all the other tracks + + Energy_itr++; + Time_itr++; + DetectorNumber_itr++; + CrystalNumber_itr++; + + G4int N= *(DetectorNumber_itr->second); // ID of Phoswich hit + G4int Nc= *(CrystalNumber_itr->second); // ID of hit crystal (always =0 for Phoswich) + + NTrackID = DetectorNumber_itr->first - N; // ID of the track + + //G4cout <<"l=" << l << G4endl; + //G4cout <<"N=" << N << G4endl; + //G4cout <<"DetectorNumber_itr->first =" << DetectorNumber_itr->first << G4endl; + //G4cout <<"NTrackID=" << NTrackID << G4endl; + + if(N==N_first) + { + // At crystals'level: + if(Nc==NCryst) // if we are still in the same crystal than the first hit crystal + { + E += *(Energy_itr->second); + + }else // we fill the tree for the first detector hit and move to the next detector hit + { + if(E!=0) + { + G4cout <<" -1- filling tree with energy=" << E << G4endl; + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first); + ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); // added by Marc + // Fill Energy + // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree + //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + + } + + NCryst=Nc; // continue with the next hit crystal + E=*(Energy_itr->second); + } + + + }else // if it's a new phoswich, one fills the tree with first hit and inspect this new cluster + { + + if(E!=0) + { + G4cout <<" -2- filling tree with energy=" << E << G4endl; + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first ); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first ); + ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); // added by Anna + // Fill Energy + //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree with energy deposited in first detector + //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + + } + + N_first=N; + NCryst=Nc; // and continue with the new hit crystal in this new cluster + E=*(Energy_itr->second); + + } + + + //G4cout <<"Energy=" << E << G4endl; + //G4cout <<"Time =" << T << G4endl; - // Always fill the tree at the end of the loop: - if(l==(sizeN-1) && E!=0) - { - // Fill detector number - ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first); - ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first); - // Fill Energy - // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); - E=RandGauss::shoot(E, ResoFirstStage); - ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree - if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); - - // Fill Time - ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); - } - - Energy_itr++; - DetectorNumber_itr++; - } - }else - { - // Fill the tree if sizeN=1: - if(E!=0) - { - // Fill detector number - ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first); - ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first); - // Fill Energy - // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); - E=RandGauss::shoot(E, ResoFirstStage); - ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree - if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); - - // Fill Time - ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); - } - } - + // Always fill the tree at the end of the loop: + if(l==(sizeN-1) && E!=0) + { + G4cout <<"-3- filling tree with energy=" << E << G4endl; + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first); + ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); // added by Anna + cout<<NTrackID<<" filled at the end "<<NCryst<<endl; + // Fill Energy + // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree + //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + } + + } + + }else + { + // Fill the tree if sizeN=1: + if(E!=0) + { + G4cout <<" -4- filling tree with energy=" << E << G4endl; + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first); + ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); + cout<<NTrackID<<" filled with sizeN=1 "<<NCryst<<endl; + // Fill Energy + // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree + //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + } + } + } ///////// For CsI stage: - EGammaMin = EGamma-4*ResoSecondStage; - EGammaMax = EGamma+4*ResoSecondStage; + //EGammaMin = EGamma-4*ResoSecondStage; + //EGammaMax = EGamma+4*ResoSecondStage; if(sizeNCsI>0) { // Deal with trackID=1: G4int NCsI_first= *(CsIDetectorNumber_itr->second); // ID of first det hit G4int NCsITrackID = CsIDetectorNumber_itr->first - NCsI_first; // first trackID dealt with (not always =1) + NCsITrackID *= 1; G4double E_CsI=*(CsIStageEnergy_itr->second); // Energy second stage - + G4int NCsICryst= *(CsICrystalNumber_itr->second); // added by Marc //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl; //G4cout <<"NCsI_first=" << NCsI_first << G4endl; //G4cout <<"CsI Energy first=" << E_CsI << G4endl; + CsICrystalNumber_itr = CsICrystalNumberHitMap->GetMap()->begin(); // added by Marc + /* + for (G4int l = 0 ; l < sizeCCsI ; l++) { + G4double NCsICryst = *(CsICrystalNumber_itr->second); + G4int CCsITrackID = CsICrystalNumber_itr->first - NCsI_first - NCsICryst; + G4cout << NCsI_first << " " << NCsITrackID << " " << CCsITrackID << " " << NCsICryst << G4endl; + if (CCsITrackID == NCsITrackID) { + G4cout << "****************** NCsICryst " << NCsICryst << G4endl; + } + CsICrystalNumber_itr++; + } + //rewind: + for (G4int l = 0 ; l < sizeCCsI ; l++) { + CsICrystalNumber_itr--; + } + */ + if(sizeNCsI>1) - { - CsIDetectorNumber_itr++; - CsIStageEnergy_itr++; + { + for (G4int l = 1; l < sizeNCsI ; l++) { // loop on all the other tracks - for (G4int l = 1; l < sizeNCsI ; l++) { // loop on all the other tracks + CsIStageEnergy_itr++; + CsIDetectorNumber_itr++; + CsICrystalNumber_itr++; - G4int NCsI= *(CsIDetectorNumber_itr->second); // ID of det hit - NCsITrackID = CsIDetectorNumber_itr->first - NCsI; // ID of the track - - //G4cout <<"l=" << l << G4endl; - //G4cout <<"NCsI=" << NCsI << G4endl; - //G4cout <<"DetectorNumber_itr->first =" << CsIDetectorNumber_itr->first << G4endl; - //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl; - - if(NCsI==NCsI_first) - { - - E_CsI += *(CsIStageEnergy_itr->second); - - }else // we fill the tree for the first detector hit and move to the next detector hit - { - if(E_CsI!=0) - { - // Fill detector number - ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first); - ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first); - // Fill Energy - //ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); - E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); - ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree - if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); - // Fill Time - //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); - } - - NCsI_first=NCsI; - E_CsI=*(CsIStageEnergy_itr->second); - } - - //G4cout <<"Energy_CsI=" << E_CsI << G4endl; + G4int NCsI= *(CsIDetectorNumber_itr->second); // ID of Phoswich hit + G4int NcCsI= *(CsICrystalNumber_itr->second); // ID of crystal hit (always =0 for phoswich) + NCsITrackID = CsIDetectorNumber_itr->first - NCsI; // ID of the track + + //G4cout <<"l=" << l << G4endl; + //G4cout <<"NCsI=" << NCsI << G4endl; + //G4cout <<"DetectorNumber_itr->first =" << CsIDetectorNumber_itr->first << G4endl; + //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl; + + // At phoswichs'level: + if(NCsI==NCsI_first) + { + // At crystals'level: + if(NcCsI==NCsICryst) // if we are still in the same crystal than the first hit CsI crystal + { + + E_CsI += *(CsIStageEnergy_itr->second); + + }else // we fill the tree for the first detector hit and move to the next detector hit + { + if(E_CsI!=0) + { + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first); + ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); + // Fill Energy + //ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree + //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + } + + NCsICryst=NcCsI; + E_CsI=*(CsIStageEnergy_itr->second); + } + + }else // if it's a new cluster, one fills the tree with first hit and inspect the new cluster + { + if(E_CsI!=0) + { + G4cout <<" -2- filling tree with energy in CsI =" << E_CsI << G4endl; + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first ); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first ); + ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); // added by Marc + // Fill Energy + //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoFirstStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree with energy deposited in first detector + //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + + } + + NCsI_first=NCsI; // continue with the new hit cluster + NCsICryst=NcCsI; // and continue with the new hit CsI crystal in this new cluster + E_CsI=*(CsIStageEnergy_itr->second); + + } - // Always fill the tree at the end of the loop: + // Always fill the tree at the end of the loop: - if(l==(sizeNCsI-1) && E_CsI!=0) - { - // Fill detector number - ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first); - ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first); - // Fill Energy - // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); - E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); - ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree - if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); - // Fill Time - //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); - - } - - CsIStageEnergy_itr++; - CsIDetectorNumber_itr++; - } - - }else - { - // Fill the tree if sizeN=1: - if(E_CsI!=0) - { - // Fill detector number - ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first); - ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first); - // Fill Energy - //ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); - E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); - ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree - if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); - // Fill Time - //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); - } - } + if(l==(sizeNCsI-1) && E_CsI!=0) + { + G4cout <<" -3- filling tree with energy in CsI =" << E_CsI << G4endl; + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first); + ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); + // Fill Energy + // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree + //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + + } + + } + + }else + { + // Fill the tree if sizeN=1: + if(E_CsI!=0) + { + G4cout <<" -4- filling tree with energy in CsI =" << E_CsI << G4endl; + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first); + ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); + // Fill Energy + //ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree + //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + } + } } @@ -923,6 +1048,7 @@ void ParisPhoswich::ReadSensitive(const G4Event* event) // clear map for next event DetectorNumberHitMap -> clear(); + CrystalNumberHitMap -> clear(); // added by Marc EnergyHitMap -> clear(); TimeHitMap -> clear(); //XHitMap -> clear(); @@ -934,6 +1060,7 @@ void ParisPhoswich::ReadSensitive(const G4Event* event) //AngPhiHitMap -> clear(); CsIDetectorNumberHitMap -> clear(); + CsICrystalNumberHitMap -> clear(); // added by Marc CsIStageEnergyHitMap -> clear(); @@ -984,9 +1111,11 @@ void ParisPhoswich::InitializeScorers() m_CsIStageScorer = new G4MultiFunctionalDetector("CsIStageScorerParisPhoswich"); /**/ G4VPrimitiveScorer* CsIDetNbr = new PARISScorerCsIStageDetectorNumber("CsIDetectorNumber", "ParisPhoswich", 0); + G4VPrimitiveScorer* CsICryNbr = new PARISScorerCsIStageCrystalNumber("CsICrystalNumber", "ParisPhoswich", 0); // added by Marc G4VPrimitiveScorer* CsIStageEnergy = new PARISScorerCsIStageEnergy("CsIStageEnergy", "ParisPhoswich", 0); m_CsIStageScorer->RegisterPrimitive(CsIDetNbr); + m_CsIStageScorer->RegisterPrimitive(CsICryNbr); // Added by Marc m_CsIStageScorer->RegisterPrimitive(CsIStageEnergy); /**/ diff --git a/NPSimulation/src/ParisScorers.cc b/NPSimulation/src/ParisScorers.cc index ce481189c71dc0e1ad6ed7dab12603ae74787c0f..b21790a5b75acc272398211afcb6861306c172f0 100644 --- a/NPSimulation/src/ParisScorers.cc +++ b/NPSimulation/src/ParisScorers.cc @@ -58,12 +58,14 @@ G4bool PARISScorerLaBr3StageDetectorNumber::ProcessHits(G4Step* aStep, G4Touchab { // get detector number int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + // int DetNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0); // this line does exactly the same than the line above + int CrystalNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); // get energy G4double edep = aStep->GetTotalEnergyDeposit(); if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER G4int index = aStep->GetTrack()->GetTrackID(); - EvtMap->set(DetNbr + index, DetNbr); + EvtMap->set(CrystalNbr + DetNbr + index, DetNbr); return TRUE; } void PARISScorerLaBr3StageDetectorNumber::Initialize(G4HCofThisEvent* HCE) @@ -119,6 +121,7 @@ G4bool PARISScorerLaBr3StageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistor { // get detector number int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + int CrystalNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); // get energy G4ThreeVector POS = aStep->GetPreStepPoint()->GetPosition(); @@ -128,7 +131,7 @@ G4bool PARISScorerLaBr3StageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistor // if (edep < 100*keV) return FALSE; if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER G4int index = aStep->GetTrack()->GetTrackID(); - EvtMap->add(DetNbr + index, edep); + EvtMap->add(CrystalNbr + DetNbr + index, edep); return TRUE; } @@ -185,14 +188,26 @@ G4bool PARISScorerLaBr3StageCrystal::ProcessHits(G4Step* aStep, G4TouchableHisto // get detector number int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); - // get energy - G4int CrystalNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1); + //G4int CrystalNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1); + //Adde by Anna: + G4int CrystalNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); // daughter crystal volume + //depth:0 is the world, 1 is the mother... + //AC instead of GetReplicaNumber(1) + //cout<<"****replica****"<<endl; + //cout<<"copy nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1)<<endl; + //cout<<"replica nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1)<<endl; + //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(2)<<endl; + //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0)<<endl; + // get energy G4double edep = aStep->GetTotalEnergyDeposit(); // if (edep < 100*keV) return FALSE; if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER G4int index = aStep->GetTrack()->GetTrackID(); - EvtMap->add(DetNbr + index, CrystalNbr); + //EvtMap->add(DetNbr + index, CrystalNbr); // Marc + //cout<<"index "<<index<<endl; + //cout<<"DetNbr + index "<<DetNbr + index<<endl; + EvtMap->set(CrystalNbr + DetNbr + index, CrystalNbr);// modified by Anna return TRUE; } @@ -251,6 +266,7 @@ G4bool PARISScorerLaBr3StageTOF::ProcessHits(G4Step* aStep, G4TouchableHistory*) { // get detector number int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + int CrystalNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); // get TOF G4double TOF = aStep->GetPreStepPoint()->GetGlobalTime(); @@ -259,7 +275,7 @@ G4bool PARISScorerLaBr3StageTOF::ProcessHits(G4Step* aStep, G4TouchableHistory*) // if (edep < 100*keV) return FALSE; if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER G4int index = aStep->GetTrack()->GetTrackID(); - EvtMap->add(DetNbr + index, TOF); + EvtMap->add(CrystalNbr + DetNbr + index, TOF); return TRUE; } @@ -312,12 +328,14 @@ G4bool PARISScorerCsIStageDetectorNumber::ProcessHits(G4Step* aStep, G4Touchable { // get detector number int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + // int DetNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0); // this line does exactly the same than the line above + int CrystalNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); // get energy G4double edep = aStep->GetTotalEnergyDeposit(); if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER G4int index = aStep->GetTrack()->GetTrackID(); - EvtMap->set(DetNbr + index, DetNbr); + EvtMap->set(CrystalNbr + DetNbr + index, DetNbr); return TRUE; } void PARISScorerCsIStageDetectorNumber::Initialize(G4HCofThisEvent* HCE) @@ -372,6 +390,7 @@ G4bool PARISScorerCsIStageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory* { // get detector number int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + int CrystalNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); // get energy G4ThreeVector POS = aStep->GetPreStepPoint()->GetPosition(); @@ -381,7 +400,7 @@ G4bool PARISScorerCsIStageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory* //if (edep < 100*keV) return FALSE; if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER G4int index = aStep->GetTrack()->GetTrackID(); - EvtMap->add(DetNbr + index, edep); + EvtMap->add(CrystalNbr + DetNbr + index, edep); return TRUE; } @@ -421,3 +440,77 @@ void PARISScorerCsIStageEnergy::PrintAll() } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// all added by Anna: + +// FirstStage CrystalNbr Scorer (deal with multiple particle hit) +PARISScorerCsIStageCrystalNumber::PARISScorerCsIStageCrystalNumber(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +PARISScorerCsIStageCrystalNumber::~PARISScorerCsIStageCrystalNumber() +{ +} + +G4bool PARISScorerCsIStageCrystalNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + + // get energy + G4int CrystalNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); + //depth:0 is the world, 1 is the mother... + //AC instead of GetReplicaNumber(1) + //cout<<"****replica****"<<endl; + //cout<<"copy nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1)<<endl; + //cout<<"replica nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1)<<endl; + //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(2)<<endl; + //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0)<<endl; + + G4double edep = aStep->GetTotalEnergyDeposit(); + // if (edep < 100*keV) return FALSE; + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + //cout<<"index "<<index<<endl; + //cout<<"DetNbr + index "<<DetNbr + index<<endl; + EvtMap->set(CrystalNbr + DetNbr + index, CrystalNbr); + return TRUE; + +} + +void PARISScorerCsIStageCrystalNumber::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void PARISScorerCsIStageCrystalNumber::EndOfEvent(G4HCofThisEvent*) +{ +} + +void PARISScorerCsIStageCrystalNumber::Clear() +{ + EvtMap->clear(); +} + +void PARISScorerCsIStageCrystalNumber::DrawAll() +{ +} + +void PARISScorerCsIStageCrystalNumber::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " crystal nbr: " << G4BestUnit(*(itr->second), "Crystal") + << G4endl; + } +} diff --git a/NPSimulation/src/ShieldClParis.cc b/NPSimulation/src/ShieldClParis.cc index 17d2af2c9bb59cb4853ae2921fd079430faf0d2c..87f673adfe7fa24774bfd4629421e23d8b784644 100644 --- a/NPSimulation/src/ShieldClParis.cc +++ b/NPSimulation/src/ShieldClParis.cc @@ -201,9 +201,6 @@ void ShieldClParis::VolumeMaker(G4int DetecNumber, //////////////////////////////////////////////////////////////// ////////////// Starting Volume Definition ////////////////////// //////////////////////////////////////////////////////////////// - // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". - // If don't you will have a Warning unused variable 'myPVP' - G4PVPlacement* PVPBuffer; G4String Name = "ShieldClParis" + DetectorNumber ; // Mother Volume @@ -212,12 +209,12 @@ void ShieldClParis::VolumeMaker(G4int DetecNumber, 43.125*mm, 133.5*mm, 133.5*mm,0.*deg); G4LogicalVolume* logicShieldClParis = new G4LogicalVolume(solidShieldClParis, Vacuum, Name, 0, 0, 0); - PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , - logicShieldClParis , - Name , - world , - false , - 0); + new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , + logicShieldClParis , + Name , + world , + false , + 0); logicShieldClParis->SetVisAttributes(G4VisAttributes::Invisible); if (m_non_sensitive_part_visiualisation) logicShieldClParis->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); @@ -232,14 +229,14 @@ void ShieldClParis::VolumeMaker(G4int DetecNumber, //G4LogicalVolume* logicShieldCsI = new G4LogicalVolume(solidShieldCsI, CsI, "logicShieldCsI", 0, 0, 0); G4LogicalVolume* logicShieldCsI = new G4LogicalVolume(solidShieldCsI, NaI, "logicShieldCsI", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, - positionCsI , - logicShieldCsI , - Name + "_ShieldCsI" , - logicShieldClParis , - false , - 0); - + new G4PVPlacement(0, + positionCsI , + logicShieldCsI , + Name + "_ShieldCsI" , + logicShieldClParis , + false , + 0); + // Set CsI sensible logicShieldCsI->SetSensitiveDetector(m_CsIShieldScorer); @@ -282,7 +279,6 @@ void ShieldClParis::ReadConfiguration(string Path) bool check_Theta = false; bool check_Phi = false; bool check_R = false; - bool check_beta = false; bool checkVis = false; @@ -384,7 +380,6 @@ void ShieldClParis::ReadConfiguration(string Path) cout << "R: " << R / mm << endl; } else if (DataBuffer.compare(0, 5, "BETA=") == 0) { - check_beta = true; ConfigFile >> DataBuffer ; beta_u = atof(DataBuffer.c_str()) ; beta_u = beta_u * deg ; @@ -426,7 +421,6 @@ void ShieldClParis::ReadConfiguration(string Path) check_Theta = false; check_Phi = false; check_R = false; - check_beta = false; checkVis = false; AddModule(R, Theta, Phi, beta_u, beta_v, beta_w); @@ -635,6 +629,7 @@ void ShieldClParis::ReadSensitive(const G4Event* event) // Deal with trackID=1: G4int N_first= *(CsIShieldDetectorNumber_itr->second); // ID of first det hit G4int NTrackID = CsIShieldDetectorNumber_itr->first - N_first; // first trackID dealt with (not always =1) + NTrackID *= 1; G4double E = *(CsIShieldEnergy_itr->second); G4double T = *(CsIShieldTime_itr->second); diff --git a/NPSimulation/src/ShieldPhParis.cc b/NPSimulation/src/ShieldPhParis.cc index 87feef2850813951651b70fcd56f7dafc58dceca..69beed88c2da1c0b7f67d57d6b962ed98cd10f05 100644 --- a/NPSimulation/src/ShieldPhParis.cc +++ b/NPSimulation/src/ShieldPhParis.cc @@ -202,9 +202,6 @@ void ShieldPhParis::VolumeMaker(G4int DetecNumber, //////////////////////////////////////////////////////////////// ////////////// Starting Volume Definition ////////////////////// //////////////////////////////////////////////////////////////// - // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". - // If don't you will have a Warning unused variable 'myPVP' - G4PVPlacement* PVPBuffer; G4String Name = "ShieldPhParis" + DetectorNumber ; // Mother VolumeShieldPhParis.cc @@ -221,12 +218,12 @@ void ShieldPhParis::VolumeMaker(G4int DetecNumber, G4LogicalVolume* logicShieldPhParis = new G4LogicalVolume(solidShieldPhParis, Vacuum, Name, 0, 0, 0); - PVPBuffer = new G4PVPlacement( G4Transform3D(*MMrot, MMpos), - logicShieldPhParis, - Name, - world, - false, - 0); + G4PVPlacement(G4Transform3D(*MMrot, MMpos), + logicShieldPhParis, + Name, + world, + false, + 0); logicShieldPhParis->SetVisAttributes(G4VisAttributes::Invisible); //if (m_non_sensitive_part_visiualisation) logicShieldPhParis->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); @@ -242,13 +239,13 @@ void ShieldPhParis::VolumeMaker(G4int DetecNumber, //G4LogicalVolume* logicShieldCsI = new G4LogicalVolume(solidShieldCsI, CsI, "logicShieldCsI", 0, 0, 0); G4LogicalVolume* logicShieldCsI = new G4LogicalVolume(solidShieldCsI, NaI, "logicShieldCsI", 0, 0, 0); - PVPBuffer = new G4PVPlacement( 0, - positionCsI, - logicShieldCsI, - Name + "_ShieldCsI", - logicShieldPhParis, - false, - 0); + new G4PVPlacement(0, + positionCsI, + logicShieldCsI, + Name + "_ShieldCsI", + logicShieldPhParis, + false, + 0); // Set CsI sensible logicShieldCsI->SetSensitiveDetector(m_CsIShieldScorer); @@ -292,7 +289,6 @@ void ShieldPhParis::ReadConfiguration(string Path) bool check_Theta = false; bool check_Phi = false; bool check_R = false; - bool check_beta = false; bool checkVis = false; @@ -394,7 +390,6 @@ void ShieldPhParis::ReadConfiguration(string Path) cout << "R: " << R / mm << endl; } else if (DataBuffer.compare(0, 5, "BETA=") == 0) { - check_beta = true; ConfigFile >> DataBuffer ; beta_u = atof(DataBuffer.c_str()) ; beta_u = beta_u * deg ; @@ -436,7 +431,6 @@ void ShieldPhParis::ReadConfiguration(string Path) check_Theta = false; check_Phi = false; check_R = false; - check_beta = false; checkVis = false; AddModule(R, Theta, Phi, beta_u, beta_v, beta_w); @@ -645,6 +639,7 @@ void ShieldPhParis::ReadSensitive(const G4Event* event) // Deal with trackID=1: G4int N_first= *(CsIShieldDetectorNumber_itr->second); // ID of first det hit G4int NTrackID = CsIShieldDetectorNumber_itr->first - N_first; // first trackID dealt with (not always =1) + NTrackID *= 1; G4double E = *(CsIShieldEnergy_itr->second); G4double T = *(CsIShieldTime_itr->second); diff --git a/NPSimulation/src/W1.cc b/NPSimulation/src/W1.cc index 7e772c0064cce53550aa6bee6afec3e0e0a44246..ffde31819ae670e60d9f0d3d1e15f6d63e9bc49a 100644 --- a/NPSimulation/src/W1.cc +++ b/NPSimulation/src/W1.cc @@ -135,16 +135,13 @@ void W1::VolumeMaker(G4int DetecNumber, //////////////////////////////////////////////////////////////// ////////////// Starting Volume Definition ////////////////////// //////////////////////////////////////////////////////////////// - // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". - // If don't you will have a Warning unused variable 'myPVP' - G4PVPlacement* PVPBuffer ; G4String Name = "W1Square" + DetectorNumber; // Definition of the volume containing the sensitive detector G4Box* solidW1 = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length); G4LogicalVolume* logicW1 = new G4LogicalVolume(solidW1, m_MaterialVacuum, Name, 0, 0, 0); - PVPBuffer = new G4PVPlacement(G4Transform3D(*rotation, position), logicW1, Name, world, false, 0); + new G4PVPlacement(G4Transform3D(*rotation, position), logicW1, Name, world, false, 0); logicW1->SetVisAttributes(G4VisAttributes::Invisible); if (m_non_sensitive_part_visiualisation) logicW1->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); @@ -157,8 +154,8 @@ void W1::VolumeMaker(G4int DetecNumber, // G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, m_MaterialAluminium, "logicAluStrip", 0, 0, 0); G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, m_MaterialVacuum, "logicAluStrip", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, positionAluStripFront, logicAluStrip, Name + "_AluStripFront", logicW1, false, 0); - PVPBuffer = new G4PVPlacement(0, positionAluStripBack, logicAluStrip, Name + "_AluStripBack", logicW1, false, 0); + new G4PVPlacement(0, positionAluStripFront, logicAluStrip, Name + "_AluStripFront", logicW1, false, 0); + new G4PVPlacement(0, positionAluStripBack, logicAluStrip, Name + "_AluStripBack", logicW1, false, 0); logicAluStrip->SetVisAttributes(G4VisAttributes::Invisible); @@ -168,7 +165,7 @@ void W1::VolumeMaker(G4int DetecNumber, G4Box* solidSilicon = new G4Box("solidSilicon", 0.5*SiliconFace, 0.5*SiliconFace, 0.5*SiliconThickness); G4LogicalVolume* logicSilicon = new G4LogicalVolume(solidSilicon, m_MaterialSilicon, "logicSilicon", 0, 0, 0); - PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicW1, false, 0); + new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicW1, false, 0); // Set Silicon strip sensible logicSilicon->SetSensitiveDetector(m_Scorer); @@ -206,7 +203,6 @@ void W1::ReadConfiguration(string Path) bool check_R = false; bool check_Theta = false; bool check_Phi = false; - bool check_beta = false; bool checkVis = false ; while (!ConfigFile.eof()) { @@ -319,7 +315,6 @@ void W1::ReadConfiguration(string Path) } else if (DataBuffer.compare(0, 5, "BETA=") == 0) { - check_beta = true; ConfigFile >> DataBuffer; beta_u = atof(DataBuffer.c_str()); beta_u = beta_u * deg; @@ -364,7 +359,6 @@ void W1::ReadConfiguration(string Path) check_R = false; check_Theta = false; check_Phi = false; - check_beta = false; checkVis = false; AddDetector(R, Theta, Phi, beta_u, beta_v, beta_w); diff --git a/NPSimulation/src/W1Scorers.cc b/NPSimulation/src/W1Scorers.cc index 6dffec56882a055351e2f0ab0d4abc00baeff266..c6b38ee9ed238a66c9dfcc97b1d639221b294e27 100644 Binary files a/NPSimulation/src/W1Scorers.cc and b/NPSimulation/src/W1Scorers.cc differ