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

* Adding Trifoil detector to NPLib

parent 09326bc6
No related branches found
No related tags found
No related merge requests found
include ../Makefile.arch
#------------------------------------------------------------------------------
SHARELIB = libTrifoilData.so libTrifoilPhysics.so
all: $(SHARELIB)
#------------------------------------------------------------------------------
############### Detector ##############
## Trifoil ##
libTrifoilData.so: TTrifoilData.o TTrifoilDataDict.o
$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
TTrifoilDataDict.cxx: TTrifoilData.h
rootcint -f $@ -c $^
libTrifoilPhysics.so: TTrifoilPhysics.o TTrifoilPhysicsDict.o
$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
TTrifoilPhysicsDict.cxx: TTrifoilPhysics.h
rootcint -f $@ -c $^
# dependances
TTrifoilData.o: TTrifoilData.cxx TTrifoilData.h
TTrifoilPhysics.o: TTrifoilPhysics.cxx TTrifoilPhysics.h
#######################################
############# Clean and More ##########
clean:
@rm -f core *~ *.o *Dict*
distclean:
make clean; rm -f *.so
.SUFFIXES: .$(SrcSuf)
###
.$(SrcSuf).$(ObjSuf):
$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
/*****************************************************************************
* Copyright (C) 2009-2012 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 : December 2012 *
* Last update : *
*---------------------------------------------------------------------------*
* Decription: *
* This class hold Trifoil Raw data *
* *
*---------------------------------------------------------------------------*
* Comment: *
* *
* *
*****************************************************************************/
// STL
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
using namespace std;
// NPL
#include "TTrifoilData.h"
//ROOT
#include "TDirectory.h"
ClassImp(TTrifoilData)
/////////////////////////
TTrifoilData::TTrifoilData()
{
}
/////////////////////////
TTrifoilData::~TTrifoilData()
{
}
/////////////////////////
void TTrifoilData::Clear()
{
fTrifoil_Waveform.clear();
fTrifoil_TimeCFD.clear();
fTrifoil_TimeLED.clear();
}
/////////////////////////
void TTrifoilData::Dump() const
{
}
/////////////////////////
void TTrifoilData::ReadFSPCFile(string FSPCPath){
ifstream FSPCFile;
FSPCFile.open(FSPCPath.c_str());
if(!FSPCFile.is_open()) {cout << "Error: FSPC File: " << FSPCPath << " not found " << endl ; exit(1);}
else {cout << "Trifoil is Reading FSPC file : " << FSPCPath << endl ;}
string LineBuffer;
string DataBuffer;
string DetectorName;
string ChannelNumberStr;
int ChannelNumber;
while(!FSPCFile.eof()){
getline(FSPCFile,LineBuffer);
/* Typical line to analyse:
# 2005: Address 0x00900800, type 8, Trifoil [Trifoil 0x0900800]
*/
stringstream myLine(LineBuffer);
myLine >> DataBuffer >> ChannelNumberStr >> DataBuffer >> DataBuffer >> DataBuffer >> DataBuffer >> DetectorName ;
ChannelNumberStr = ChannelNumberStr.substr(0,ChannelNumberStr.length()-1);
stringstream(ChannelNumberStr) >> ChannelNumber;
if(DetectorName=="Trifoil") m_FSPC_Channel=ChannelNumber;
}
}
void TTrifoilData::FillData(TTigEventFragment* TigEvent){
vector<int> channel_number = TigEvent->channel_number;
for(unsigned int i = 0 ; i < channel_number.size() ; i++){
if(channel_number[i] == m_FSPC_Channel){
fTrifoil_Waveform.push_back(TigEvent->waveform[i]);
fTrifoil_TimeCFD.push_back(TigEvent->cfd_value[i]);
fTrifoil_TimeLED.push_back(TigEvent->led_value[i]);
}
}
}
#ifndef __TrifoilDATA__
#define __TrifoilDATA__
/*****************************************************************************
* Copyright (C) 2009-2010 this file is part of the NPTool Project *
* *
* For the licensing terms see $NPTOOL/Licence/NPTool_Licence *
* For the list of contributors see $NPTOOL/Licence/Contributors *
*****************************************************************************/
/*****************************************************************************
* Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk *
* *
* Creation Date : December 2012 *
* Last update : *
*---------------------------------------------------------------------------*
* Decription: *
* This class hold the Trifoil Silicon array raw data (Made for TIG64 card) *
* *
*---------------------------------------------------------------------------*
* Comment: *
* *
* *
*****************************************************************************/
// STL
#include <vector>
#include <map>
using namespace std ;
// NPL
#include "../Tigress/TTigEventFragment.h"
// ROOT
#include "TObject.h"
#include "TH1F.h"
class TTrifoilData : public TObject {
private:
// Trifoil
// Energy
vector<TH1F> fTrifoil_Waveform;
vector<Double_t> fTrifoil_TimeCFD;
vector<Double_t> fTrifoil_TimeLED;
public:
TTrifoilData();
virtual ~TTrifoilData();
void Clear();
void Clear(const Option_t*) {};
void Dump() const;
///////////////////// SETTERS ////////////////////////
void SetWaveform(TH1F Waveform) {fTrifoil_Waveform.push_back(Waveform);}
void SetTimeCFD(Double_t TimeCFD) {fTrifoil_TimeCFD.push_back(TimeCFD);}
void SetTimeLED(Double_t TimeLED) {fTrifoil_TimeLED.push_back(TimeLED);}
///////////////////// GETTERS ////////////////////////
TH1F GetWaveform(int i) {return fTrifoil_Waveform[i];}
Double_t GetTimeCFD(int i) {return fTrifoil_TimeCFD[i];}
Double_t GetTimeLED(int i) {return fTrifoil_TimeLED[i];}
unsigned int GetMultiplicity() {return fTrifoil_TimeCFD.size();}
public: // Method and object to construct to fill the data event from a Tigress DAQ event tree
void ReadFSPCFile(string FSPCPath);//!
void FillData(TTigEventFragment* TigEvent);//!
private:
int m_FSPC_Channel;//!
ClassDef(TTrifoilData,1) // TrifoilData structure
};
#endif
This diff is collapsed.
/********************************************************************
* TTrifoilDataDict.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 TTrifoilDataDict.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_tagtableTTrifoilDataDict();
extern void G__cpp_setup_inheritanceTTrifoilDataDict();
extern void G__cpp_setup_typetableTTrifoilDataDict();
extern void G__cpp_setup_memvarTTrifoilDataDict();
extern void G__cpp_setup_globalTTrifoilDataDict();
extern void G__cpp_setup_memfuncTTrifoilDataDict();
extern void G__cpp_setup_funcTTrifoilDataDict();
extern void G__set_cpp_environmentTTrifoilDataDict();
}
#include "TObject.h"
#include "TMemberInspector.h"
#include "TTrifoilData.h"
#include <algorithm>
namespace std { }
using namespace std;
#ifndef G__MEMFUNCBODY
#endif
extern G__linked_taginfo G__TTrifoilDataDictLN_TClass;
extern G__linked_taginfo G__TTrifoilDataDictLN_TBuffer;
extern G__linked_taginfo G__TTrifoilDataDictLN_TMemberInspector;
extern G__linked_taginfo G__TTrifoilDataDictLN_TObject;
extern G__linked_taginfo G__TTrifoilDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR;
extern G__linked_taginfo G__TTrifoilDataDictLN_string;
extern G__linked_taginfo G__TTrifoilDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
extern G__linked_taginfo G__TTrifoilDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TTrifoilDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
extern G__linked_taginfo G__TTrifoilDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TTrifoilDataDictLN_TVectorTlEfloatgR;
extern G__linked_taginfo G__TTrifoilDataDictLN_TVectorTlEdoublegR;
extern G__linked_taginfo G__TTrifoilDataDictLN_TH1F;
extern G__linked_taginfo G__TTrifoilDataDictLN_TTigEventFragment;
extern G__linked_taginfo G__TTrifoilDataDictLN_vectorlEintcOallocatorlEintgRsPgR;
extern G__linked_taginfo G__TTrifoilDataDictLN_reverse_iteratorlEvectorlEintcOallocatorlEintgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TTrifoilDataDictLN_vectorlETH1FcOallocatorlETH1FgRsPgR;
extern G__linked_taginfo G__TTrifoilDataDictLN_reverse_iteratorlEvectorlETH1FcOallocatorlETH1FgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TTrifoilDataDictLN_TTrifoilData;
/* STUB derived class for protected member access */
/*****************************************************************************
* 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 : November 2012 *
* Last update : *
*---------------------------------------------------------------------------*
* Decription: *
* This class hold Trifoil treated data *
* *
*---------------------------------------------------------------------------*
* Comment: *
* *
*****************************************************************************/
#include "TTrifoilPhysics.h"
// STL
#include <sstream>
#include <iostream>
#include <cmath>
#include <stdlib.h>
#include <limits>
// NPL
#include "RootInput.h"
#include "RootOutput.h"
#include "TAsciiFile.h"
// ROOT
#include "TChain.h"
///////////////////////////////////////////////////////////////////////////
ClassImp(TTrifoilPhysics)
///////////////////////////////////////////////////////////////////////////
TTrifoilPhysics::TTrifoilPhysics()
{
}
///////////////////////////////////////////////////////////////////////////
void TTrifoilPhysics::BuildSimplePhysicalEvent()
{
BuildPhysicalEvent();
}
///////////////////////////////////////////////////////////////////////////
void TTrifoilPhysics::BuildPhysicalEvent()
{
}
///////////////////////////////////////////////////////////////////////////
void TTrifoilPhysics::Clear(){
EventType.clear() ;
Time.clear() ;
m_EventData->Clear();
}
///////////////////////////////////////////////////////////////////////////
//// Innherited from VDetector Class ////
///////////////////////////////////////////////////////////////////////////
void TTrifoilPhysics::ReadConfiguration(string Path)
{
/*Trifoil has only one key word, so do nothing*/
Path.clear();
}
///////////////////////////////////////////////////////////////////////////
void TTrifoilPhysics::AddParameterToCalibrationManager()
{
}
///////////////////////////////////////////////////////////////////////////
void TTrifoilPhysics::InitializeRootInputRaw()
{
TChain* inputChain = RootInput::getInstance()->GetChain() ;
inputChain->SetBranchStatus( "Trifoil" , true ) ;
inputChain->SetBranchStatus( "fTrifoil_*" , true ) ;
inputChain->SetBranchAddress( "Trifoil" , &m_EventData ) ;
}
///////////////////////////////////////////////////////////////////////////
void TTrifoilPhysics::InitializeRootInputPhysics()
{
TChain* inputChain = RootInput::getInstance()->GetChain();
inputChain->SetBranchStatus( "EventType" , true );
inputChain->SetBranchStatus( "Time" , true );
}
///////////////////////////////////////////////////////////////////////////
void TTrifoilPhysics::InitializeRootOutput()
{
TTree* outputTree = RootOutput::getInstance()->GetTree();
outputTree->Branch( "Trifoil" , "TTrifoilPhysics" , &m_EventPhysics );
}
\ No newline at end of file
#ifndef TTrifoilPHYSICS_H
#define TTrifoilPHYSICS_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: Adrien MATTA contact address: matta@ipno.in2p3.fr *
* *
* Creation Date : Devember 2012 *
* Last update : *
*---------------------------------------------------------------------------*
* Decription: *
* This class hold Trifoil treated data *
* *
*---------------------------------------------------------------------------*
* Comment: *
* *
* *
* *
*****************************************************************************/
// STL
#include <vector>
// NPL
#include "TTrifoilData.h"
#include "../include/CalibrationManager.h"
#include "../include/VDetector.h"
// ROOT
#include "TVector2.h"
#include "TVector3.h"
#include "TObject.h"
using namespace std ;
class TTrifoilPhysics : public TObject, public NPA::VDetector
{
public:
TTrifoilPhysics();
~TTrifoilPhysics() {};
public:
void Clear();
void Clear(const Option_t*) {};
public:
// EventType is True if the wave form analysis return a valid Trifoil event
vector<bool> EventType ;
vector<double> Time ;
public: // Innherited from VDetector Class
// Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
void ReadConfiguration(string) ;
// Add Parameter to the CalibrationManger
void AddParameterToCalibrationManager() ;
// Activated associated Branches and link it to the private member DetectorData address
// In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
void InitializeRootInputRaw() ;
// Activated associated Branches and link it to the private member DetectorPhysics address
// In this method mother Branches (Detector) AND daughter leaf (parameter) have to be activated
void InitializeRootInputPhysics() ;
// Create associated branches and associated private member DetectorPhysics address
void InitializeRootOutput() ;
// This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract physical parameter.
void BuildPhysicalEvent() ;
// Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...).
// This method aimed to be used for analysis performed during experiment, when speed is requiered.
// NB: This method can eventually be the same as BuildPhysicalEvent.
void BuildSimplePhysicalEvent() ;
// Same as above but for online analysis
void BuildOnlinePhysicalEvent() {BuildPhysicalEvent();};
// Those two method all to clear the Event Physics or Data
void ClearEventPhysics() {Clear();}
void ClearEventData() {m_EventData->Clear();}
public: // Specific to Trifoil
// Retrieve raw and pre-treated data
TTrifoilData* GetRawData() const {return m_EventData;}
private: // Root Input and Output tree classes
TTrifoilData* m_EventData;//!
TTrifoilPhysics* m_EventPhysics;//!
ClassDef(TTrifoilPhysics,1) // TrifoilPhysics structure
};
#endif
This diff is collapsed.
/********************************************************************
* TTrifoilPhysicsDict.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 TTrifoilPhysicsDict.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_tagtableTTrifoilPhysicsDict();
extern void G__cpp_setup_inheritanceTTrifoilPhysicsDict();
extern void G__cpp_setup_typetableTTrifoilPhysicsDict();
extern void G__cpp_setup_memvarTTrifoilPhysicsDict();
extern void G__cpp_setup_globalTTrifoilPhysicsDict();
extern void G__cpp_setup_memfuncTTrifoilPhysicsDict();
extern void G__cpp_setup_funcTTrifoilPhysicsDict();
extern void G__set_cpp_environmentTTrifoilPhysicsDict();
}
#include "TObject.h"
#include "TMemberInspector.h"
#include "TTrifoilPhysics.h"
#include <algorithm>
namespace std { }
using namespace std;
#ifndef G__MEMFUNCBODY
#endif
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TClass;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TBuffer;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMemberInspector;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TObject;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_vectorlEboolcOallocatorlEboolgRsPgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_string;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TVectorTlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TVectorTlEdoublegR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_vectorlEintcOallocatorlEintgRsPgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_reverse_iteratorlEvectorlEintcOallocatorlEintgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_vectorlETH1FcOallocatorlETH1FgRsPgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_reverse_iteratorlEvectorlETH1FcOallocatorlETH1FgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TTrifoilData;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_maplEstringcOvectorlEdoublecOallocatorlEdoublegRsPgRcOlesslEstringgRcOallocatorlEpairlEconstsPstringcOvectorlEdoublecOallocatorlEdoublegRsPgRsPgRsPgRsPgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_vectorlEstringcOallocatorlEstringgRsPgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_reverse_iteratorlEvectorlEstringcOallocatorlEstringgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_maplEstringcOstringcOlesslEstringgRcOallocatorlEpairlEconstsPstringcOstringgRsPgRsPgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_NPA;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_NPAcLcLVDetector;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTBaselEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTBaselEdoublegR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TElementActionTlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TElementPosActionTlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTRow_constlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTRowlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTDiag_constlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTColumn_constlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTFlat_constlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTSub_constlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTSparseRow_constlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTSparseDiag_constlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTColumnlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTDiaglEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTFlatlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTSublEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTSparseRowlEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TMatrixTSparseDiaglEfloatgR;
extern G__linked_taginfo G__TTrifoilPhysicsDictLN_TTrifoilPhysics;
/* STUB derived class for protected member access */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment