modified: Armory/ClassDet.h

modified:   Armory/Mapper.cpp
    made changes to channel map and Detector class to include misc channels( MCP, RF, IC etc) and fine timing information.
This commit is contained in:
Vignesh Sitaraman 2026-04-25 12:34:05 -04:00
parent 307d5dfc44
commit c3bb28a1a2
2 changed files with 61 additions and 29 deletions

View File

@ -5,60 +5,67 @@
#define MAXMULTI 1000 #define MAXMULTI 1000
class Det{ class Det
{
public: public:
Det(): multi(0) {Clear(); } Det() : multi(0) { Clear(); }
unsigned short multi; // max 65535 unsigned short multi; // max 65535
unsigned short id[MAXMULTI]; unsigned short id[MAXMULTI];
unsigned short ch[MAXMULTI]; unsigned short ch[MAXMULTI];
unsigned short e[MAXMULTI]; unsigned short e[MAXMULTI];
unsigned long long t[MAXMULTI]; unsigned long long t[MAXMULTI];
unsigned long long tf[MAXMULTI];
unsigned short sn[MAXMULTI]; unsigned short sn[MAXMULTI];
unsigned short digiCh[MAXMULTI]; unsigned short digiCh[MAXMULTI];
unsigned short index[MAXMULTI]; // id * nCh + ch; unsigned short index[MAXMULTI]; // id * nCh + ch;
bool used[MAXMULTI]; bool used[MAXMULTI];
void Clear(){ void Clear()
{
multi = 0; multi = 0;
for( int i = 0; i < MAXMULTI; i++){ for (int i = 0; i < MAXMULTI; i++)
{
id[i] = 0; id[i] = 0;
ch[i] = 0; ch[i] = 0;
e[i] = 0; e[i] = 0;
t[i] = 0; t[i] = 0;
index[i] = 0; tf[i] = 0;
sn[i] = 0; index[i] = 0;
digiCh[i] = 0; sn[i] = 0;
used[i] = false; digiCh[i] = 0;
used[i] = false;
} }
} }
void Print(){ void Print()
{
printf("=============================== multi : %u\n", multi); printf("=============================== multi : %u\n", multi);
for( int i = 0; i < multi; i++) { for (int i = 0; i < multi; i++)
{
printf(" %3d | %2d-%-2d(%5d) %5u %15llu \n", i, id[i], ch[i], index[i], e[i], t[i]); printf(" %3d | %2d-%-2d(%5d) %5u %15llu \n", i, id[i], ch[i], index[i], e[i], t[i]);
} }
} }
void SetDetDimension(unsigned short maxID, unsigned maxCh){ void SetDetDimension(unsigned short maxID, unsigned maxCh)
{
nID = maxID; nID = maxID;
nCh = maxCh; nCh = maxCh;
} }
void CalIndex(){ void CalIndex()
for( int i = 0; i < multi; i++){ {
index[i] = id[i] * nCh + ch[i] ; for (int i = 0; i < multi; i++)
{
index[i] = id[i] * nCh + ch[i];
} }
} }
private: private:
unsigned short nID; unsigned short nID;
unsigned short nCh; unsigned short nCh;
}; };
#endif #endif

View File

@ -67,6 +67,7 @@ int main(int argc, char **argv){
Det sx3; Det sx3;
Det qqq; Det qqq;
Det pc ; Det pc ;
Det misc;
printf(" Raw root file : %s\n", inFileName.c_str()); printf(" Raw root file : %s\n", inFileName.c_str());
printf(" Run : %03d\n", run); printf(" Run : %03d\n", run);
@ -99,6 +100,14 @@ int main(int argc, char **argv){
newTree->Branch("pcE", &pc.e, "pcEnergy[pcMulti]/s"); newTree->Branch("pcE", &pc.e, "pcEnergy[pcMulti]/s");
newTree->Branch("pcT", &pc.t, "pcTime[pcMulti]/l"); newTree->Branch("pcT", &pc.t, "pcTime[pcMulti]/l");
newTree->Branch("miscMulti", &misc.multi, "miscMulti/s");
newTree->Branch("miscID", &misc.id, "miscID[miscMulti]/s");
newTree->Branch("miscCh", &misc.ch, "miscCh[miscMulti]/s");
newTree->Branch("miscE", &misc.e, "miscEnergy[miscMulti]/s");
newTree->Branch("miscT", &misc.t, "miscTime[miscMulti]/l");
newTree->Branch("miscF", &misc.tf, "miscFineTime[miscMulti]/l");
///================== looping old tree and apply mapping ///================== looping old tree and apply mapping
//clock //clock
@ -112,8 +121,12 @@ int main(int argc, char **argv){
sx3.multi = 0; sx3.multi = 0;
qqq.multi = 0; qqq.multi = 0;
pc.multi = 0; pc.multi = 0;
misc.multi=0;
sx3.Clear();
qqq.Clear(); qqq.Clear();
pc.Clear();
misc.Clear();
for( unsigned int i = 0; i < multi; i++){ for( unsigned int i = 0; i < multi; i++){
@ -160,6 +173,18 @@ int main(int argc, char **argv){
pc.t[pc.multi] = e_t[i]; pc.t[pc.multi] = e_t[i];
pc.multi ++; pc.multi ++;
} }
//=================================== misc
if( 30000 <= ID && ID < 40000 ) {
misc.id[misc.multi] = (ID - 30000) / 100;
misc.ch[misc.multi] = (ID - 30000) % 100;
misc.e[misc.multi] = e[i];
misc.t[misc.multi] = e_t[i];
misc.tf[misc.multi] = e_f[i];
// if( ID == 30002 || ID == 30004 ) printf("sn : %d ch: %2d | gID %3d | ID %6d | e_f : %d\n", sn[i], ch[i], globalCh, ID, e_f[i]);
misc.multi ++;
}
} }
saveFile->cd(); //set focus on this file saveFile->cd(); //set focus on this file