Skip to content
Snippets Groups Projects
Commit bebeea25 authored by adrien-matta's avatar adrien-matta
Browse files

* Fixing issue in TExogamSpectra causing crashes

- Acces to time element were inside energy loop
* changing .at(i) vector access in TExogamData by [i]
- code is about 20% faster
parent ece9becf
No related branches found
No related tags found
No related merge requests found
......@@ -88,26 +88,26 @@ class TExogamData : public TObject {
// ECC / Energy
// UShort_t GetCloverMult() {return fEXO_ECC_E_Clover.size();}
UShort_t GetECCEMult() {return fEXO_ECC_E_Clover.size();}
UShort_t GetECCEClover(Int_t i) {return fEXO_ECC_E_Clover.at(i);}
UShort_t GetECCECristal(Int_t i) {return fEXO_ECC_E_Cristal.at(i);}
UShort_t GetECCEEnergy(Int_t i) {return fEXO_ECC_E_Energy.at(i);}
UShort_t GetECCEClover(Int_t i) {return fEXO_ECC_E_Clover[i];}
UShort_t GetECCECristal(Int_t i) {return fEXO_ECC_E_Cristal[i];}
UShort_t GetECCEEnergy(Int_t i) {return fEXO_ECC_E_Energy[i];}
// ECC / Time
UShort_t GetECCTMult() {return fEXO_ECC_T_Clover.size();}
UShort_t GetECCTClover(Int_t i) {return fEXO_ECC_T_Clover.at(i);}
UShort_t GetECCTCristal(Int_t i) {return fEXO_ECC_T_Cristal.at(i);}
UShort_t GetECCTTime(Int_t i) {return fEXO_ECC_T_Time.at(i);}
UShort_t GetECCTClover(Int_t i) {return fEXO_ECC_T_Clover[i];}
UShort_t GetECCTCristal(Int_t i) {return fEXO_ECC_T_Cristal[i];}
UShort_t GetECCTTime(Int_t i) {return fEXO_ECC_T_Time[i];}
// GOCCE / Energy
UShort_t GetGOCCEEMult() {return fEXO_GOCCE_E_Clover.size();} // multiplicity of segments hit in one clover
UShort_t GetGOCCEEClover(Int_t i) {return fEXO_GOCCE_E_Clover.at(i);}
UShort_t GetGOCCEECristal(Int_t i) {return fEXO_GOCCE_E_Cristal.at(i);}
UShort_t GetGOCCEESegment(Int_t i) {return fEXO_GOCCE_E_Segment.at(i);}
UShort_t GetGOCCEEEnergy(Int_t i) {return fEXO_GOCCE_E_Energy.at(i);}
UShort_t GetGOCCEEClover(Int_t i) {return fEXO_GOCCE_E_Clover[i];}
UShort_t GetGOCCEECristal(Int_t i) {return fEXO_GOCCE_E_Cristal[i];}
UShort_t GetGOCCEESegment(Int_t i) {return fEXO_GOCCE_E_Segment[i];}
UShort_t GetGOCCEEEnergy(Int_t i) {return fEXO_GOCCE_E_Energy[i];}
// GOCCE / Time
UShort_t GetGOCCETMult() {return fEXO_GOCCE_T_Clover.size();}
UShort_t GetGOCCETClover(Int_t i) {return fEXO_GOCCE_T_Clover.at(i);}
UShort_t GetGOCCETCristal(Int_t i) {return fEXO_GOCCE_T_Cristal.at(i);}
UShort_t GetGOCCETSegment(Int_t i) {return fEXO_GOCCE_T_Segment.at(i);}
UShort_t GetGOCCETTime(Int_t i) {return fEXO_GOCCE_T_Time.at(i);}
UShort_t GetGOCCETClover(Int_t i) {return fEXO_GOCCE_T_Clover[i];}
UShort_t GetGOCCETCristal(Int_t i) {return fEXO_GOCCE_T_Cristal[i];}
UShort_t GetGOCCETSegment(Int_t i) {return fEXO_GOCCE_T_Segment[i];}
UShort_t GetGOCCETTime(Int_t i) {return fEXO_GOCCE_T_Time[i];}
//GeFill
UShort_t GetGeFill() {return fEXO_Fill;}
......
......@@ -21,6 +21,12 @@
* *
*****************************************************************************/
// STL
#include <iostream>
#include <cstdlib>
#include <stdexcept>
// NPL
#include "TExogamSpectra.h"
#include "NPOptionManager.h"
......@@ -126,20 +132,14 @@ void TExogamSpectra::FillRawSpectra(TExogamData* RawData){
string name;
string family;
// Energy and Time RAw
// Energy
for (unsigned int i = 0; i < RawData->GetECCEMult(); i++) {
name = Form("ExogamEnergyRaw_Clover%d_ECC%d", RawData->GetECCEClover(i)+1,RawData->GetECCECristal(i)+1);
family = "Exogam/RAW";
GetHisto(family,name)
-> Fill(RawData->GetECCEEnergy(i));
name = Form("ExogamTimeRaw_Clover%d_ECC%d", RawData->GetECCTClover(i)+1,RawData->GetECCTCristal(i)+1);
family = "Exogam/RAW";
GetHisto(family,name)
-> Fill(RawData->GetECCTTime(i));
name = Form("ExogamEnergyRaw_Clover%d_ECC%d_GOCCE%d", RawData->GetECCEClover(i)+1,RawData->GetECCECristal(i)+1,RawData->GetGOCCEESegment(i)+1);
family = "Exogam/RAW";
......@@ -147,14 +147,21 @@ void TExogamSpectra::FillRawSpectra(TExogamData* RawData){
-> Fill(RawData->GetGOCCEEEnergy(i));
}
// Time
for (unsigned int i = 0; i < RawData->GetECCTMult(); i++) {
name = Form("ExogamTimeRaw_Clover%d_ECC%d", RawData->GetECCTClover(i)+1,RawData->GetECCTCristal(i)+1);
family = "Exogam/RAW";
GetHisto(family,name)
-> Fill(RawData->GetECCTTime(i));
}
}
////////////////////////////////////////////////////////////////////////////////
void TExogamSpectra::FillPreTreatedSpectra(TExogamData* PreTreatedData){
string name ;
string family;
// Energy and Time RAw
// Energy
for (unsigned int i = 0; i < PreTreatedData->GetECCEMult(); i++) {
name = Form("ExogamEnergyCal_Clover%d_ECC%d", PreTreatedData->GetECCEClover(i)+1,PreTreatedData->GetECCECristal(i)+1);
family = "Exogam/Cal";
......@@ -162,18 +169,23 @@ void TExogamSpectra::FillPreTreatedSpectra(TExogamData* PreTreatedData){
GetHisto(family,name)
-> Fill(PreTreatedData->GetECCEEnergy(i));
name = Form("ExogamTimeCal_Clover%d_ECC%d", PreTreatedData->GetECCTClover(i)+1,PreTreatedData->GetECCTCristal(i)+1);
family = "Exogam/Cal";
GetHisto(family,name)
-> Fill(PreTreatedData->GetECCTTime(i));
name = Form("ExogamEnergyCal_Clover%d_ECC%d_GOCCE%d", PreTreatedData->GetECCEClover(i)+1,PreTreatedData->GetECCECristal(i)+1,PreTreatedData->GetGOCCEESegment(i)+1);
family = "Exogam/Cal";
GetHisto(family,name)
-> Fill(PreTreatedData->GetGOCCEEEnergy(i));
}
// Time
for (unsigned int i = 0; i < PreTreatedData->GetECCTMult(); i++) {
name = Form("ExogamTimeCal_Clover%d_ECC%d", PreTreatedData->GetECCTClover(i)+1,PreTreatedData->GetECCTCristal(i)+1);
family = "Exogam/Cal";
GetHisto(family,name)
-> Fill(PreTreatedData->GetECCTTime(i));
}
}
////////////////////////////////////////////////////////////////////////////////
......@@ -221,14 +233,25 @@ TH1* TExogamSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_
////////////////////////////////////////////////////////////////////////////////
TH1* TExogamSpectra::GetHisto(string family, string name){
vector<string> index ;
vector<string> index;
index.reserve(2);
index.push_back(family);
index.push_back(name);
TH1* histo ;
// fill map
return fMapHisto.at(index);
try{
histo = fMapHisto.at(index);
}
catch(const std::out_of_range& oor){
cout << "ERROR : the folowing Histo has been requested by TCATSSpectra and does not exist: family:" << family << " name: " << name << endl ;
exit(1);
}
return histo;
}
////////////////////////////////////////////////////////////////////////////////
void TExogamSpectra::WriteHisto(string filename){
TFile* f=NULL;
......
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