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

* Adding automatic configuration of TSharcData classe using FSPC file from Tigress DAQ

parent b94de91a
No related branches found
No related tags found
No related merge requests found
......@@ -20,6 +20,9 @@
* *
*****************************************************************************/
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
using namespace std;
#include "TSharcData.h"
......@@ -86,3 +89,211 @@ void TSharcData::Dump() const
<< " Time: " << fSharc_PAD_Time[i] << endl;
}
}
/////////////////////////
void TSharcData::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 << "Sharc is Reading FSPC file : " << FSPCPath << endl ;}
string LineBuffer;
string DataBuffer;
string DetectorName;
string FrontBack;
string ChannelNumberStr;
int ChannelNumber;
int StripNumber;
while(!FSPCFile.eof()){
getline(FSPCFile,LineBuffer);
// Typical line to analyse: # 960: Address 0x00100700, type 6, UmCD1 Front 00 [TIG64-SHARC Up CD 1 Front (UmCD1f 00) 0x0100700]
stringstream myLine(LineBuffer);
myLine >> DataBuffer >> ChannelNumberStr >> DataBuffer >> DataBuffer >> DataBuffer >> DataBuffer >> DetectorName >> FrontBack >> StripNumber ;
ChannelNumberStr = ChannelNumberStr.substr(0,ChannelNumberStr.length()-1);
stringstream(ChannelNumberStr) >> ChannelNumber;
//cout << ChannelNumber << " " << DetectorName << " " << FrontBack << " " << StripNumber << endl ;
// Key is the FSPC channel,
// vector[0] is the Detector Nbr
// vector[1] is 0: QQQ , 1: Box, 2: PAD
// vector[2] the type: 0: Front , 1: Back1 or Back , 2: Back2
// vector[3] strip nbr (FSPC ref)
vector<int> FSPCInfo;
if(DetectorName.length()==5 ) {
if(DetectorName.compare(2,2,"CD")==0){
string DetectorName2 = DetectorName.substr(4);
int DetectorNbr;
stringstream(DetectorName2) >> DetectorNbr;
if(DetectorName.compare(0,1,"U")==0) {/*do nothing*/;}
else if(DetectorName.compare(0,1,"D")==0) DetectorNbr += 12;
FSPCInfo.push_back(DetectorNbr);
FSPCInfo.push_back(0);
if(FrontBack == "Front")
FSPCInfo.push_back(0);
else if (FrontBack == "Back")
FSPCInfo.push_back(1);
else {cout << "Error: FSPC File Incorrectly formatted" << endl ; exit(1);}
FSPCInfo.push_back(StripNumber);
m_FSPC2Detector[ChannelNumber]= FSPCInfo;
}
else if(DetectorName.compare(2,2,"Bx")==0){
string DetectorName2 = DetectorName.substr(4);
int DetectorNbr;
stringstream(DetectorName2) >> DetectorNbr;
if(DetectorName.compare(0,1,"U")==0) DetectorNbr += 4;
else if(DetectorName.compare(0,1,"D")==0) DetectorNbr += 8;
FSPCInfo.push_back(DetectorNbr);
FSPCInfo.push_back(1);
if(FrontBack == "Front")
FSPCInfo.push_back(0);
else if (FrontBack == "Back1")
FSPCInfo.push_back(1);
else if (FrontBack == "Back2")
FSPCInfo.push_back(2);
else {cout << "Error: FSPC File Incorrectly formatted" << endl ; exit(1);}
FSPCInfo.push_back(StripNumber);
m_FSPC2Detector[ChannelNumber]= FSPCInfo;
}
else if(DetectorName=="SHARC"){
if(FrontBack=="DoBx"){/*do nothing*/;}
else {cout << "Error: FSPC File Incorrectly formatted" << endl ; exit(1);}
int DetectorNbr=0;
if(ChannelNumber==1984) DetectorNbr = 9;
else if(ChannelNumber==1985) DetectorNbr = 10;
else if(ChannelNumber==1986) DetectorNbr = 12;
else if(ChannelNumber==1987) DetectorNbr = 11;
if(DetectorNbr!=0){
FSPCInfo.push_back(DetectorNbr);
FSPCInfo.push_back(2);
FSPCInfo.push_back(StripNumber);
m_FSPC2Detector[ChannelNumber]= FSPCInfo;
}
}
}
}
return;
}
void TSharcData::FillData(TTigEventFragment* TigEvent){
for(unsigned int i = 0 ; i < TigEvent->channel_number.size() ; i++){
vector<int> channel_number = TigEvent->channel_number;
if(m_FSPC2Detector.find(channel_number[i])!=m_FSPC2Detector.end()){
int DetNbr = m_FSPC2Detector[channel_number[i]][0];
int type = m_FSPC2Detector[channel_number[i]][1];
int FB = m_FSPC2Detector[channel_number[i]][2];
if(type == 0 ){
if (FB == 0 ) FillQQQFront(DetNbr , i , TigEvent);
else if (FB == 1 ) FillQQQBack (DetNbr , i , TigEvent);
}
else if (type == 1 ){
if (FB == 0 ) FillBoxFront (DetNbr , i , TigEvent);
else if (FB == 1 ) FillBoxBack1 (DetNbr , i , TigEvent);
else if (FB == 2 ) FillBoxBack2 (DetNbr , i , TigEvent);
}
else if (type == 2 ){
FillPAD(DetNbr , i , TigEvent);
}
else{cout << "ERROR: FSPC map incorrectly instantiate" << endl ; exit(1);}
}
}
}
// Fill Box
void TSharcData::FillBoxFront(int DetNbr, int hit,TTigEventFragment* TigEvent){
vector<int> channel_number = TigEvent->channel_number;
int StripNbr = m_FSPC2Detector[channel_number[hit]][3];
if(StripNbr<25){
SetFront_DetectorNbr(DetNbr);
SetFront_StripNbr(StripNbr);
SetFront_Energy(TigEvent->charge_raw[hit]);
SetFront_Time(TigEvent->cfd_value[hit]);
}
}
void TSharcData::FillBoxBack1(int DetNbr, int hit,TTigEventFragment* TigEvent){
vector<int> channel_number = TigEvent->channel_number;
int StripNbr = m_FSPC2Detector[channel_number[hit]][3];
if(StripNbr<25){
SetBack_DetectorNbr(DetNbr);
// Box Case, ordering is reversed
StripNbr = 25 - StripNbr;
SetBack_StripNbr(StripNbr);
SetBack_Energy(TigEvent->charge_raw[hit]);
SetBack_Time(TigEvent->cfd_value[hit]);
}
}
void TSharcData::FillBoxBack2(int DetNbr, int hit,TTigEventFragment* TigEvent){
vector<int> channel_number = TigEvent->channel_number;
int StripNbr = m_FSPC2Detector[channel_number[hit]][3];
if(StripNbr<25){
SetBack_DetectorNbr(DetNbr);
// Box Case, ordering is reversed
StripNbr = 25 - StripNbr;
SetBack_StripNbr(StripNbr+24);
SetBack_Energy(TigEvent->charge_raw[hit]);
SetBack_Time(TigEvent->cfd_value[hit]);
}
}
// Fill QQQ
void TSharcData::FillQQQFront(int DetNbr, int hit,TTigEventFragment* TigEvent){
vector<int> channel_number = TigEvent->channel_number;
int StripNbr = m_FSPC2Detector[channel_number[hit]][3];
if(StripNbr<25){
SetFront_DetectorNbr(DetNbr);
SetFront_StripNbr(StripNbr);
SetFront_Energy(TigEvent->charge_raw[hit]);
SetFront_Time(TigEvent->cfd_value[hit]);
}
}
void TSharcData::FillQQQBack(int DetNbr, int hit,TTigEventFragment* TigEvent){
vector<int> channel_number = TigEvent->channel_number;
int StripNbr = m_FSPC2Detector[channel_number[hit]][3];
if(StripNbr<25){
SetBack_DetectorNbr(DetNbr);
SetBack_StripNbr(StripNbr);
SetBack_Energy(TigEvent->charge_raw[hit]);
SetBack_Time(TigEvent->cfd_value[hit]);
}
}
// Fill PAD
void TSharcData::FillPAD(int DetNbr,int hit,TTigEventFragment* TigEvent){
SetPAD_DetectorNbr(DetNbr);
SetPAD_Energy(TigEvent->charge_raw[hit]);
SetPAD_Time(TigEvent->cfd_value[hit]);
}
map< int,vector<int> > TSharcData::GetFSPC2Detector()const{
return m_FSPC2Detector;
}
\ No newline at end of file
......@@ -21,10 +21,18 @@
* *
* *
*****************************************************************************/
// STL
#include <vector>
#include "TObject.h"
#include <map>
using namespace std ;
// NPL
#include "../Tigress/TTigEventFragment.h"
// ROOT
#include "TObject.h"
class TSharcData : public TObject {
private:
// Sharc
......@@ -68,24 +76,44 @@ public:
///////////////////// GETTERS ////////////////////////
UShort_t GetFront_DetectorNbr(unsigned int i) const {return fSharc_StripFront_DetectorNbr[i];}
UShort_t GetFront_StripNbr(unsigned int i) const {return fSharc_StripFront_StripNbr[i];}
Double_t GetFront_Energy(unsigned int i) const {return fSharc_StripFront_Energy[i];}
Double_t GetFront_Time(unsigned int i) const {return fSharc_StripFront_Time[i];}
UShort_t GetBack_DetectorNbr(unsigned int i) const {return fSharc_StripBack_DetectorNbr[i];}
UShort_t GetBack_StripNbr(unsigned int i) const {return fSharc_StripBack_StripNbr[i];}
Double_t GetBack_Energy(unsigned int i) const {return fSharc_StripBack_Energy[i];}
Double_t GetBack_Time(unsigned int i) const {return fSharc_StripBack_Time[i];}
UShort_t GetPAD_DetectorNbr(unsigned int i) const {return fSharc_PAD_DetectorNbr[i];}
Double_t GetPAD_Energy(unsigned int i) const {return fSharc_PAD_Energy[i];}
Double_t GetPAD_Time(unsigned int i) const {return fSharc_PAD_Time[i];}
UShort_t GetFront_DetectorNbr(unsigned int i) const {return fSharc_StripFront_DetectorNbr[i];}//!
UShort_t GetFront_StripNbr(unsigned int i) const {return fSharc_StripFront_StripNbr[i];}//!
Double_t GetFront_Energy(unsigned int i) const {return fSharc_StripFront_Energy[i];}//!
Double_t GetFront_Time(unsigned int i) const {return fSharc_StripFront_Time[i];}//!
UShort_t GetBack_DetectorNbr(unsigned int i) const {return fSharc_StripBack_DetectorNbr[i];}//!
UShort_t GetBack_StripNbr(unsigned int i) const {return fSharc_StripBack_StripNbr[i];}//!
Double_t GetBack_Energy(unsigned int i) const {return fSharc_StripBack_Energy[i];}//!
Double_t GetBack_Time(unsigned int i) const {return fSharc_StripBack_Time[i];}//!
UShort_t GetPAD_DetectorNbr(unsigned int i) const {return fSharc_PAD_DetectorNbr[i];}//!
Double_t GetPAD_Energy(unsigned int i) const {return fSharc_PAD_Energy[i];}//!
Double_t GetPAD_Time(unsigned int i) const {return fSharc_PAD_Time[i];}//!
unsigned int GetMultiplicityFront() const {return fSharc_StripFront_DetectorNbr.size();}
unsigned int GetMultiplicityBack() const {return fSharc_StripBack_DetectorNbr.size();}
unsigned int GetMultiplicityPAD() const {return fSharc_PAD_DetectorNbr.size();}
unsigned int GetMultiplicityFront() const {return fSharc_StripFront_DetectorNbr.size();}//!
unsigned int GetMultiplicityBack() const {return fSharc_StripBack_DetectorNbr.size();}//!
unsigned int GetMultiplicityPAD() const {return fSharc_PAD_DetectorNbr.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);//!
void FillBoxFront(int DetNbr,int hit,TTigEventFragment* TigEvent);//!
void FillBoxBack1(int DetNbr,int hit,TTigEventFragment* TigEvent);//!
void FillBoxBack2(int DetNbr,int hit,TTigEventFragment* TigEvent);//!
void FillQQQFront(int DetNbr,int hit,TTigEventFragment* TigEvent);//!
void FillQQQBack(int DetNbr,int hit,TTigEventFragment* TigEvent);//!
void FillPAD(int DetNbr,int hit,TTigEventFragment* TigEvent) ;//!
map< int,vector<int> > GetFSPC2Detector() const ;//!
private:// Key is the FSPC channel,
// vector[0] is the Detector Nbr
// vector[1] is 0: QQQ , 1: Box, 2: PAD
// vector[2] the type: 0: Front , 1: Back1 or Back , 2: Back2
// vector[3] strip nbr (FSPC ref)
map< int,vector<int> > m_FSPC2Detector;//!
ClassDef(TSharcData,1) // SharcData structure
};
......
This diff is collapsed.
......@@ -45,10 +45,19 @@ extern G__linked_taginfo G__TSharcDataDictLN_TMemberInspector;
extern G__linked_taginfo G__TSharcDataDictLN_TObject;
extern G__linked_taginfo G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR;
extern G__linked_taginfo G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR;
extern G__linked_taginfo G__TSharcDataDictLN_string;
extern G__linked_taginfo G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
extern G__linked_taginfo G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
extern G__linked_taginfo G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TSharcDataDictLN_TVectorTlEfloatgR;
extern G__linked_taginfo G__TSharcDataDictLN_TVectorTlEdoublegR;
extern G__linked_taginfo G__TSharcDataDictLN_TTigEventFragment;
extern G__linked_taginfo G__TSharcDataDictLN_vectorlEintcOallocatorlEintgRsPgR;
extern G__linked_taginfo G__TSharcDataDictLN_reverse_iteratorlEvectorlEintcOallocatorlEintgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TSharcDataDictLN_vectorlETH1FcOallocatorlETH1FgRsPgR;
extern G__linked_taginfo G__TSharcDataDictLN_reverse_iteratorlEvectorlETH1FcOallocatorlETH1FgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TSharcDataDictLN_TSharcData;
extern G__linked_taginfo G__TSharcDataDictLN_maplEintcOvectorlEintcOallocatorlEintgRsPgRcOlesslEintgRcOallocatorlEpairlEconstsPintcOvectorlEintcOallocatorlEintgRsPgRsPgRsPgRsPgR;
/* STUB derived class for protected member access */
This diff is collapsed.
......@@ -50,7 +50,14 @@ extern G__linked_taginfo G__TSharcPhysicsDictLN_vectorlEROOTcLcLTSchemaHelpercOa
extern G__linked_taginfo G__TSharcPhysicsDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_TVectorTlEfloatgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_TVectorTlEdoublegR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_vectorlEintcOallocatorlEintgRsPgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_reverse_iteratorlEvectorlEintcOallocatorlEintgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_vectorlETH1FcOallocatorlETH1FgRsPgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_reverse_iteratorlEvectorlETH1FcOallocatorlETH1FgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_TSharcData;
extern G__linked_taginfo G__TSharcPhysicsDictLN_maplEintcOvectorlEintcOallocatorlEintgRsPgRcOlesslEintgRcOallocatorlEpairlEconstsPintcOvectorlEintcOallocatorlEintgRsPgRsPgRsPgRsPgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_maplEstringcOvectorlEdoublecOallocatorlEdoublegRsPgRcOlesslEstringgRcOallocatorlEpairlEconstsPstringcOvectorlEdoublecOallocatorlEdoublegRsPgRsPgRsPgRsPgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_vectorlEstringcOallocatorlEstringgRsPgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_reverse_iteratorlEvectorlEstringcOallocatorlEstringgRsPgRcLcLiteratorgR;
......@@ -59,8 +66,6 @@ extern G__linked_taginfo G__TSharcPhysicsDictLN_NPA;
extern G__linked_taginfo G__TSharcPhysicsDictLN_NPAcLcLVDetector;
extern G__linked_taginfo G__TSharcPhysicsDictLN_TMatrixTBaselEfloatgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_TMatrixTBaselEdoublegR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_TVectorTlEfloatgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_TVectorTlEdoublegR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_TElementActionTlEfloatgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_TElementPosActionTlEfloatgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_TMatrixTlEfloatgR;
......@@ -82,8 +87,6 @@ extern G__linked_taginfo G__TSharcPhysicsDictLN_TVector3;
extern G__linked_taginfo G__TSharcPhysicsDictLN_TSharcPhysics;
extern G__linked_taginfo G__TSharcPhysicsDictLN_vectorlETVector2cOallocatorlETVector2gRsPgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_reverse_iteratorlEvectorlETVector2cOallocatorlETVector2gRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_vectorlEintcOallocatorlEintgRsPgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_reverse_iteratorlEvectorlEintcOallocatorlEintgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_maplEintcOvectorlEboolcOallocatorlEboolgRsPgRcOlesslEintgRcOallocatorlEpairlEconstsPintcOvectorlEboolcOallocatorlEboolgRsPgRsPgRsPgRsPgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_vectorlEvectorlEdoublecOallocatorlEdoublegRsPgRcOallocatorlEvectorlEdoublecOallocatorlEdoublegRsPgRsPgRsPgR;
extern G__linked_taginfo G__TSharcPhysicsDictLN_reverse_iteratorlEvectorlEvectorlEdoublecOallocatorlEdoublegRsPgRcOallocatorlEvectorlEdoublecOallocatorlEdoublegRsPgRsPgRsPgRcLcLiteratorgR;
......
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