#include #include #include #include #include #include #include #include #include "include/DataStructs.h" #include "include/CompassHit.h" #include "include/GainMatcher.h" #include "include/SabreMap.h" R__LOAD_LIBRARY(lib/libGainMatcher.dylib) R__LOAD_LIBRARY(lib/libSPSDict.dylib) R__LOAD_LIBRARY(lib/libSabreMap.dylib) void MyFill(THashTable *table, std::string name, int bins, double min, double max, double value) { TH1F *histo = (TH1F*) table->FindObject(name.c_str()); if(histo == NULL) { TH1F* h = new TH1F(name.c_str(), name.c_str(), bins, min, max); h->Fill(value); table->Add(h); } else { histo->Fill(value); } } void MyFill(THashTable *table, std::string name, int binsx, double minx, double maxx, double valuex , int binsy, double miny, double maxy, double valuey) { TH2F *histo = (TH2F*) table->FindObject(name.c_str()); if(histo == NULL) { TH2F* h = new TH2F(name.c_str(), name.c_str(), binsx, minx, maxx, binsy, miny, maxy); h->Fill(valuex, valuey); table->Add(h); } else { histo->Fill(valuex, valuey); } } void SabreSingles_raw() { GainMatcher gains; gains.SetFile("etc/March2020_gainmatch_2.0V_5486Am241.txt"); std::unordered_map smap; FillSabreMap("etc/ChannelMap_March2020_flipping.dat", smap); TFile *input = TFile::Open("/Volumes/LaCie/9BMarch2020/raw_root_singles/compass_run_37.root", "READ"); TTree *intree = (TTree*) input->Get("Data"); ULong64_t ts; UShort_t e, c, b, es; UInt_t f; intree->SetBranchAddress("Timestamp", &ts); intree->SetBranchAddress("Channel", &c); intree->SetBranchAddress("Board", &b); intree->SetBranchAddress("Energy", &e); intree->SetBranchAddress("EnergyShort", &es); intree->SetBranchAddress("Flags", &f); intree->SetMaxVirtualSize(4000000000); TFile *output = TFile::Open("/Volumes/LaCie/9BMarch2020/analyzed_singles/singles_run37.root","RECREATE"); THashTable *hash = new THashTable(); int gchan; DPPChannel hit; cout<<"Total Number of Entries: "<GetEntries()<GetEntries(); i++) { intree->GetEntry(i); std::cout<<"\rNumber of entries processed: "<20) { MyFill(hash, Form("detector%i_ring%i_energy",schan.detID,hit.Channel), 280, 0, 28, hit.Energy*gains.GetScaler(gchan)); } } input->Close(); hash->Write(); output->Close(); } void SabreSingles_analyzed() { std::unordered_map smap; FillSabreMap("etc/ChannelMap_March2020_flipping.dat", smap); TFile *input = TFile::Open("/Volumes/LaCie/9BMarch2020/combined/downscaled_singles.root", "READ"); TTree *intree = (TTree*) input->Get("SPSTree"); ProcessedEvent *event_address = new ProcessedEvent(); intree->SetBranchAddress("event", &event_address); intree->SetMaxVirtualSize(4000000000); TFile *output = TFile::Open("/Volumes/LaCie/9BMarch2020/analyzed_singles/downscale_histograms.root", "RECREATE"); THashTable *hash = new THashTable(); std::cout<<"Total entries: "<GetEntries()<GetEntries(); i++) { std::cout<<"\rNumber of entries processed: "<GetEntry(i); for(int j=0; j<5; j++) { for(unsigned int k=0; k<(event_address->sabreArray[j].rings.size()); k++) { MyFill(hash, Form("detector%i_ring%i_energy",j,event_address->sabreArray[j].rings[k].Ch), 280,0,28, event_address->sabreArray[j].rings[k].Long); } } } input->Close(); hash->Write(); output->Close(); delete event_address; } void SabreSingles() { //SabreSingles_raw(); SabreSingles_analyzed(); }