snapshot after 27Al experiment
This commit is contained in:
parent
88baa6a7dc
commit
ccab43f18c
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -3,6 +3,10 @@ EventBuilder*
|
||||||
*.so
|
*.so
|
||||||
*.pcm
|
*.pcm
|
||||||
*.root
|
*.root
|
||||||
|
*.exe
|
||||||
|
|
||||||
Mapper
|
Mapper
|
||||||
AnasenMS
|
AnasenMS
|
||||||
|
|
||||||
|
data/
|
||||||
|
data_proton/
|
||||||
|
|
12
.vscode/c_cpp_properties.json
vendored
12
.vscode/c_cpp_properties.json
vendored
|
@ -36,6 +36,18 @@
|
||||||
"cStandard": "c17",
|
"cStandard": "c17",
|
||||||
"cppStandard": "gnu++17",
|
"cppStandard": "gnu++17",
|
||||||
"intelliSenseMode": "linux-gcc-x64"
|
"intelliSenseMode": "linux-gcc-x64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dirac",
|
||||||
|
"includePath": [
|
||||||
|
"${workspaceFolder}/**",
|
||||||
|
"/usr/opt/root/**"
|
||||||
|
],
|
||||||
|
"defines": [],
|
||||||
|
"compilerPath": "/usr/bin/gcc",
|
||||||
|
"cStandard": "c17",
|
||||||
|
"cppStandard": "gnu++17",
|
||||||
|
"intelliSenseMode": "linux-gcc-x64"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"version": 4
|
"version": 4
|
||||||
|
|
6
.vscode/settings.json
vendored
6
.vscode/settings.json
vendored
|
@ -86,6 +86,10 @@
|
||||||
"regex": "cpp",
|
"regex": "cpp",
|
||||||
"scoped_allocator": "cpp",
|
"scoped_allocator": "cpp",
|
||||||
"shared_mutex": "cpp",
|
"shared_mutex": "cpp",
|
||||||
"valarray": "cpp"
|
"valarray": "cpp",
|
||||||
|
"processRun.C": "cpp",
|
||||||
|
"TrackRecon.C": "cpp",
|
||||||
|
"processRuns.C": "cpp",
|
||||||
|
"Analysis.C": "cpp"
|
||||||
}
|
}
|
||||||
}
|
}
|
20
Analysis.C
Normal file
20
Analysis.C
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#include "TChain.h"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Analysis(int start, int end) {
|
||||||
|
// Create a TChain
|
||||||
|
TChain *chain = new TChain("tree");
|
||||||
|
for(int i = start; i < end+1; i++) {
|
||||||
|
chain->Add(Form("data/root_data/Run_%03d_mapped.root", i));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process the chain using Analyzer.C+
|
||||||
|
chain->Process("Analyzer.C+");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define a macro with the same name as the script
|
||||||
|
void Analysis() {
|
||||||
|
Analysis(72, 194); // Adjust the range if needed
|
||||||
|
}
|
261
Analyzer.C
261
Analyzer.C
|
@ -6,6 +6,14 @@
|
||||||
#include <TCanvas.h>
|
#include <TCanvas.h>
|
||||||
#include <TMath.h>
|
#include <TMath.h>
|
||||||
|
|
||||||
|
#include <utility>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
#include "Armory/ClassSX3.h"
|
||||||
|
#include "Armory/ClassPW.h"
|
||||||
|
|
||||||
|
#include "TVector3.h"
|
||||||
|
|
||||||
TH2F * hsx3IndexVE;
|
TH2F * hsx3IndexVE;
|
||||||
TH2F * hqqqIndexVE;
|
TH2F * hqqqIndexVE;
|
||||||
TH2F * hpcIndexVE;
|
TH2F * hpcIndexVE;
|
||||||
|
@ -16,9 +24,18 @@ TH2F * hpcCoin;
|
||||||
|
|
||||||
TH2F * hqqqPolar;
|
TH2F * hqqqPolar;
|
||||||
TH2F * hsx3VpcIndex;
|
TH2F * hsx3VpcIndex;
|
||||||
|
TH2F * hqqqVpcIndex;
|
||||||
|
TH2F * hqqqVpcE;
|
||||||
|
TH2F * hsx3VpcE;
|
||||||
|
TH2F * hanVScatsum;
|
||||||
int padID = 0;
|
int padID = 0;
|
||||||
|
|
||||||
|
SX3 sx3_contr;
|
||||||
|
PW pw_contr;
|
||||||
|
TVector3 hitPos;
|
||||||
|
bool HitNonZero;
|
||||||
|
|
||||||
|
TH1F * hZProj;
|
||||||
|
|
||||||
void Analyzer::Begin(TTree * /*tree*/){
|
void Analyzer::Begin(TTree * /*tree*/){
|
||||||
TString option = GetOption();
|
TString option = GetOption();
|
||||||
|
@ -37,11 +54,37 @@ void Analyzer::Begin(TTree * /*tree*/){
|
||||||
hsx3VpcIndex = new TH2F("hsx3Vpcindex", "sx3 vs pc; sx3 index; pc index", 24*12, 0, 24*12, 48, 0, 48);
|
hsx3VpcIndex = new TH2F("hsx3Vpcindex", "sx3 vs pc; sx3 index; pc index", 24*12, 0, 24*12, 48, 0, 48);
|
||||||
hsx3VpcIndex->SetNdivisions( -612, "x");
|
hsx3VpcIndex->SetNdivisions( -612, "x");
|
||||||
hsx3VpcIndex->SetNdivisions( -12, "y");
|
hsx3VpcIndex->SetNdivisions( -12, "y");
|
||||||
|
hqqqVpcIndex = new TH2F("hqqqVpcindex", "qqq vs pc; qqq index; pc index", 4*2*16, 0, 4*2*16, 48, 0, 48);
|
||||||
|
hqqqVpcIndex->SetNdivisions( -612, "x");
|
||||||
|
hqqqVpcIndex->SetNdivisions( -12, "y");
|
||||||
|
|
||||||
|
hqqqVpcE = new TH2F("hqqqVpcEnergy", "qqq vs pc; qqq energy; pc energy", 400, 0, 5000, 400, 0, 5000);
|
||||||
|
hqqqVpcE->SetNdivisions( -612, "x");
|
||||||
|
hqqqVpcE->SetNdivisions( -12, "y");
|
||||||
|
|
||||||
|
hsx3VpcE = new TH2F("hsx3VpcEnergy", "sx3 vs pc; sx3 energy; pc energy", 400, 0, 5000, 400, 0, 5000);
|
||||||
|
hsx3VpcE->SetNdivisions( -612, "x");
|
||||||
|
hsx3VpcE->SetNdivisions( -12, "y");
|
||||||
|
|
||||||
|
hZProj = new TH1F("hZProj", "Z Projection", 200, -600, 600);
|
||||||
|
|
||||||
|
hanVScatsum = new TH2F("hanVScatsum", "Anode vs Cathode Sum; Anode E; Cathode E", 400,0 , 10000, 400, 0 , 16000);
|
||||||
|
|
||||||
|
sx3_contr.ConstructGeo();
|
||||||
|
pw_contr.ConstructGeo();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Bool_t Analyzer::Process(Long64_t entry){
|
Bool_t Analyzer::Process(Long64_t entry){
|
||||||
|
|
||||||
|
// if ( entry > 100 ) return kTRUE;
|
||||||
|
|
||||||
|
hitPos.Clear();
|
||||||
|
HitNonZero = false;
|
||||||
|
|
||||||
// if( entry > 1) return kTRUE;
|
// if( entry > 1) return kTRUE;
|
||||||
// printf("################### ev : %llu \n", entry);
|
// printf("################### ev : %llu \n", entry);
|
||||||
|
|
||||||
|
@ -69,7 +112,10 @@ Bool_t Analyzer::Process(Long64_t entry){
|
||||||
|
|
||||||
//########################################################### Raw data
|
//########################################################### Raw data
|
||||||
// //======================= SX3
|
// //======================= SX3
|
||||||
|
|
||||||
|
std::vector<std::pair<int, int>> ID; // first = id, 2nd = index
|
||||||
for( int i = 0; i < sx3.multi; i ++){
|
for( int i = 0; i < sx3.multi; i ++){
|
||||||
|
ID.push_back(std::pair<int, int>(sx3.id[i], i));
|
||||||
|
|
||||||
hsx3IndexVE->Fill( sx3.index[i], sx3.e[i] );
|
hsx3IndexVE->Fill( sx3.index[i], sx3.e[i] );
|
||||||
|
|
||||||
|
@ -79,49 +125,208 @@ Bool_t Analyzer::Process(Long64_t entry){
|
||||||
|
|
||||||
for( int j = 0; j < pc.multi; j++){
|
for( int j = 0; j < pc.multi; j++){
|
||||||
hsx3VpcIndex->Fill( sx3.index[i], pc.index[j] );
|
hsx3VpcIndex->Fill( sx3.index[i], pc.index[j] );
|
||||||
|
// if( sx3.ch[index] > 8 ){
|
||||||
|
// hsx3VpcE->Fill( sx3.e[i], pc.e[j] );
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if( ID.size() > 0 ){
|
||||||
|
std::sort(ID.begin(), ID.end(), [](const std::pair<int, int> & a, const std::pair<int, int> & b) {
|
||||||
|
return a.first < b.first;
|
||||||
|
} );
|
||||||
|
// printf("##############################\n");
|
||||||
|
// for( size_t i = 0; i < ID.size(); i++) printf("%zu | %d %d \n", i, ID[i].first, ID[i].second );
|
||||||
|
|
||||||
|
std::vector<std::pair<int, int>> sx3ID;
|
||||||
|
sx3ID.push_back(ID[0]);
|
||||||
|
bool found = false;
|
||||||
|
for( size_t i = 1; i < ID.size(); i++){
|
||||||
|
if( ID[i].first == sx3ID.back().first) {
|
||||||
|
sx3ID.push_back(ID[i]);
|
||||||
|
if( sx3ID.size() >= 3) {
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if( !found ){
|
||||||
|
sx3ID.clear();
|
||||||
|
sx3ID.push_back(ID[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// printf("---------- sx3ID Multi : %zu \n", sx3ID.size());
|
||||||
|
|
||||||
|
if( found ){
|
||||||
|
int sx3ChUp, sx3ChDn, sx3ChBk;
|
||||||
|
float sx3EUp, sx3EDn;
|
||||||
|
// printf("------ sx3 ID : %d, multi: %zu\n", sx3ID[0].first, sx3ID.size());
|
||||||
|
for( size_t i = 0; i < sx3ID.size(); i++ ){
|
||||||
|
int index = sx3ID[i].second;
|
||||||
|
// printf(" %zu | index %d | ch : %d, energy : %d \n", i, index, sx3.ch[index], sx3.e[index]);
|
||||||
|
|
||||||
|
|
||||||
|
if( sx3.ch[index] < 8 ){
|
||||||
|
if( sx3.ch[index] % 2 == 0) {
|
||||||
|
sx3ChDn = sx3.ch[index];
|
||||||
|
sx3EDn = sx3.e[index];
|
||||||
|
}else{
|
||||||
|
sx3ChUp = sx3.ch[index];
|
||||||
|
sx3EUp = sx3.e[index];
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
sx3ChBk = sx3.ch[index];
|
||||||
|
}
|
||||||
|
for( int j = 0; j < pc.multi; j++){
|
||||||
|
// hsx3VpcIndex->Fill( sx3.index[i], pc.index[j] );
|
||||||
|
if( sx3.ch[index] > 8 ){
|
||||||
|
hsx3VpcE->Fill( sx3.e[i], pc.e[j] );
|
||||||
|
// hpcIndexVE->Fill( pc.index[i], pc.e[i] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sx3_contr.CalSX3Pos(sx3ID[0].first, sx3ChUp, sx3ChDn, sx3ChBk, sx3EUp, sx3EDn);
|
||||||
|
hitPos = sx3_contr.GetHitPos();
|
||||||
|
HitNonZero = true;
|
||||||
|
// hitPos.Print();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// //======================= QQQ
|
// //======================= QQQ
|
||||||
for( int i = 0; i < qqq.multi; i ++){
|
for( int i = 0; i < qqq.multi; i ++){
|
||||||
hqqqIndexVE->Fill( qqq.index[i], qqq.e[i] );
|
// for( int j = 0; j < pc.multi; j++){
|
||||||
|
// if(pc.index[j]==4){
|
||||||
|
hqqqIndexVE->Fill( qqq.index[i], qqq.e[i] );
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
for( int j = 0; j < qqq.multi; j++){
|
||||||
|
if ( j == i ) continue;
|
||||||
|
hqqqCoin->Fill( qqq.index[i], qqq.index[j]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
for( int j = i + 1; j < qqq.multi; j++){
|
for( int j = i + 1; j < qqq.multi; j++){
|
||||||
hqqqCoin->Fill( qqq.index[i], qqq.index[j]);
|
for( int k = 0; k < pc.multi; k++){
|
||||||
|
if(pc.index[k]<24 && pc.e[k]>50 ){
|
||||||
|
hqqqVpcE->Fill( qqq.e[i], pc.e[k] );
|
||||||
|
// hpcIndexVE->Fill( pc.index[i], pc.e[i] );
|
||||||
|
hqqqVpcIndex->Fill( qqq.index[i], pc.index[j] );
|
||||||
|
|
||||||
if( qqq.used[i] == true ) continue;
|
}
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
// if( qqq.used[i] == true ) continue;
|
||||||
|
|
||||||
if( qqq.id[i] == qqq.id[j] && (16 - qqq.ch[i]) * (16 - qqq.ch[j]) < 0 ){ // must be same detector and wedge and ring
|
//if( qqq.id[i] == qqq.id[j] && (16 - qqq.ch[i]) * (16 - qqq.ch[j]) < 0 ){ // must be same detector and wedge and ring
|
||||||
|
if( qqq.id[i] == qqq.id[j] ){ // must be same detector
|
||||||
|
|
||||||
int chWedge = qqq.ch[i];
|
int chWedge = -1;
|
||||||
int chRing = qqq.ch[j] - 16;
|
int chRing = -1;
|
||||||
if( qqq.ch[i] >= 16 ) {
|
if( qqq.ch[i] < qqq.ch[j]){
|
||||||
chWedge = qqq.ch[j];
|
chRing = qqq.ch[j] - 16;
|
||||||
chRing = qqq.ch[i] - 16;
|
chWedge = qqq.ch[i];
|
||||||
|
}else{
|
||||||
|
chRing = qqq.ch[i];
|
||||||
|
chWedge = qqq.ch[j] - 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
//printf(" ID : %d , chWedge : %d, chRing : %d \n", qqq.id[i], chWedge, chRing);
|
// printf(" ID : %d , chWedge : %d, chRing : %d \n", qqq.id[i], chWedge, chRing);
|
||||||
|
|
||||||
double theta = -TMath::Pi() + 2*TMath::Pi()/16/4.*(qqq.id[i]*16 + chWedge +0.5);
|
double theta = -TMath::Pi()/2 + 2*TMath::Pi()/16/4.*(qqq.id[i]*16 + chWedge +0.5);
|
||||||
double rho = 10.+40./16.*(chRing+0.5);
|
double rho = 10.+40./16.*(chRing+0.5);
|
||||||
|
// if(qqq.e[i]>50){
|
||||||
hqqqPolar->Fill( theta, rho);
|
hqqqPolar->Fill( theta, rho);
|
||||||
|
// }
|
||||||
|
// qqq.used[i] = true;
|
||||||
|
// qqq.used[j] = true;
|
||||||
|
|
||||||
qqq.used[i] = true;
|
if( !HitNonZero ){
|
||||||
qqq.used[j] = true;
|
double x = rho * TMath::Cos(theta);
|
||||||
|
double y = rho * TMath::Sin(theta);
|
||||||
|
hitPos.SetXYZ(x, y, 23 + 75 + 30);
|
||||||
|
HitNonZero = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
// //======================= PC
|
// //======================= PC
|
||||||
|
|
||||||
|
ID.clear();
|
||||||
|
int counter=0;
|
||||||
|
std::vector<std::pair<int, double>> E;
|
||||||
|
E.clear();
|
||||||
for( int i = 0; i < pc.multi; i ++){
|
for( int i = 0; i < pc.multi; i ++){
|
||||||
|
|
||||||
|
if( pc.e[i] > 100 ) ID.push_back(std::pair<int, int>(pc.id[i], i));
|
||||||
|
if( pc.e[i] > 100 ) E.push_back(std::pair<int, double>(pc.index[i], pc.e[i]));
|
||||||
|
|
||||||
hpcIndexVE->Fill( pc.index[i], pc.e[i] );
|
hpcIndexVE->Fill( pc.index[i], pc.e[i] );
|
||||||
|
|
||||||
for( int j = i+1; j < pc.multi; j++){
|
for( int j = i+1; j < pc.multi; j++){
|
||||||
hpcCoin->Fill( pc.index[i], pc.index[j]);
|
hpcCoin->Fill( pc.index[i], pc.index[j]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// for( size_t i = 0; i < E.size(); i++) printf("%zu | %d %d \n", i, E[i].first, E[i].second );
|
||||||
|
|
||||||
|
if( E.size()>=3 ){
|
||||||
|
|
||||||
|
int aID = 0;
|
||||||
|
int cID = 0;
|
||||||
|
|
||||||
|
float aE = 0;
|
||||||
|
float cE = 0;
|
||||||
|
bool multi_an =false;
|
||||||
|
// if( ID[0].first < 1 ) {
|
||||||
|
// aID = pc.ch[ID[0].second];
|
||||||
|
// cID = pc.ch[ID[1].second];
|
||||||
|
// }else{
|
||||||
|
// cID = pc.ch[ID[0].second];
|
||||||
|
// aID = pc.ch[ID[1].second];
|
||||||
|
// }
|
||||||
|
// printf("anode= %d, cathode = %d\n", aID, cID);
|
||||||
|
|
||||||
|
// for( int k = 0; k < qqq.multi; k++){
|
||||||
|
// if(qqq.index[k]==75 && pc.index[k]==2 && pc.e[k]>100){
|
||||||
|
for(int l=0;l<E.size();l++){
|
||||||
|
if(E[l].first<24 && E[l].first!=20 && E[l].first!=12){
|
||||||
|
if(!multi_an){
|
||||||
|
aE = E[l].second;
|
||||||
|
}
|
||||||
|
multi_an=true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cE = E[l].second + cE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
hanVScatsum->Fill(aE,cE);
|
||||||
|
|
||||||
|
if( ID[0].first < 1 ) {
|
||||||
|
aID = pc.ch[ID[0].second];
|
||||||
|
cID = pc.ch[ID[1].second];
|
||||||
|
}else{
|
||||||
|
cID = pc.ch[ID[0].second];
|
||||||
|
aID = pc.ch[ID[1].second];
|
||||||
|
}
|
||||||
|
|
||||||
|
if( HitNonZero){
|
||||||
|
pw_contr.CalTrack( hitPos, aID, cID);
|
||||||
|
hZProj->Fill(pw_contr.GetZ0());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//########################################################### Track constrcution
|
//########################################################### Track constrcution
|
||||||
|
|
||||||
|
@ -135,7 +340,7 @@ Bool_t Analyzer::Process(Long64_t entry){
|
||||||
void Analyzer::Terminate(){
|
void Analyzer::Terminate(){
|
||||||
|
|
||||||
gStyle->SetOptStat("neiou");
|
gStyle->SetOptStat("neiou");
|
||||||
TCanvas * canvas = new TCanvas("cANASEN", "ANASEN", 1000, 1000);
|
TCanvas * canvas = new TCanvas("cANASEN", "ANASEN", 2000, 2000);
|
||||||
canvas->Divide(3,3);
|
canvas->Divide(3,3);
|
||||||
|
|
||||||
//hsx3VpcIndex->Draw("colz");
|
//hsx3VpcIndex->Draw("colz");
|
||||||
|
@ -163,6 +368,8 @@ void Analyzer::Terminate(){
|
||||||
//=============================================== pad-5
|
//=============================================== pad-5
|
||||||
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
|
||||||
|
canvas->cd(padID)->SetLogz(true);
|
||||||
|
|
||||||
hqqqCoin->Draw("colz");
|
hqqqCoin->Draw("colz");
|
||||||
|
|
||||||
//=============================================== pad-6
|
//=============================================== pad-6
|
||||||
|
@ -173,7 +380,23 @@ void Analyzer::Terminate(){
|
||||||
//=============================================== pad-7
|
//=============================================== pad-7
|
||||||
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
|
||||||
hsx3VpcIndex ->Draw("colz");
|
// hsx3VpcIndex ->Draw("colz");
|
||||||
|
hsx3VpcE->Draw("colz") ;
|
||||||
|
|
||||||
|
//=============================================== pad-8
|
||||||
|
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
|
||||||
|
// hqqqVpcIndex ->Draw("colz");
|
||||||
|
|
||||||
|
hqqqVpcE ->Draw("colz");
|
||||||
|
//=============================================== pad-9
|
||||||
|
padID ++;
|
||||||
|
|
||||||
|
// canvas->cd(padID)->DrawFrame(-50, -50, 50, 50);
|
||||||
|
// hqqqPolar->Draw("same colz pol");
|
||||||
|
|
||||||
|
canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
// hZProj->Draw();
|
||||||
|
hanVScatsum->Draw("colz");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
246
Armory/ClassPC1An.h
Normal file
246
Armory/ClassPC1An.h
Normal file
|
@ -0,0 +1,246 @@
|
||||||
|
#ifndef ClassPC_h
|
||||||
|
#define ClassPC_h
|
||||||
|
|
||||||
|
#include <cstdio>
|
||||||
|
#include <TMath.h>
|
||||||
|
#include <TVector3.h>
|
||||||
|
#include <TRandom.h>
|
||||||
|
|
||||||
|
struct PCHit_1An{
|
||||||
|
std::pair<short, short> nearestWire; // anode, cathode
|
||||||
|
std::pair<double, double> nearestDist; // anode, cathode
|
||||||
|
|
||||||
|
short nextNearestWire; // cathode
|
||||||
|
double nextNearestDist; // cathode
|
||||||
|
|
||||||
|
void Clear(){
|
||||||
|
nearestWire.first = -1;
|
||||||
|
nearestWire.second = -1;
|
||||||
|
nearestDist.first = 999999999;
|
||||||
|
nearestDist.second = 999999999;
|
||||||
|
nextNearestWire= -1;
|
||||||
|
nextNearestDist = 999999999;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//!########################################################
|
||||||
|
class PC{ // proportional wire
|
||||||
|
public:
|
||||||
|
PC(){ ClearHitInfo();};
|
||||||
|
~PC(){};
|
||||||
|
|
||||||
|
PCHit_1An GetHitInfo() const {return hitInfo;}
|
||||||
|
std::pair<short, short> GetNearestID() const {return hitInfo.nearestWire;}
|
||||||
|
std::pair<double, double> GetNearestDistance() const {return hitInfo.nearestDist;}
|
||||||
|
short Get2ndNearestID() const {return hitInfo.nextNearestWire;}
|
||||||
|
double Get2ndNearestDistance() const {return hitInfo.nextNearestDist;}
|
||||||
|
|
||||||
|
TVector3 GetTrackPos() const {return trackPos;}
|
||||||
|
TVector3 GetTrackVec() const {return trackVec;}
|
||||||
|
double GetTrackTheta() const {return trackVec.Theta();}
|
||||||
|
double GetTrackPhi() const {return trackVec.Phi();}
|
||||||
|
double GetZ0();
|
||||||
|
|
||||||
|
int GetNumWire() const {return nWire;}
|
||||||
|
double GetDeltaAngle() const {return dAngle;}
|
||||||
|
double GetAnodeLength() const {return anodeLength;}
|
||||||
|
double GetCathodeLength() const {return cathodeLength;}
|
||||||
|
TVector3 GetAnodeDn(short id) const {return An[id].first;}
|
||||||
|
TVector3 GetAnodeUp(short id) const {return An[id].second;}
|
||||||
|
TVector3 GetCathodeDn(short id) const {return Ca[id].first;}
|
||||||
|
TVector3 GetCathodeUp(short id) const {return Ca[id].second;}
|
||||||
|
|
||||||
|
TVector3 GetAnodneMid(short id) const {return (An[id].first + An[id].second) * 0.5; }
|
||||||
|
double GetAnodeTheta(short id) const {return (An[id].first - An[id].second).Theta();}
|
||||||
|
double GetAnodePhi(short id) const {return (An[id].first - An[id].second).Phi();}
|
||||||
|
|
||||||
|
TVector3 GetCathodneMid(short id) const {return (Ca[id].first + Ca[id].second) * 0.5; }
|
||||||
|
double GetCathodeTheta(short id) const {return (Ca[id].first - Ca[id].second).Theta();}
|
||||||
|
double GetCathodePhi(short id) const {return (Ca[id].first - Ca[id].second).Phi();}
|
||||||
|
|
||||||
|
void ClearHitInfo();
|
||||||
|
void ConstructGeo();
|
||||||
|
void FindWireID(TVector3 pos, TVector3 direction, bool verbose = false);
|
||||||
|
void CalTrack3(TVector3 sx3Pos, PCHit_1An hitInfo, double sigmaA = 0, double sigmaC = 0, bool verbose = false);
|
||||||
|
|
||||||
|
void Print(){
|
||||||
|
printf(" The nearest | Anode: %2d(%5.2f) Cathode: %2d(%5.2f)\n", hitInfo.nearestWire.first,
|
||||||
|
hitInfo.nearestDist.first,
|
||||||
|
hitInfo.nearestWire.second,
|
||||||
|
hitInfo.nearestDist.second);
|
||||||
|
|
||||||
|
printf(" The 2nd nearest Cathode: %2d(%5.2f)\n", hitInfo.nextNearestWire,
|
||||||
|
hitInfo.nextNearestDist);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
// PCHitInfo hitInfo;
|
||||||
|
PCHit_1An hitInfo;
|
||||||
|
|
||||||
|
TVector3 trackPos;
|
||||||
|
TVector3 trackVec;
|
||||||
|
|
||||||
|
const int nWire = 24;
|
||||||
|
const int wireShift = 3;
|
||||||
|
const float zLen = 380; //mm
|
||||||
|
const float radiusA = 37;
|
||||||
|
const float radiusC = 43;
|
||||||
|
|
||||||
|
double dAngle;
|
||||||
|
double anodeLength;
|
||||||
|
double cathodeLength;
|
||||||
|
|
||||||
|
std::vector<std::pair<TVector3,TVector3>> An; // the anode wire position vector in space
|
||||||
|
std::vector<std::pair<TVector3,TVector3>> Ca; // the cathode wire position vector in space
|
||||||
|
|
||||||
|
double Distance(TVector3 a1, TVector3 a2, TVector3 b1, TVector3 b2){
|
||||||
|
TVector3 na = a1 - a2;
|
||||||
|
TVector3 nb = b1 - b2;
|
||||||
|
TVector3 nd = (na.Cross(nb)).Unit();
|
||||||
|
return TMath::Abs(nd.Dot(a1-b2));
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
inline void PC::ClearHitInfo(){
|
||||||
|
hitInfo.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void PC::ConstructGeo(){
|
||||||
|
|
||||||
|
An.clear();
|
||||||
|
Ca.clear();
|
||||||
|
|
||||||
|
std::pair<TVector3, TVector3> p1; // anode
|
||||||
|
std::pair<TVector3, TVector3> q1; // cathode
|
||||||
|
|
||||||
|
//anode and cathode start at pos-Y axis and count in right-Hand
|
||||||
|
//anode wire shift is right-hand.
|
||||||
|
//cathode wire shift is left-hand.
|
||||||
|
|
||||||
|
for(int i = 0; i < nWire; i++ ){
|
||||||
|
// Anode rotate right-hand
|
||||||
|
p1.first.SetXYZ( radiusA * TMath::Cos( TMath::TwoPi() / nWire * (i) + TMath::PiOver2()),
|
||||||
|
radiusA * TMath::Sin( TMath::TwoPi() / nWire * (i) + TMath::PiOver2()),
|
||||||
|
zLen/2);
|
||||||
|
p1.second.SetXYZ( radiusA * TMath::Cos( TMath::TwoPi() / nWire * (i + wireShift) + TMath::PiOver2()),
|
||||||
|
radiusA * TMath::Sin( TMath::TwoPi() / nWire * (i + wireShift) + TMath::PiOver2()),
|
||||||
|
-zLen/2);
|
||||||
|
An.push_back(p1);
|
||||||
|
|
||||||
|
// Cathod rotate left-hand
|
||||||
|
q1.first.SetXYZ( radiusC * TMath::Cos( TMath::TwoPi() / nWire * (i) + TMath::PiOver2()),
|
||||||
|
radiusC * TMath::Sin( TMath::TwoPi() / nWire * (i) + TMath::PiOver2()),
|
||||||
|
zLen/2);
|
||||||
|
q1.second.SetXYZ( radiusC * TMath::Cos( TMath::TwoPi() / nWire * (i - wireShift) + TMath::PiOver2()),
|
||||||
|
radiusC * TMath::Sin( TMath::TwoPi() / nWire * (i - wireShift) + TMath::PiOver2()),
|
||||||
|
-zLen/2);
|
||||||
|
Ca.push_back(q1);
|
||||||
|
}
|
||||||
|
|
||||||
|
dAngle = wireShift * TMath::TwoPi() / nWire;
|
||||||
|
anodeLength = TMath::Sqrt( zLen*zLen + TMath::Power(2* radiusA * TMath::Sin(dAngle/2),2) );
|
||||||
|
cathodeLength = TMath::Sqrt( zLen*zLen + TMath::Power(2* radiusC * TMath::Sin(dAngle/2),2) );
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void PC::FindWireID(TVector3 pos, TVector3 direction, bool verbose ){
|
||||||
|
|
||||||
|
hitInfo.Clear();
|
||||||
|
double phi = direction.Phi();
|
||||||
|
|
||||||
|
for( int i = 0; i < nWire; i++){
|
||||||
|
|
||||||
|
double disA = 99999999;
|
||||||
|
double phiS = An[i].first.Phi() - TMath::PiOver4();
|
||||||
|
double phiL = An[i].second.Phi() + TMath::PiOver4();
|
||||||
|
// printf("A%2d: %f %f | %f\n", i, phiS * TMath::RadToDeg(), phiL * TMath::RadToDeg(), phi * TMath::RadToDeg());
|
||||||
|
if( phi > 0 && phiS > phiL ) phiL = phiL + TMath::TwoPi();
|
||||||
|
if( phi < 0 && phiS > phiL ) phiS = phiS - TMath::TwoPi();
|
||||||
|
|
||||||
|
if( phiS < phi && phi < phiL) {
|
||||||
|
disA = Distance( pos, pos + direction, An[i].first, An[i].second);
|
||||||
|
if( disA < hitInfo.nearestDist.first ){
|
||||||
|
hitInfo.nearestDist.first = disA;
|
||||||
|
hitInfo.nearestWire.first = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
double disC = 99999999;
|
||||||
|
phiS = Ca[i].second.Phi()- TMath::PiOver4();
|
||||||
|
phiL = Ca[i].first.Phi() + TMath::PiOver4();
|
||||||
|
// printf("C%2d: %f %f\n", i, phiS * TMath::RadToDeg(), phiL * TMath::RadToDeg());
|
||||||
|
if( phi > 0 && phiS > phiL ) phiL = phiL + TMath::TwoPi();
|
||||||
|
if( phi < 0 && phiS > phiL ) phiS = phiS - TMath::TwoPi();
|
||||||
|
|
||||||
|
if(phiS < phi && phi < phiL) {
|
||||||
|
disC = Distance( pos, pos + direction, Ca[i].first, Ca[i].second);
|
||||||
|
if( disC < hitInfo.nearestDist.second ){
|
||||||
|
hitInfo.nearestDist.second = disC;
|
||||||
|
hitInfo.nearestWire.second = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(verbose) printf(" %2d | %8.2f, %8.2f\n", i, disA, disC);
|
||||||
|
}
|
||||||
|
|
||||||
|
short cathode1 = hitInfo.nearestWire.second;
|
||||||
|
short ccc1 = cathode1 - 1; if( ccc1 < 0 ) ccc1 += nWire;
|
||||||
|
short ccc2 = (cathode1 + 1) % nWire;
|
||||||
|
|
||||||
|
double haha1 = Distance( pos, pos + direction, Ca[ccc1].first, Ca[ccc1].second);
|
||||||
|
double haha2 = Distance( pos, pos + direction, Ca[ccc2].first, Ca[ccc2].second);
|
||||||
|
if( haha1 < haha2){
|
||||||
|
hitInfo.nextNearestWire = ccc1;
|
||||||
|
hitInfo.nextNearestDist = haha1;
|
||||||
|
}else{
|
||||||
|
hitInfo.nextNearestWire = ccc2;
|
||||||
|
hitInfo.nextNearestDist= haha2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( verbose ) Print();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline void PC::CalTrack3(TVector3 sx3Pos, PCHit_1An hitInfo, double sigmaA, double sigmaC, bool verbose){
|
||||||
|
|
||||||
|
trackPos = sx3Pos;
|
||||||
|
|
||||||
|
double p1 = TMath::Abs(hitInfo.nearestDist.first + gRandom->Gaus(0, sigmaA));
|
||||||
|
short anodeID1 = hitInfo.nearestWire.first;
|
||||||
|
|
||||||
|
double q1 = TMath::Abs(hitInfo.nearestDist.second + gRandom->Gaus(0, sigmaC));
|
||||||
|
double q2 = TMath::Abs(hitInfo.nextNearestDist+ gRandom->Gaus(0, sigmaC));
|
||||||
|
double fracC = q1 / (q1 + q2);
|
||||||
|
short cathodeID1 = hitInfo.nearestWire.second;
|
||||||
|
short cathodeID2 = hitInfo.nextNearestWire;
|
||||||
|
TVector3 shiftC1 = (Ca[cathodeID2].first - Ca[cathodeID1].first) * fracC;
|
||||||
|
TVector3 shiftC2 = (Ca[cathodeID2].second - Ca[cathodeID1].second) * fracC;
|
||||||
|
|
||||||
|
TVector3 a1 = An[anodeID1].first;
|
||||||
|
|
||||||
|
TVector3 c1 = Ca[cathodeID1].first + shiftC1;
|
||||||
|
TVector3 c2 = Ca[cathodeID1].second + shiftC2;
|
||||||
|
|
||||||
|
TVector3 n1 = (sx3Pos - a1).Unit();
|
||||||
|
TVector3 n2 = (c1 - c2).Cross((sx3Pos - c2)).Unit();
|
||||||
|
|
||||||
|
// if the handiness of anode and cathode revered, it should be n2 cross n1
|
||||||
|
trackVec = (n2.Cross(n1)).Unit();
|
||||||
|
|
||||||
|
if( verbose ) printf("Theta, Phi = %f, %f \n", trackVec.Theta() *TMath::RadToDeg(), trackVec.Phi()*TMath::RadToDeg());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
inline double PC::GetZ0(){
|
||||||
|
|
||||||
|
double x = trackPos.X();
|
||||||
|
double y = trackPos.Y();
|
||||||
|
double rho = TMath::Sqrt(x*x + y*y);
|
||||||
|
double theta = trackVec.Theta();
|
||||||
|
|
||||||
|
return trackPos.Z() - rho / TMath::Tan(theta);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -4,6 +4,7 @@
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <TMath.h>
|
#include <TMath.h>
|
||||||
#include <TVector3.h>
|
#include <TVector3.h>
|
||||||
|
#include <TRandom.h>
|
||||||
|
|
||||||
class SX3{
|
class SX3{
|
||||||
public:
|
public:
|
||||||
|
@ -94,7 +95,7 @@ private:
|
||||||
|
|
||||||
if( verbose ) printf(" ----h, k : %f, %f\n", h, k);
|
if( verbose ) printf(" ----h, k : %f, %f\n", h, k);
|
||||||
|
|
||||||
return std::pair(h,k);
|
return std::pair<double,double>(h,k);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -125,7 +126,7 @@ inline void SX3::ConstructGeo(){
|
||||||
|
|
||||||
sa.RotateZ( rot );
|
sa.RotateZ( rot );
|
||||||
sb.RotateZ( rot );
|
sb.RotateZ( rot );
|
||||||
SDn.push_back(std::pair(sa,sb));
|
SDn.push_back(std::pair<TVector3,TVector3>(sa,sb));
|
||||||
|
|
||||||
sc.SetXYZ( radius, -width/2, gap/2 );
|
sc.SetXYZ( radius, -width/2, gap/2 );
|
||||||
sc.RotateZ( rot );
|
sc.RotateZ( rot );
|
||||||
|
@ -138,7 +139,7 @@ inline void SX3::ConstructGeo(){
|
||||||
|
|
||||||
sa.RotateZ( rot );
|
sa.RotateZ( rot );
|
||||||
sb.RotateZ( rot );
|
sb.RotateZ( rot );
|
||||||
SUp.push_back(std::pair(sa,sb));
|
SUp.push_back(std::pair<TVector3,TVector3>(sa,sb));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,6 +226,7 @@ inline void SX3::CalSX3Pos(unsigned short ID, unsigned short chUp, unsigned shor
|
||||||
|
|
||||||
hitPos.Clear();
|
hitPos.Clear();
|
||||||
|
|
||||||
|
|
||||||
if( (chUp - chDown) != 1 || (chDown % 2) != 0) return ;
|
if( (chUp - chDown) != 1 || (chDown % 2) != 0) return ;
|
||||||
|
|
||||||
int reducedID = ID % numDet;
|
int reducedID = ID % numDet;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include <TMath.h>
|
#include <TMath.h>
|
||||||
#include <TBenchmark.h>
|
#include <TBenchmark.h>
|
||||||
|
|
||||||
#include "../mapping_alpha.h"
|
#include "../mapping.h"
|
||||||
#include "ClassDet.h"
|
#include "ClassDet.h"
|
||||||
|
|
||||||
//===============================
|
//===============================
|
||||||
|
@ -91,6 +91,7 @@ int main(int argc, char **argv){
|
||||||
newTree->Branch("qqqCh", &qqq.ch, "qqqCh[qqqMulti]/s");
|
newTree->Branch("qqqCh", &qqq.ch, "qqqCh[qqqMulti]/s");
|
||||||
newTree->Branch("qqqE", &qqq.e, "qqqEnergy[qqqMulti]/s");
|
newTree->Branch("qqqE", &qqq.e, "qqqEnergy[qqqMulti]/s");
|
||||||
newTree->Branch("qqqT", &qqq.t, "qqqTime[qqqMulti]/l");
|
newTree->Branch("qqqT", &qqq.t, "qqqTime[qqqMulti]/l");
|
||||||
|
newTree->Branch("qqqSN", &qqq.sn, "qqqSN[qqqMulti]/s");
|
||||||
|
|
||||||
newTree->Branch("pcMulti", &pc.multi, "pcMulti/s");
|
newTree->Branch("pcMulti", &pc.multi, "pcMulti/s");
|
||||||
newTree->Branch("pcID", &pc.id, "pcID[pcMulti]/s");
|
newTree->Branch("pcID", &pc.id, "pcID[pcMulti]/s");
|
||||||
|
@ -116,7 +117,7 @@ int main(int argc, char **argv){
|
||||||
|
|
||||||
for( unsigned int i = 0; i < multi; i++){
|
for( unsigned int i = 0; i < multi; i++){
|
||||||
|
|
||||||
//printf("%10u/%10u| %5d, %2u, %6u, %14llu\n", i, multi, sn[i], ch[i], e[i], e_t[i] );
|
// printf("%10u/%10u| %5d, %2u, %6u, %14llu\n", i, multi, sn[i], ch[i], e[i], e_t[i] );
|
||||||
|
|
||||||
//globalCh = digi-ID * nCh(digi-iD) + ch
|
//globalCh = digi-ID * nCh(digi-iD) + ch
|
||||||
int globalCh = -1;
|
int globalCh = -1;
|
||||||
|
@ -147,6 +148,7 @@ int main(int argc, char **argv){
|
||||||
qqq.ch[qqq.multi] = (ID - 10000) % 100;
|
qqq.ch[qqq.multi] = (ID - 10000) % 100;
|
||||||
qqq.e[qqq.multi] = e[i];
|
qqq.e[qqq.multi] = e[i];
|
||||||
qqq.t[qqq.multi] = e_t[i];
|
qqq.t[qqq.multi] = e_t[i];
|
||||||
|
qqq.sn[qqq.multi] = sn[i];
|
||||||
qqq.multi ++;
|
qqq.multi ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,15 +9,19 @@ fi
|
||||||
runID=$1
|
runID=$1
|
||||||
timeWindow=$2
|
timeWindow=$2
|
||||||
|
|
||||||
rawFolder=/media/nvmeData/ANASEN_test/analysis/data
|
rawFolder=/home/tandem/Desktop/analysis/data
|
||||||
rootFolder=/media/nvmeData/ANASEN_test/root_data
|
rootFolder=/home/tandem/Desktop/analysis/data/root_data
|
||||||
|
|
||||||
fileList=`\ls -1 ${rawFolder}/*${runID}*.fsu`
|
rsync -a splitpole@128.186.111.223:/media/nvmeData/ANASEN27Alap/*.fsu /home/tandem/Desktop/analysis/data
|
||||||
|
|
||||||
./EventBuilder ${timeWindow} 0 0 500000 ${fileList}
|
fileList=`\ls -1 ${rawFolder}/Run_${runID}_*.fsu`
|
||||||
|
|
||||||
|
./EventBuilder ${timeWindow} 0 0 10000000 ${fileList}
|
||||||
|
|
||||||
outFile=${rawFolder}/*${runID}*${timeWindow}.root
|
outFile=${rawFolder}/*${runID}*${timeWindow}.root
|
||||||
|
|
||||||
mv -vf ${outFile} ${rootFolder}/.
|
mv -vf ${outFile} ${rootFolder}/.
|
||||||
|
|
||||||
./Mapper ${rootFolder}/*${runID}*${timeWindow}.root
|
./Mapper ${rootFolder}/*${runID}*${timeWindow}.root
|
||||||
|
|
||||||
|
root "processRun.C(\"${rootFolder}/Run_${runID}_mapped.root\")"
|
||||||
|
|
303
TrackRecon.C
Normal file
303
TrackRecon.C
Normal file
|
@ -0,0 +1,303 @@
|
||||||
|
#define Analyzer_cxx
|
||||||
|
|
||||||
|
#include "Analyzer.h"
|
||||||
|
#include <TH2.h>
|
||||||
|
#include <TStyle.h>
|
||||||
|
#include <TCanvas.h>
|
||||||
|
#include <TMath.h>
|
||||||
|
|
||||||
|
#include <utility>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
#include "Armory/ClassSX3.h"
|
||||||
|
#include "Armory/ClassPC1An.h"
|
||||||
|
|
||||||
|
#include "TVector3.h"
|
||||||
|
|
||||||
|
TH2F * hsx3IndexVE;
|
||||||
|
TH2F * hqqqIndexVE;
|
||||||
|
TH2F * hpcIndexVE;
|
||||||
|
|
||||||
|
TH2F * hsx3Coin;
|
||||||
|
TH2F * hqqqCoin;
|
||||||
|
TH2F * hpcCoin;
|
||||||
|
|
||||||
|
TH2F * hqqqPolar;
|
||||||
|
TH2F * hsx3VpcIndex;
|
||||||
|
TH2F * hqqqVpcIndex;
|
||||||
|
TH2F * hqqqVpcE;
|
||||||
|
TH2F * hsx3VpcE;
|
||||||
|
TH2F * hanVScatsum;
|
||||||
|
int padID = 0;
|
||||||
|
|
||||||
|
SX3 sx3_contr;
|
||||||
|
PC pw_contr;
|
||||||
|
TVector3 hitPos;
|
||||||
|
bool HitNonZero;
|
||||||
|
|
||||||
|
TH1F * hZProj;
|
||||||
|
|
||||||
|
void Analyzer::Begin(TTree * /*tree*/){
|
||||||
|
TString option = GetOption();
|
||||||
|
|
||||||
|
hZProj = new TH1F("hZProj", "Z Projection", 200, -600, 600);
|
||||||
|
|
||||||
|
sx3_contr.ConstructGeo();
|
||||||
|
pw_contr.ConstructGeo();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Bool_t Analyzer::Process(Long64_t entry){
|
||||||
|
|
||||||
|
// if ( entry > 100 ) return kTRUE;
|
||||||
|
|
||||||
|
hitPos.Clear();
|
||||||
|
HitNonZero = false;
|
||||||
|
|
||||||
|
// if( entry > 1) return kTRUE;
|
||||||
|
// printf("################### ev : %llu \n", entry);
|
||||||
|
|
||||||
|
b_sx3Multi->GetEntry(entry);
|
||||||
|
b_sx3ID->GetEntry(entry);
|
||||||
|
b_sx3Ch->GetEntry(entry);
|
||||||
|
b_sx3E->GetEntry(entry);
|
||||||
|
b_sx3T->GetEntry(entry);
|
||||||
|
b_qqqMulti->GetEntry(entry);
|
||||||
|
b_qqqID->GetEntry(entry);
|
||||||
|
b_qqqCh->GetEntry(entry);
|
||||||
|
b_qqqE->GetEntry(entry);
|
||||||
|
b_qqqT->GetEntry(entry);
|
||||||
|
b_pcMulti->GetEntry(entry);
|
||||||
|
b_pcID->GetEntry(entry);
|
||||||
|
b_pcCh->GetEntry(entry);
|
||||||
|
b_pcE->GetEntry(entry);
|
||||||
|
b_pcT->GetEntry(entry);
|
||||||
|
|
||||||
|
sx3.CalIndex();
|
||||||
|
qqq.CalIndex();
|
||||||
|
pc.CalIndex();
|
||||||
|
|
||||||
|
// sx3.Print();
|
||||||
|
|
||||||
|
//########################################################### Raw data
|
||||||
|
// //======================= SX3
|
||||||
|
|
||||||
|
std::vector<std::pair<int, int>> ID; // first = id, 2nd = index
|
||||||
|
|
||||||
|
if( ID.size() > 0 ){
|
||||||
|
std::sort(ID.begin(), ID.end(), [](const std::pair<int, int> & a, const std::pair<int, int> & b) {
|
||||||
|
return a.first < b.first;
|
||||||
|
} );
|
||||||
|
// printf("##############################\n");
|
||||||
|
// for( size_t i = 0; i < ID.size(); i++) printf("%zu | %d %d \n", i, ID[i].first, ID[i].second );
|
||||||
|
|
||||||
|
std::vector<std::pair<int, int>> sx3ID;
|
||||||
|
sx3ID.push_back(ID[0]);
|
||||||
|
bool found = false;
|
||||||
|
for( size_t i = 1; i < ID.size(); i++){
|
||||||
|
if( ID[i].first == sx3ID.back().first) {
|
||||||
|
sx3ID.push_back(ID[i]);
|
||||||
|
if( sx3ID.size() >= 3) {
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if( !found ){
|
||||||
|
sx3ID.clear();
|
||||||
|
sx3ID.push_back(ID[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// printf("---------- sx3ID Multi : %zu \n", sx3ID.size());
|
||||||
|
|
||||||
|
if( found ){
|
||||||
|
int sx3ChUp, sx3ChDn, sx3ChBk;
|
||||||
|
float sx3EUp, sx3EDn;
|
||||||
|
// printf("------ sx3 ID : %d, multi: %zu\n", sx3ID[0].first, sx3ID.size());
|
||||||
|
for( size_t i = 0; i < sx3ID.size(); i++ ){
|
||||||
|
int index = sx3ID[i].second;
|
||||||
|
// printf(" %zu | index %d | ch : %d, energy : %d \n", i, index, sx3.ch[index], sx3.e[index]);
|
||||||
|
|
||||||
|
|
||||||
|
if( sx3.ch[index] < 8 ){
|
||||||
|
if( sx3.ch[index] % 2 == 0) {
|
||||||
|
sx3ChDn = sx3.ch[index];
|
||||||
|
sx3EDn = sx3.e[index];
|
||||||
|
}else{
|
||||||
|
sx3ChUp = sx3.ch[index];
|
||||||
|
sx3EUp = sx3.e[index];
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
sx3ChBk = sx3.ch[index];
|
||||||
|
}
|
||||||
|
for( int j = 0; j < pc.multi; j++){
|
||||||
|
// hsx3VpcIndex->Fill( sx3.index[i], pc.index[j] );
|
||||||
|
if( sx3.ch[index] > 8 ){
|
||||||
|
hsx3VpcE->Fill( sx3.e[i], pc.e[j] );
|
||||||
|
// hpcIndexVE->Fill( pc.index[i], pc.e[i] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sx3_contr.CalSX3Pos(sx3ID[0].first, sx3ChUp, sx3ChDn, sx3ChBk, sx3EUp, sx3EDn);
|
||||||
|
hitPos = sx3_contr.GetHitPos();
|
||||||
|
HitNonZero = true;
|
||||||
|
// hitPos.Print();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// //======================= QQQ
|
||||||
|
for( int i = 0; i < qqq.multi; i ++){
|
||||||
|
for( int j = i + 1; j < qqq.multi; j++){
|
||||||
|
if( qqq.id[i] == qqq.id[j] ){ // must be same detector
|
||||||
|
int chWedge = -1;
|
||||||
|
int chRing = -1;
|
||||||
|
if( qqq.ch[i] < qqq.ch[j]){
|
||||||
|
chRing = qqq.ch[j] - 16;
|
||||||
|
chWedge = qqq.ch[i];
|
||||||
|
}else{
|
||||||
|
chRing = qqq.ch[i];
|
||||||
|
chWedge = qqq.ch[j] - 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
// printf(" ID : %d , chWedge : %d, chRing : %d \n", qqq.id[i], chWedge, chRing);
|
||||||
|
|
||||||
|
double theta = -TMath::Pi()/2 + 2*TMath::Pi()/16/4.*(qqq.id[i]*16 + chWedge +0.5);
|
||||||
|
double rho = 10.+40./16.*(chRing+0.5);
|
||||||
|
// if(qqq.e[i]>50){
|
||||||
|
hqqqPolar->Fill( theta, rho);
|
||||||
|
// }
|
||||||
|
// qqq.used[i] = true;
|
||||||
|
// qqq.used[j] = true;
|
||||||
|
|
||||||
|
if( !HitNonZero ){
|
||||||
|
double x = rho * TMath::Cos(theta);
|
||||||
|
double y = rho * TMath::Sin(theta);
|
||||||
|
hitPos.SetXYZ(x, y, 23 + 75 + 30);
|
||||||
|
HitNonZero = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
// //======================= PC
|
||||||
|
PCHit_1An hitInfo;
|
||||||
|
|
||||||
|
ID.clear();
|
||||||
|
int counter=0;
|
||||||
|
std::vector<std::pair<int, double>> E;
|
||||||
|
E.clear();
|
||||||
|
|
||||||
|
if( E.size()==3 ){
|
||||||
|
float aE = 0;
|
||||||
|
float cE = 0;
|
||||||
|
bool multi_an =false;
|
||||||
|
for(int l=0;l<E.size();l++){
|
||||||
|
if(E[l].first<24 && E[l].first!=20 && E[l].first!=12){
|
||||||
|
if(!multi_an){
|
||||||
|
aE = E[l].second;
|
||||||
|
}
|
||||||
|
multi_an=true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cE = E[l].second + cE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// printf("anode= %d, cathode = %d\n", aID, cID);
|
||||||
|
// }
|
||||||
|
if( ID[0].first < 1 ) {
|
||||||
|
aID = pc.ch[ID[0].second];
|
||||||
|
cID = pc.ch[ID[1].second];
|
||||||
|
}else{
|
||||||
|
cID = pc.ch[ID[0].second];
|
||||||
|
aID = pc.ch[ID[1].second];
|
||||||
|
}
|
||||||
|
|
||||||
|
hanVScatsum->Fill(aE,cE);
|
||||||
|
|
||||||
|
if( HitNonZero){
|
||||||
|
pw_contr.CalTrack3( hitPos, hitinfo, cID);
|
||||||
|
hZProj->Fill(pw_contr.GetZ0());
|
||||||
|
}
|
||||||
|
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//########################################################### Track constrcution
|
||||||
|
|
||||||
|
|
||||||
|
//############################## DO THE KINEMATICS
|
||||||
|
|
||||||
|
|
||||||
|
return kTRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Analyzer::Terminate(){
|
||||||
|
|
||||||
|
gStyle->SetOptStat("neiou");
|
||||||
|
TCanvas * canvas = new TCanvas("cANASEN", "ANASEN", 2000, 2000);
|
||||||
|
canvas->Divide(3,3);
|
||||||
|
|
||||||
|
//hsx3VpcIndex->Draw("colz");
|
||||||
|
|
||||||
|
//=============================================== pad-1
|
||||||
|
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
|
||||||
|
hsx3IndexVE->Draw("colz");
|
||||||
|
|
||||||
|
//=============================================== pad-2
|
||||||
|
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
|
||||||
|
hqqqIndexVE->Draw("colz");
|
||||||
|
|
||||||
|
//=============================================== pad-3
|
||||||
|
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
|
||||||
|
hpcIndexVE->Draw("colz");
|
||||||
|
|
||||||
|
//=============================================== pad-4
|
||||||
|
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
|
||||||
|
hsx3Coin->Draw("colz");
|
||||||
|
|
||||||
|
//=============================================== pad-5
|
||||||
|
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
|
||||||
|
hqqqCoin->Draw("colz");
|
||||||
|
|
||||||
|
//=============================================== pad-6
|
||||||
|
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
|
||||||
|
hpcCoin->Draw("colz");
|
||||||
|
|
||||||
|
//=============================================== pad-7
|
||||||
|
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
|
||||||
|
hsx3VpcIndex ->Draw("colz");
|
||||||
|
// hsx3VpcE->Draw("colz") ;
|
||||||
|
|
||||||
|
//=============================================== pad-8
|
||||||
|
padID ++; canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
|
||||||
|
hqqqVpcIndex ->Draw("colz");
|
||||||
|
|
||||||
|
// hqqqVpcE ->Draw("colz");
|
||||||
|
//=============================================== pad-9
|
||||||
|
padID ++;
|
||||||
|
|
||||||
|
// canvas->cd(padID)->DrawFrame(-50, -50, 50, 50);
|
||||||
|
// hqqqPolar->Draw("same colz pol");
|
||||||
|
|
||||||
|
canvas->cd(padID); canvas->cd(padID)->SetGrid(1);
|
||||||
|
hZProj->Draw();
|
||||||
|
// hanVScatsum->Draw("colz");
|
||||||
|
|
||||||
|
}
|
32
mapping.h
32
mapping.h
|
@ -20,8 +20,9 @@ const std::map<int, unsigned short> board = {
|
||||||
{5, 15529},
|
{5, 15529},
|
||||||
{6, 15528},
|
{6, 15528},
|
||||||
{7, 334},
|
{7, 334},
|
||||||
{8, 409},
|
{8, 379},
|
||||||
{9, 405}
|
{9, 325},
|
||||||
|
{10, 405}
|
||||||
};
|
};
|
||||||
const int nBd = board.size();
|
const int nBd = board.size();
|
||||||
|
|
||||||
|
@ -39,6 +40,7 @@ const int nV1725 = 3;
|
||||||
|
|
||||||
// use the GenMapping() to get that
|
// use the GenMapping() to get that
|
||||||
const std::vector<int> mapping = {
|
const std::vector<int> mapping = {
|
||||||
|
|
||||||
//================== 17122
|
//================== 17122
|
||||||
806, 807, 804, 805, 803, 802, 801, 800, 1006, 1007, 1004, 1005, 1003, 1002, 1001, 1000,
|
806, 807, 804, 805, 803, 802, 801, 800, 1006, 1007, 1004, 1005, 1003, 1002, 1001, 1000,
|
||||||
606, 607, 604, 605, 603, 602, 601, 600, 1106, 1107, 1104, 1105, 1103, 1102, 1101, 1100,
|
606, 607, 604, 605, 603, 602, 601, 600, 1106, 1107, 1104, 1105, 1103, 1102, 1101, 1100,
|
||||||
|
@ -46,40 +48,42 @@ const std::vector<int> mapping = {
|
||||||
706, 707, 704, 705, 703, 702, 701, 700, 906, 907, 904, 905, 903, 902, 901, 900,
|
706, 707, 704, 705, 703, 702, 701, 700, 906, 907, 904, 905, 903, 902, 901, 900,
|
||||||
//================== 17123
|
//================== 17123
|
||||||
1406, 1407, 1404, 1405, 1403, 1402, 1401, 1400, 1606, 1607, 1604, 1605, 1603, 1602, 1601, 1600,
|
1406, 1407, 1404, 1405, 1403, 1402, 1401, 1400, 1606, 1607, 1604, 1605, 1603, 1602, 1601, 1600,
|
||||||
1306, 1307, 1304, 1305, 1303, 1302, 1301, 1300, 1706, 1707, 1704, 1705, 1703, 1702, 1701, 1700,
|
1306, 1307, 1304, 1305, 1303, 1302, 1301, 1300, 1506, 1507, 1504, 1505, 1503, 1502, 1501, 1500,
|
||||||
1311, 1310, 1309, 1308, 1711, 1710, 1709, 1708, 1611, 1610, 1609, 1608, 1411, 1410, 1409, 1408,
|
1311, 1310, 1309, 1308, 1711, 1710, 1709, 1708, 1611, 1610, 1609, 1608, 1411, 1410, 1409, 1408,
|
||||||
1206, 1207, 1204, 1205, 1203, 1202, 1201, 1200, 1506, 1507, 1504, 1505, 1503, 1502, 1501, 1500,
|
1206, 1207, 1204, 1205, 1203, 1202, 1201, 1200, 1706, 1707, 1704, 1705, 1703, 1702, 1701, 1700,
|
||||||
//================== 22320
|
//================== 22320
|
||||||
111, 110, 109, 108, 311, 310, 309, 308, 411, 410, 409, 408, 211, 210, 209, 208,
|
|
||||||
6, 7, 4, 5, 3, 2, 1, 0, 506, 507, 504, 505, 503, 502, 501, 500,
|
6, 7, 4, 5, 3, 2, 1, 0, 506, 507, 504, 505, 503, 502, 501, 500,
|
||||||
|
111, 110, 109, 108, 311, 310, 309, 308, 411, 410, 409, 408, 211, 210, 209, 208,
|
||||||
206, 207, 204, 205, 203, 202, 201, 200, 406, 407, 404, 405, 403, 402, 401, 400,
|
206, 207, 204, 205, 203, 202, 201, 200, 406, 407, 404, 405, 403, 402, 401, 400,
|
||||||
106, 107, 104, 105, 103, 102, 101, 100, 306, 307, 304, 305, 303, 302, 301, 300,
|
106, 107, 104, 105, 103, 102, 101, 100, 306, 307, 304, 305, 303, 302, 301, 300,
|
||||||
//================== 22130
|
//================== 22130
|
||||||
1911, 1910, 1909, 1908, 2111, 2110, 2109, 2108, 2211, 2210, 2209, 2208, 2011, 2010, 2009, 2008,
|
1911, 1910, 1909, 1908, 2111, 2110, 2109, 2108, 2211, 2210, 2209, 2208, 2011, 2010, 2009, 2008,
|
||||||
11, 10, 9, 8, 511, 510, 509, 508, 611, 610, 609, 608, 1111, 1110, 1109, 1108,
|
11, 10, 9, 8, 511, 510, 509, 508, 611, 610, 609, 608, 1111, 1110, 1109, 1108,
|
||||||
1806, 1807, 1804, 1805, 1803, 1802, 1801, 1800, 2206, 2207, 2204, 2205, 2203, 2202, 2201, 2200,
|
2006, 2007, 2004, 2005, 2003, 2002, 2001, 2000, 2206, 2207, 2204, 2205, 2203, 2202, 2201, 2200,
|
||||||
1906, 1907, 1904, 1905, 1903, 1902, 1901, 1900, 2106, 2107, 2104, 2105, 2103, 2102, 2101, 2100,
|
1906, 1907, 1904, 1905, 1903, 1902, 1901, 1900, 2106, 2107, 2104, 2105, 2103, 2102, 2101, 2100,
|
||||||
//================== 22129
|
//================== 22129
|
||||||
|
1806, 1807, 1804, 1805, 1803, 1802, 1801, 1800, 2306, 2307, 2304, 2305, 2303, 2302, 2301, 2300,
|
||||||
10016, 10017, 10018, 10019, 10020, 10021, 10022, 10023, 10024, 10025, 10026, 10027, 10028, 10029, 10030, 10031,
|
10016, 10017, 10018, 10019, 10020, 10021, 10022, 10023, 10024, 10025, 10026, 10027, 10028, 10029, 10030, 10031,
|
||||||
2006, 2007, 2004, 2005, 2003, 2002, 2001, 2000, 2306, 2307, 2304, 2305, 2303, 2302, 2301, 2300,
|
|
||||||
10116, 10117, 10118, 10119, 10120, 10121, 10122, 10123, 10124, 10125, 10126, 10127, 10128, 10129, 10130, 10131,
|
10116, 10117, 10118, 10119, 10120, 10121, 10122, 10123, 10124, 10125, 10126, 10127, 10128, 10129, 10130, 10131,
|
||||||
10115, 10114, 10113, 10112, 10111, 10110, 10109, 10108, 10107, 10106, 10105, 10104, 10103, 10102, 10101, 10100,
|
|
||||||
//================== 15529
|
|
||||||
10316, 10317, 10318, 10319, 10320, 10321, 10322, 10323, 10324, 10325, 10326, 10327, 10328, 10329, 10330, 10331,
|
|
||||||
10015, 10014, 10013, 10012, 10011, 10010, 10009, 10008, 10007, 10006, 10005, 10004, 10003, 10002, 10001, 10000,
|
10015, 10014, 10013, 10012, 10011, 10010, 10009, 10008, 10007, 10006, 10005, 10004, 10003, 10002, 10001, 10000,
|
||||||
|
//================== 15529
|
||||||
|
10231, 10230, 10229, 10228, 10227, 10226, 10225, 10224, 10223, 10222, 10221, 10220, 10219, 10218, 10217, 10216,
|
||||||
|
10115, 10114, 10113, 10112, 10111, 10110, 10109, 10108, 10107, 10106, 10105, 10104, 10103, 10102, 10101, 10100,
|
||||||
10315, 10314, 10313, 10312, 10311, 10310, 10309, 10308, 10307, 10306, 10305, 10304, 10303, 10302, 10301, 10300,
|
10315, 10314, 10313, 10312, 10311, 10310, 10309, 10308, 10307, 10306, 10305, 10304, 10303, 10302, 10301, 10300,
|
||||||
10215, 10214, 10213, 10212, 10211, 10210, 10209, 10208, 10207, 10206, 10205, 10204, 10203, 10202, 10201, 10200,
|
10215, 10214, 10213, 10212, 10211, 10210, 10209, 10208, 10207, 10206, 10205, 10204, 10203, 10202, 10201, 10200,
|
||||||
//================== 15528
|
//================== 15528
|
||||||
10216, 10217, 10218, 10219, 10220, 10221, 10222, 10223, 10224, 10225, 10226, 10227, 10228, 10229, 10230, 10231,
|
10316, 10317, 10318, 10319, 10320, 10321, 10322, 10323, 10324, 10325, 10326, 10327, 10328, 10329, 10330, 10331,
|
||||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||||
//================== 334
|
//================== 334
|
||||||
20116, 20117, 20118, 20119, 20120, 20121, 20122, 20123, 20016, 20017, 20018, 20019, 20020, 20021, 20022, 20023,
|
20116, 20117, 20118, 20119, 20120, 20121, 20122, 20123, 20016, 20017, 20018, 20019, 20020, 20021, 20022, 20023,
|
||||||
//================== 409
|
//================== 379
|
||||||
20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20009, 20010, 20011, 20012, 20013, 20014, 20015,
|
20000, 20001, 20002, 20003, 20004, 20005, -1, 20007, 20008, -1, 20010, 20011, 20012, 20013, 20014, 20015,
|
||||||
|
//================== 325
|
||||||
|
20100, 20101, 20102, 20103, 20104, 20105, 20106, 20107, 20108, 20109, 20110, 20111, 20112, 20113, 20114, 20115,
|
||||||
//================== 405
|
//================== 405
|
||||||
20100, 20101, 20102, 20103, 20104, 20105, 20106, 20107, 20108, 20109, 20110, 20111, 20112, 20113, 20114, 20115
|
20006, -1, -1, 20009, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
274
mapping_alpha.h
Normal file
274
mapping_alpha.h
Normal file
|
@ -0,0 +1,274 @@
|
||||||
|
#ifndef Mapping_h
|
||||||
|
#define Mapping_h
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <sstream>
|
||||||
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
#include <map>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
#include <TMath.h>
|
||||||
|
|
||||||
|
const std::map<int, unsigned short> board = {
|
||||||
|
{0, 17122}, // id, sn
|
||||||
|
{1, 17123},
|
||||||
|
{2, 22320},
|
||||||
|
{3, 22130},
|
||||||
|
{4, 22129},
|
||||||
|
{5, 15529},
|
||||||
|
{6, 15528},
|
||||||
|
{7, 334},
|
||||||
|
{8, 409},
|
||||||
|
{9, 405}
|
||||||
|
};
|
||||||
|
const int nBd = board.size();
|
||||||
|
|
||||||
|
const int nV1740 = 7;
|
||||||
|
const int nV1725 = 3;
|
||||||
|
|
||||||
|
//+++++++++++++++++++ detID;
|
||||||
|
// The detectors are seperated into 2 type: SuperX3, QQQ, and PC
|
||||||
|
// the SuperX3 has 24 detectors for each kind, wach detector has 12 channels
|
||||||
|
// the QQQ has 4 detectors for each kind, each detector has 32 channels
|
||||||
|
// the PC has 2 types, anode and cathode, each has 24 channels
|
||||||
|
// The detID = Type * 10000 + index * 100 + channel
|
||||||
|
// fro example, detID(superX3-8, ch-7) = 00807
|
||||||
|
|
||||||
|
|
||||||
|
// use the GenMapping() to get that
|
||||||
|
const std::vector<int> mapping = {
|
||||||
|
|
||||||
|
//================== 17122
|
||||||
|
806, 807, 804, 805, 803, 802, 801, 800, 1006, 1007, 1004, 1005, 1003, 1002, 1001, 1000,
|
||||||
|
606, 607, 604, 605, 603, 602, 601, 600, 1106, 1107, 1104, 1105, 1103, 1102, 1101, 1100,
|
||||||
|
711, 710, 709, 708, 911, 910, 909, 908, 811, 810, 809, 808, 1011, 1010, 1009, 1008,
|
||||||
|
706, 707, 704, 705, 703, 702, 701, 700, 906, 907, 904, 905, 903, 902, 901, 900,
|
||||||
|
//================== 17123
|
||||||
|
1406, 1407, 1404, 1405, 1403, 1402, 1401, 1400, 1606, 1607, 1604, 1605, 1603, 1602, 1601, 1600,
|
||||||
|
1306, 1307, 1304, 1305, 1303, 1302, 1301, 1300, 1506, 1507, 1504, 1505, 1503, 1502, 1501, 1500,
|
||||||
|
1311, 1310, 1309, 1308, 1511, 1510, 1509, 1508, 1411, 1410, 1409, 1408, 1611, 1610, 1609, 1608,
|
||||||
|
1206, 1207, 1204, 1205, 1203, 1202, 1201, 1200, 1706, 1707, 1704, 1705, 1703, 1702, 1701, 1700,
|
||||||
|
//================== 22320
|
||||||
|
111, 110, 109, 108, 311, 310, 309, 308, 411, 410, 409, 408, 211, 210, 209, 208,
|
||||||
|
6, 7, 4, 5, 3, 2, 1, 0, 506, 507, 504, 505, 503, 502, 501, 500,
|
||||||
|
206, 207, 204, 205, 203, 202, 201, 200, 406, 407, 404, 405, 403, 402, 401, 400,
|
||||||
|
106, 107, 104, 105, 103, 102, 101, 100, 306, 307, 304, 305, 303, 302, 301, 300,
|
||||||
|
//================== 22130
|
||||||
|
1911, 1910, 1909, 1908, 2111, 2110, 2109, 2108, 2211, 2210, 2209, 2208, 2011, 2010, 2009, 2008,
|
||||||
|
11, 10, 9, 8, 511, 510, 509, 508, 611, 610, 609, 608, 1111, 1110, 1109, 1108,
|
||||||
|
2006, 2007, 2004, 2005, 2003, 2002, 2001, 2000, 2206, 2207, 2204, 2205, 2203, 2202, 2201, 2200,
|
||||||
|
1906, 1907, 1904, 1905, 1903, 1902, 1901, 1900, 2106, 2107, 2104, 2105, 2103, 2102, 2101, 2100,
|
||||||
|
//================== 22129
|
||||||
|
10016, 10017, 10018, 10019, 10020, 10021, 10022, 10023, 10024, 10025, 10026, 10027, 10028, 10029, 10030, 10031,
|
||||||
|
1806, 1807, 1804, 1805, 1803, 1802, 1801, 1800, 2306, 2307, 2304, 2305, 2303, 2302, 2301, 2300,
|
||||||
|
10116, 10117, 10118, 10119, 10120, 10121, 10122, 10123, 10124, 10125, 10126, 10127, 10128, 10129, 10130, 10131,
|
||||||
|
10115, 10114, 10113, 10112, 10111, 10110, 10109, 10108, 10107, 10106, 10105, 10104, 10103, 10102, 10101, 10100,
|
||||||
|
//================== 15529
|
||||||
|
10316, 10317, 10318, 10319, 10320, 10321, 10322, 10323, 10324, 10325, 10326, 10327, 10328, 10329, 10330, 10331,
|
||||||
|
10015, 10014, 10013, 10012, 10011, 10010, 10009, 10008, 10007, 10006, 10005, 10004, 10003, 10002, 10001, 10000,
|
||||||
|
10315, 10314, 10313, 10312, 10311, 10310, 10309, 10308, 10307, 10306, 10305, 10304, 10303, 10302, 10301, 10300,
|
||||||
|
10215, 10214, 10213, 10212, 10211, 10210, 10209, 10208, 10207, 10206, 10205, 10204, 10203, 10202, 10201, 10200,
|
||||||
|
//================== 15528
|
||||||
|
10216, 10217, 10218, 10219, 10220, 10221, 10222, 10223, 10224, 10225, 10226, 10227, 10228, 10229, 10230, 10231,
|
||||||
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||||
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||||
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||||
|
//================== 334
|
||||||
|
20116, 20117, 20118, 20119, 20120, 20121, 20122, 20123, 20016, 20017, 20018, 20019, 20020, 20021, 20022, 20023,
|
||||||
|
//================== 409
|
||||||
|
20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20009, 20010, 20011, 20012, 20013, 20014, 20015,
|
||||||
|
//================== 405
|
||||||
|
20100, 20101, 20102, 20103, 20104, 20105, 20106, 20107, 20108, 20109, 20110, 20111, 20112, 20113, 20114, 20115
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
void PrintMapping(){
|
||||||
|
|
||||||
|
int digiID = 0;
|
||||||
|
int count = 0;
|
||||||
|
printf("==================== ID-MAP: \n");
|
||||||
|
printf("%11s|", ""); for(int i = 0 ; i < 16; i++ ) printf("%7d|", i);
|
||||||
|
printf("\n");
|
||||||
|
for(int i = 0 ; i < 12 + 16*8; i++ ) printf("-");
|
||||||
|
for(size_t i = 0 ; i < mapping.size(); i ++){
|
||||||
|
if( (i) % 16 == 0 ) {
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
if( digiID < nBd ){
|
||||||
|
if( board.at(digiID) > 1000 ) {
|
||||||
|
if( count == 3 ) digiID ++;
|
||||||
|
if( i % 64 == 0 ) {
|
||||||
|
printf("%11d|", board.at(digiID));
|
||||||
|
count = 0;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if( count == 1 ) digiID ++;
|
||||||
|
if( i % 16 == 0 ) {
|
||||||
|
printf("%11d|", board.at(digiID));
|
||||||
|
count = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( count != 0) printf("%11s|", "");
|
||||||
|
count ++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int typeID = mapping[i] / 10000;
|
||||||
|
int detID = (mapping[i] - typeID*10000 )/100;
|
||||||
|
int ch = mapping[i] - typeID*10000 - detID * 100;
|
||||||
|
|
||||||
|
if( mapping[i] == -1 ) {
|
||||||
|
|
||||||
|
printf("%7s|", "");
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
if( typeID == 0){ // SX3
|
||||||
|
|
||||||
|
printf("\033[36m%3d(%2d)\033[0m|", detID, ch);
|
||||||
|
|
||||||
|
}else if( typeID == 1){ // QQQ
|
||||||
|
|
||||||
|
printf("\033[91m%3d(%2d)\033[0m|", detID, ch);
|
||||||
|
|
||||||
|
}else if( typeID == 2){ // PC
|
||||||
|
|
||||||
|
printf("\033[35m%3d(%2d)\033[0m|", detID, ch);
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
for(int i = 0 ; i < 12 + 16*8; i++ ) printf("-");
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GenMapping(std::string mapFile){
|
||||||
|
|
||||||
|
|
||||||
|
std::vector<int> map;
|
||||||
|
|
||||||
|
|
||||||
|
std::ifstream inputFile(mapFile); // Replace "your_file.txt" with the actual file path
|
||||||
|
|
||||||
|
if (!inputFile.is_open()) {
|
||||||
|
printf("Error: Could not open the file (%s).\n", mapFile.c_str());
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string line;
|
||||||
|
|
||||||
|
// Read the file line by line
|
||||||
|
while (std::getline(inputFile, line)) {
|
||||||
|
std::vector<std::string> words;
|
||||||
|
std::istringstream iss(line);
|
||||||
|
|
||||||
|
// Extract words from the current line
|
||||||
|
while (true) {
|
||||||
|
std::string word;
|
||||||
|
if (!(iss >> word)) break; // Break if there are no more words
|
||||||
|
|
||||||
|
word.erase(std::remove_if(word.begin(), word.end(), ::isspace), word.end());
|
||||||
|
words.push_back(word);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if( atoi(words[0].c_str()) % 16 == 0 ) printf("=================\n");
|
||||||
|
|
||||||
|
|
||||||
|
int detID = atoi(words[1].c_str())*100;
|
||||||
|
if(words.size() < 5 ) printf(" hahhahha %s\n", line.c_str());
|
||||||
|
if( words[2] == "BARREL" ) {
|
||||||
|
if( words[3] == "FRONTDOWN" ){
|
||||||
|
int chID = atoi(words[4].c_str());
|
||||||
|
if( chID % 2 != 0 ) chID -= 1;
|
||||||
|
detID += chID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( words[3] == "FRONTUP" ){
|
||||||
|
int chID = atoi(words[4].c_str());
|
||||||
|
if( chID % 2 == 0 ) chID += 1;
|
||||||
|
detID += chID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( words[3] == "BACK") detID += atoi(words[4].c_str()) + 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( words[2] == "FQQQ" ) {
|
||||||
|
detID += 10000;
|
||||||
|
if( words[3] == "WEDGE") detID += atoi(words[4].c_str());
|
||||||
|
if( words[3] == "RING") detID += atoi(words[4].c_str()) + 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( words[2] == "PC" ) {
|
||||||
|
detID += 20000;
|
||||||
|
if( words[3] == "ANODE") detID += atoi(words[4].c_str());
|
||||||
|
if( words[3] == "CATHODE") detID += 100 + atoi(words[4].c_str());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if( words[2] == "blank") {
|
||||||
|
detID = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
map.push_back(detID);
|
||||||
|
|
||||||
|
printf("| %5d", detID);
|
||||||
|
printf("|\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close the file
|
||||||
|
inputFile.close();
|
||||||
|
|
||||||
|
int digiID = 0;
|
||||||
|
int count = 0;
|
||||||
|
printf("===============================\n");
|
||||||
|
for( size_t i = 0; i < ((map.size() +15)/16) * 16; i++){
|
||||||
|
if( i % 16 == 0) {
|
||||||
|
printf("\n");
|
||||||
|
if( digiID < nBd ){
|
||||||
|
if( board.at(digiID) > 1000 ) {
|
||||||
|
if( count == 3 ) digiID ++;
|
||||||
|
if( i % 64 == 0 ) {
|
||||||
|
printf(" //================== %d\n", board.at(digiID));
|
||||||
|
count = 0;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if( count == 1 ) digiID ++;
|
||||||
|
if( i % 16 == 0 ) {
|
||||||
|
printf(" //================== %d\n", board.at(digiID));
|
||||||
|
count = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
count ++;
|
||||||
|
}
|
||||||
|
if( i < map.size() ){
|
||||||
|
printf(" %5d,", map[i]);
|
||||||
|
}else{
|
||||||
|
printf(" %5d,", -1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("\n\n===============================\n");
|
||||||
|
|
||||||
|
printf("sorting mapping and see if there any repeated\n");
|
||||||
|
std::sort(map.begin(), map.end());
|
||||||
|
|
||||||
|
for( size_t i = 1; i < map.size(); i++){
|
||||||
|
if( map[i] == -1 ) continue;
|
||||||
|
if( map[i] == map[i-1] ) printf("%5d \n", map[i]);
|
||||||
|
}
|
||||||
|
printf("=========== Done. if nothing show, no repeat. \n");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
984
mapping_old.txt
984
mapping_old.txt
|
@ -1,496 +1,496 @@
|
||||||
0 2 BARREL FRONTDOWN 7
|
0 8 BARREL FRONTDOWN 7
|
||||||
1 2 BARREL FRONTUP 6
|
1 8 BARREL FRONTUP 6
|
||||||
2 2 BARREL FRONTDOWN 5
|
2 8 BARREL FRONTDOWN 5
|
||||||
3 2 BARREL FRONTUP 4
|
3 8 BARREL FRONTUP 4
|
||||||
4 2 BARREL FRONTUP 3
|
4 8 BARREL FRONTUP 3
|
||||||
5 2 BARREL FRONTDOWN 2
|
5 8 BARREL FRONTDOWN 2
|
||||||
6 2 BARREL FRONTUP 1
|
6 8 BARREL FRONTUP 1
|
||||||
7 2 BARREL FRONTDOWN 0
|
7 8 BARREL FRONTDOWN 0
|
||||||
8 4 BARREL FRONTDOWN 7
|
8 10 BARREL FRONTDOWN 7
|
||||||
9 4 BARREL FRONTUP 6
|
9 10 BARREL FRONTUP 6
|
||||||
10 4 BARREL FRONTDOWN 5
|
10 10 BARREL FRONTDOWN 5
|
||||||
11 4 BARREL FRONTUP 4
|
11 10 BARREL FRONTUP 4
|
||||||
12 4 BARREL FRONTUP 3
|
12 10 BARREL FRONTUP 3
|
||||||
13 4 BARREL FRONTDOWN 2
|
13 10 BARREL FRONTDOWN 2
|
||||||
14 4 BARREL FRONTUP 1
|
14 10 BARREL FRONTUP 1
|
||||||
15 4 BARREL FRONTDOWN 0
|
15 10 BARREL FRONTDOWN 0
|
||||||
16 0 BARREL FRONTDOWN 7
|
16 6 BARREL FRONTDOWN 7
|
||||||
17 0 BARREL FRONTUP 6
|
17 6 BARREL FRONTUP 6
|
||||||
18 0 BARREL FRONTDOWN 5
|
18 6 BARREL FRONTDOWN 5
|
||||||
19 0 BARREL FRONTUP 4
|
19 6 BARREL FRONTUP 4
|
||||||
20 0 BARREL FRONTUP 3
|
20 6 BARREL FRONTUP 3
|
||||||
21 0 BARREL FRONTDOWN 2
|
21 6 BARREL FRONTDOWN 2
|
||||||
22 0 BARREL FRONTUP 1
|
22 6 BARREL FRONTUP 1
|
||||||
23 0 BARREL FRONTDOWN 0
|
23 6 BARREL FRONTDOWN 0
|
||||||
24 5 BARREL FRONTDOWN 7
|
24 11 BARREL FRONTDOWN 7
|
||||||
25 5 BARREL FRONTUP 6
|
25 11 BARREL FRONTUP 6
|
||||||
26 5 BARREL FRONTDOWN 5
|
26 11 BARREL FRONTDOWN 5
|
||||||
27 5 BARREL FRONTUP 4
|
27 11 BARREL FRONTUP 4
|
||||||
28 5 BARREL FRONTUP 3
|
28 11 BARREL FRONTUP 3
|
||||||
29 5 BARREL FRONTDOWN 2
|
29 11 BARREL FRONTDOWN 2
|
||||||
30 5 BARREL FRONTUP 1
|
30 11 BARREL FRONTUP 1
|
||||||
31 5 BARREL FRONTDOWN 0
|
31 11 BARREL FRONTDOWN 0
|
||||||
32 1 BARREL BACK 3
|
32 7 BARREL BACK 3
|
||||||
33 1 BARREL BACK 2
|
33 7 BARREL BACK 2
|
||||||
34 1 BARREL BACK 1
|
34 7 BARREL BACK 1
|
||||||
35 1 BARREL BACK 0
|
35 7 BARREL BACK 0
|
||||||
36 2 BARREL BACK 3
|
36 9 BARREL BACK 3
|
||||||
37 2 BARREL BACK 2
|
37 9 BARREL BACK 2
|
||||||
38 2 BARREL BACK 1
|
38 9 BARREL BACK 1
|
||||||
39 2 BARREL BACK 0
|
39 9 BARREL BACK 0
|
||||||
40 3 BARREL BACK 3
|
40 10 BARREL BACK 3
|
||||||
41 3 BARREL BACK 2
|
41 10 BARREL BACK 2
|
||||||
42 3 BARREL BACK 1
|
42 10 BARREL BACK 1
|
||||||
43 3 BARREL BACK 0
|
43 10 BARREL BACK 0
|
||||||
44 4 BARREL BACK 3
|
44 8 BARREL BACK 3
|
||||||
45 4 BARREL BACK 2
|
45 8 BARREL BACK 2
|
||||||
46 4 BARREL BACK 1
|
46 8 BARREL BACK 1
|
||||||
47 4 BARREL BACK 0
|
47 8 BARREL BACK 0
|
||||||
48 1 BARREL FRONTDOWN 7
|
48 7 BARREL FRONTDOWN 7
|
||||||
49 1 BARREL FRONTUP 6
|
49 7 BARREL FRONTUP 6
|
||||||
50 1 BARREL FRONTDOWN 5
|
50 7 BARREL FRONTDOWN 5
|
||||||
51 1 BARREL FRONTUP 4
|
51 7 BARREL FRONTUP 4
|
||||||
52 1 BARREL FRONTUP 3
|
52 7 BARREL FRONTUP 3
|
||||||
53 1 BARREL FRONTDOWN 2
|
53 7 BARREL FRONTDOWN 2
|
||||||
54 1 BARREL FRONTUP 1
|
54 7 BARREL FRONTUP 1
|
||||||
55 1 BARREL FRONTDOWN 0
|
55 7 BARREL FRONTDOWN 0
|
||||||
56 3 BARREL FRONTDOWN 7
|
56 9 BARREL FRONTDOWN 7
|
||||||
57 3 BARREL FRONTUP 6
|
57 9 BARREL FRONTUP 6
|
||||||
58 3 BARREL FRONTDOWN 5
|
58 9 BARREL FRONTDOWN 5
|
||||||
59 3 BARREL FRONTUP 4
|
59 9 BARREL FRONTUP 4
|
||||||
60 3 BARREL FRONTUP 3
|
60 9 BARREL FRONTUP 3
|
||||||
61 3 BARREL FRONTDOWN 2
|
61 9 BARREL FRONTDOWN 2
|
||||||
62 3 BARREL FRONTUP 1
|
62 9 BARREL FRONTUP 1
|
||||||
63 3 BARREL FRONTDOWN 0
|
63 9 BARREL FRONTDOWN 0
|
||||||
64 6 BARREL FRONTDOWN 7
|
64 14 BARREL FRONTDOWN 7
|
||||||
65 6 BARREL FRONTUP 6
|
65 14 BARREL FRONTUP 6
|
||||||
66 6 BARREL FRONTDOWN 5
|
66 14 BARREL FRONTDOWN 5
|
||||||
67 6 BARREL FRONTUP 4
|
67 14 BARREL FRONTUP 4
|
||||||
68 6 BARREL FRONTUP 3
|
68 14 BARREL FRONTUP 3
|
||||||
69 6 BARREL FRONTDOWN 2
|
69 14 BARREL FRONTDOWN 2
|
||||||
70 6 BARREL FRONTUP 1
|
70 14 BARREL FRONTUP 1
|
||||||
71 6 BARREL FRONTDOWN 0
|
71 14 BARREL FRONTDOWN 0
|
||||||
72 11 BARREL FRONTDOWN 7
|
72 16 BARREL FRONTDOWN 7
|
||||||
73 11 BARREL FRONTUP 6
|
73 16 BARREL FRONTUP 6
|
||||||
74 11 BARREL FRONTDOWN 5
|
74 16 BARREL FRONTDOWN 5
|
||||||
75 11 BARREL FRONTUP 4
|
75 16 BARREL FRONTUP 4
|
||||||
76 11 BARREL FRONTUP 3
|
76 16 BARREL FRONTUP 3
|
||||||
77 11 BARREL FRONTDOWN 2
|
77 16 BARREL FRONTDOWN 2
|
||||||
78 11 BARREL FRONTUP 1
|
78 16 BARREL FRONTUP 1
|
||||||
79 11 BARREL FRONTDOWN 0
|
79 16 BARREL FRONTDOWN 0
|
||||||
80 7 BARREL BACK 3
|
80 13 BARREL FRONTDOWN 7
|
||||||
81 7 BARREL BACK 2
|
81 13 BARREL FRONTUP 6
|
||||||
82 7 BARREL BACK 1
|
82 13 BARREL FRONTDOWN 5
|
||||||
83 7 BARREL BACK 0
|
83 13 BARREL FRONTUP 4
|
||||||
84 8 BARREL BACK 3
|
84 13 BARREL FRONTUP 3
|
||||||
85 8 BARREL BACK 2
|
85 13 BARREL FRONTDOWN 2
|
||||||
86 8 BARREL BACK 1
|
86 13 BARREL FRONTUP 1
|
||||||
87 8 BARREL BACK 0
|
87 13 BARREL FRONTDOWN 0
|
||||||
88 9 BARREL BACK 3
|
88 15 BARREL FRONTDOWN 7
|
||||||
89 9 BARREL BACK 2
|
89 15 BARREL FRONTUP 6
|
||||||
90 9 BARREL BACK 1
|
90 15 BARREL FRONTDOWN 5
|
||||||
91 9 BARREL BACK 0
|
91 15 BARREL FRONTUP 4
|
||||||
92 10 BARREL BACK 3
|
92 15 BARREL FRONTUP 3
|
||||||
93 10 BARREL BACK 2
|
93 15 BARREL FRONTDOWN 2
|
||||||
94 10 BARREL BACK 1
|
94 15 BARREL FRONTUP 1
|
||||||
95 10 BARREL BACK 0
|
95 15 BARREL FRONTDOWN 0
|
||||||
96 7 BARREL FRONTDOWN 7
|
96 13 BARREL BACK 3
|
||||||
97 7 BARREL FRONTUP 6
|
97 13 BARREL BACK 2
|
||||||
98 7 BARREL FRONTDOWN 5
|
98 13 BARREL BACK 1
|
||||||
99 7 BARREL FRONTUP 4
|
99 13 BARREL BACK 0
|
||||||
100 7 BARREL FRONTUP 3
|
100 17 BARREL BACK 3
|
||||||
101 7 BARREL FRONTDOWN 2
|
101 17 BARREL BACK 2
|
||||||
102 7 BARREL FRONTUP 1
|
102 17 BARREL BACK 1
|
||||||
103 7 BARREL FRONTDOWN 0
|
103 17 BARREL BACK 0
|
||||||
104 9 BARREL FRONTDOWN 7
|
104 16 BARREL BACK 3
|
||||||
105 9 BARREL FRONTUP 6
|
105 16 BARREL BACK 2
|
||||||
106 9 BARREL FRONTDOWN 5
|
106 16 BARREL BACK 1
|
||||||
107 9 BARREL FRONTUP 4
|
107 16 BARREL BACK 0
|
||||||
108 9 BARREL FRONTUP 3
|
108 14 BARREL BACK 3
|
||||||
109 9 BARREL FRONTDOWN 2
|
109 14 BARREL BACK 2
|
||||||
110 9 BARREL FRONTUP 1
|
110 14 BARREL BACK 1
|
||||||
111 9 BARREL FRONTDOWN 0
|
111 14 BARREL BACK 0
|
||||||
112 8 BARREL FRONTDOWN 7
|
112 12 BARREL FRONTDOWN 7
|
||||||
113 8 BARREL FRONTUP 6
|
113 12 BARREL FRONTUP 6
|
||||||
114 8 BARREL FRONTDOWN 5
|
114 12 BARREL FRONTDOWN 5
|
||||||
115 8 BARREL FRONTUP 4
|
115 12 BARREL FRONTUP 4
|
||||||
116 8 BARREL FRONTUP 3
|
116 12 BARREL FRONTUP 3
|
||||||
117 8 BARREL FRONTDOWN 2
|
117 12 BARREL FRONTDOWN 2
|
||||||
118 8 BARREL FRONTUP 1
|
118 12 BARREL FRONTUP 1
|
||||||
119 8 BARREL FRONTDOWN 0
|
119 12 BARREL FRONTDOWN 0
|
||||||
120 10 BARREL FRONTDOWN 7
|
120 17 BARREL FRONTDOWN 7
|
||||||
121 10 BARREL FRONTUP 6
|
121 17 BARREL FRONTUP 6
|
||||||
122 10 BARREL FRONTDOWN 5
|
122 17 BARREL FRONTDOWN 5
|
||||||
123 10 BARREL FRONTUP 4
|
123 17 BARREL FRONTUP 4
|
||||||
124 10 BARREL FRONTUP 3
|
124 17 BARREL FRONTUP 3
|
||||||
125 10 BARREL FRONTDOWN 2
|
125 17 BARREL FRONTDOWN 2
|
||||||
126 10 BARREL FRONTUP 1
|
126 17 BARREL FRONTUP 1
|
||||||
127 10 BARREL FRONTDOWN 0
|
127 17 BARREL FRONTDOWN 0
|
||||||
128 19 BARREL BACK 3
|
128 0 BARREL FRONTDOWN 7
|
||||||
129 19 BARREL BACK 2
|
129 0 BARREL FRONTUP 6
|
||||||
130 19 BARREL BACK 1
|
130 0 BARREL FRONTDOWN 5
|
||||||
131 19 BARREL BACK 0
|
131 0 BARREL FRONTUP 4
|
||||||
132 20 BARREL BACK 3
|
132 0 BARREL FRONTUP 3
|
||||||
133 20 BARREL BACK 2
|
133 0 BARREL FRONTDOWN 2
|
||||||
134 20 BARREL BACK 1
|
134 0 BARREL FRONTUP 1
|
||||||
135 20 BARREL BACK 0
|
135 0 BARREL FRONTDOWN 0
|
||||||
136 21 BARREL BACK 3
|
136 5 BARREL FRONTDOWN 7
|
||||||
137 21 BARREL BACK 2
|
137 5 BARREL FRONTUP 6
|
||||||
138 21 BARREL BACK 1
|
138 5 BARREL FRONTDOWN 5
|
||||||
139 21 BARREL BACK 0
|
139 5 BARREL FRONTUP 4
|
||||||
140 22 BARREL BACK 3
|
140 5 BARREL FRONTUP 3
|
||||||
141 22 BARREL BACK 2
|
141 5 BARREL FRONTDOWN 2
|
||||||
142 22 BARREL BACK 1
|
142 5 BARREL FRONTUP 1
|
||||||
143 22 BARREL BACK 0
|
143 5 BARREL FRONTDOWN 0
|
||||||
144 19 BARREL FRONTDOWN 7
|
144 1 BARREL BACK 3
|
||||||
145 19 BARREL FRONTUP 6
|
145 1 BARREL BACK 2
|
||||||
146 19 BARREL FRONTDOWN 5
|
146 1 BARREL BACK 1
|
||||||
147 19 BARREL FRONTUP 4
|
147 1 BARREL BACK 0
|
||||||
148 19 BARREL FRONTUP 3
|
148 3 BARREL BACK 3
|
||||||
149 19 BARREL FRONTDOWN 2
|
149 3 BARREL BACK 2
|
||||||
150 19 BARREL FRONTUP 1
|
150 3 BARREL BACK 1
|
||||||
151 19 BARREL FRONTDOWN 0
|
151 3 BARREL BACK 0
|
||||||
152 21 BARREL FRONTDOWN 7
|
152 4 BARREL BACK 3
|
||||||
153 21 BARREL FRONTUP 6
|
153 4 BARREL BACK 2
|
||||||
154 21 BARREL FRONTDOWN 5
|
154 4 BARREL BACK 1
|
||||||
155 21 BARREL FRONTUP 4
|
155 4 BARREL BACK 0
|
||||||
156 21 BARREL FRONTUP 3
|
156 2 BARREL BACK 3
|
||||||
157 21 BARREL FRONTDOWN 2
|
157 2 BARREL BACK 2
|
||||||
158 21 BARREL FRONTUP 1
|
158 2 BARREL BACK 1
|
||||||
159 21 BARREL FRONTDOWN 0
|
159 2 BARREL BACK 0
|
||||||
160 18 BARREL FRONTDOWN 7
|
160 2 BARREL FRONTDOWN 7
|
||||||
161 18 BARREL FRONTUP 6
|
161 2 BARREL FRONTUP 6
|
||||||
162 18 BARREL FRONTDOWN 5
|
162 2 BARREL FRONTDOWN 5
|
||||||
163 18 BARREL FRONTUP 4
|
163 2 BARREL FRONTUP 4
|
||||||
164 18 BARREL FRONTUP 3
|
164 2 BARREL FRONTUP 3
|
||||||
165 18 BARREL FRONTDOWN 2
|
165 2 BARREL FRONTDOWN 2
|
||||||
166 18 BARREL FRONTUP 1
|
166 2 BARREL FRONTUP 1
|
||||||
167 18 BARREL FRONTDOWN 0
|
167 2 BARREL FRONTDOWN 0
|
||||||
168 23 BARREL FRONTDOWN 7
|
168 4 BARREL FRONTDOWN 7
|
||||||
169 23 BARREL FRONTUP 6
|
169 4 BARREL FRONTUP 6
|
||||||
170 23 BARREL FRONTDOWN 5
|
170 4 BARREL FRONTDOWN 5
|
||||||
171 23 BARREL FRONTUP 4
|
171 4 BARREL FRONTUP 4
|
||||||
172 23 BARREL FRONTUP 3
|
172 4 BARREL FRONTUP 3
|
||||||
173 23 BARREL FRONTDOWN 2
|
173 4 BARREL FRONTDOWN 2
|
||||||
174 23 BARREL FRONTUP 1
|
174 4 BARREL FRONTUP 1
|
||||||
175 23 BARREL FRONTDOWN 0
|
175 4 BARREL FRONTDOWN 0
|
||||||
176 20 BARREL FRONTDOWN 7
|
176 1 BARREL FRONTDOWN 7
|
||||||
177 20 BARREL FRONTUP 6
|
177 1 BARREL FRONTUP 6
|
||||||
178 20 BARREL FRONTDOWN 5
|
178 1 BARREL FRONTDOWN 5
|
||||||
179 20 BARREL FRONTUP 4
|
179 1 BARREL FRONTUP 4
|
||||||
180 20 BARREL FRONTUP 3
|
180 1 BARREL FRONTUP 3
|
||||||
181 20 BARREL FRONTDOWN 2
|
181 1 BARREL FRONTDOWN 2
|
||||||
182 20 BARREL FRONTUP 1
|
182 1 BARREL FRONTUP 1
|
||||||
183 20 BARREL FRONTDOWN 0
|
183 1 BARREL FRONTDOWN 0
|
||||||
184 22 BARREL FRONTDOWN 7
|
184 3 BARREL FRONTDOWN 7
|
||||||
185 22 BARREL FRONTUP 6
|
185 3 BARREL FRONTUP 6
|
||||||
186 22 BARREL FRONTDOWN 5
|
186 3 BARREL FRONTDOWN 5
|
||||||
187 22 BARREL FRONTUP 4
|
187 3 BARREL FRONTUP 4
|
||||||
188 22 BARREL FRONTUP 3
|
188 3 BARREL FRONTUP 3
|
||||||
189 22 BARREL FRONTDOWN 2
|
189 3 BARREL FRONTDOWN 2
|
||||||
190 22 BARREL FRONTUP 1
|
190 3 BARREL FRONTUP 1
|
||||||
191 22 BARREL FRONTDOWN 0
|
191 3 BARREL FRONTDOWN 0
|
||||||
192 13 BARREL BACK 3
|
192 19 BARREL BACK 3
|
||||||
193 13 BARREL BACK 2
|
193 19 BARREL BACK 2
|
||||||
194 13 BARREL BACK 1
|
194 19 BARREL BACK 1
|
||||||
195 13 BARREL BACK 0
|
195 19 BARREL BACK 0
|
||||||
196 14 BARREL BACK 3
|
196 21 BARREL BACK 3
|
||||||
197 14 BARREL BACK 2
|
197 21 BARREL BACK 2
|
||||||
198 14 BARREL BACK 1
|
198 21 BARREL BACK 1
|
||||||
199 14 BARREL BACK 0
|
199 21 BARREL BACK 0
|
||||||
200 15 BARREL BACK 3
|
200 22 BARREL BACK 3
|
||||||
201 15 BARREL BACK 2
|
201 22 BARREL BACK 2
|
||||||
202 15 BARREL BACK 1
|
202 22 BARREL BACK 1
|
||||||
203 15 BARREL BACK 0
|
203 22 BARREL BACK 0
|
||||||
204 16 BARREL BACK 3
|
204 20 BARREL BACK 3
|
||||||
205 16 BARREL BACK 2
|
205 20 BARREL BACK 2
|
||||||
206 16 BARREL BACK 1
|
206 20 BARREL BACK 1
|
||||||
207 16 BARREL BACK 0
|
207 20 BARREL BACK 0
|
||||||
208 0 BARREL BACK 3
|
208 0 BARREL BACK 3
|
||||||
209 0 BARREL BACK 2
|
209 0 BARREL BACK 2
|
||||||
210 0 BARREL BACK 1
|
210 0 BARREL BACK 1
|
||||||
211 0 BARREL BACK 0
|
211 0 BARREL BACK 0
|
||||||
212 5 BARREL BACK 3
|
212 5 BARREL BACK 3
|
||||||
213 5 BARREL BACK 2
|
213 5 BARREL BACK 2
|
||||||
214 5 BARREL BACK 1
|
214 5 BARREL BACK 1
|
||||||
215 5 BARREL BACK 0
|
215 5 BARREL BACK 0
|
||||||
216 6 BARREL BACK 3
|
216 6 BARREL BACK 3
|
||||||
217 6 BARREL BACK 2
|
217 6 BARREL BACK 2
|
||||||
218 6 BARREL BACK 1
|
218 6 BARREL BACK 1
|
||||||
219 6 BARREL BACK 0
|
219 6 BARREL BACK 0
|
||||||
220 11 BARREL BACK 3
|
220 11 BARREL BACK 3
|
||||||
221 11 BARREL BACK 2
|
221 11 BARREL BACK 2
|
||||||
222 11 BARREL BACK 1
|
222 11 BARREL BACK 1
|
||||||
223 11 BARREL BACK 0
|
223 11 BARREL BACK 0
|
||||||
224 14 BARREL FRONTDOWN 7
|
224 20 BARREL FRONTDOWN 7
|
||||||
225 14 BARREL FRONTUP 6
|
225 20 BARREL FRONTUP 6
|
||||||
226 14 BARREL FRONTDOWN 5
|
226 20 BARREL FRONTDOWN 5
|
||||||
227 14 BARREL FRONTUP 4
|
227 20 BARREL FRONTUP 4
|
||||||
228 14 BARREL FRONTUP 3
|
228 20 BARREL FRONTUP 3
|
||||||
229 14 BARREL FRONTDOWN 2
|
229 20 BARREL FRONTDOWN 2
|
||||||
230 14 BARREL FRONTUP 1
|
230 20 BARREL FRONTUP 1
|
||||||
231 14 BARREL FRONTDOWN 0
|
231 20 BARREL FRONTDOWN 0
|
||||||
232 16 BARREL FRONTDOWN 7
|
232 22 BARREL FRONTDOWN 7
|
||||||
233 16 BARREL FRONTUP 6
|
233 22 BARREL FRONTUP 6
|
||||||
234 16 BARREL FRONTDOWN 5
|
234 22 BARREL FRONTDOWN 5
|
||||||
235 16 BARREL FRONTUP 4
|
235 22 BARREL FRONTUP 4
|
||||||
236 16 BARREL FRONTUP 3
|
236 22 BARREL FRONTUP 3
|
||||||
237 16 BARREL FRONTDOWN 2
|
237 22 BARREL FRONTDOWN 2
|
||||||
238 16 BARREL FRONTUP 1
|
238 22 BARREL FRONTUP 1
|
||||||
239 16 BARREL FRONTDOWN 0
|
239 22 BARREL FRONTDOWN 0
|
||||||
240 13 BARREL FRONTDOWN 7
|
240 19 BARREL FRONTDOWN 7
|
||||||
241 13 BARREL FRONTUP 6
|
241 19 BARREL FRONTUP 6
|
||||||
242 13 BARREL FRONTDOWN 5
|
242 19 BARREL FRONTDOWN 5
|
||||||
243 13 BARREL FRONTUP 4
|
243 19 BARREL FRONTUP 4
|
||||||
244 13 BARREL FRONTUP 3
|
244 19 BARREL FRONTUP 3
|
||||||
245 13 BARREL FRONTDOWN 2
|
245 19 BARREL FRONTDOWN 2
|
||||||
246 13 BARREL FRONTUP 1
|
246 19 BARREL FRONTUP 1
|
||||||
247 13 BARREL FRONTDOWN 0
|
247 19 BARREL FRONTDOWN 0
|
||||||
248 15 BARREL FRONTDOWN 7
|
248 21 BARREL FRONTDOWN 7
|
||||||
249 15 BARREL FRONTUP 6
|
249 21 BARREL FRONTUP 6
|
||||||
250 15 BARREL FRONTDOWN 5
|
250 21 BARREL FRONTDOWN 5
|
||||||
251 15 BARREL FRONTUP 4
|
251 21 BARREL FRONTUP 4
|
||||||
252 15 BARREL FRONTUP 3
|
252 21 BARREL FRONTUP 3
|
||||||
253 15 BARREL FRONTDOWN 2
|
253 21 BARREL FRONTDOWN 2
|
||||||
254 15 BARREL FRONTUP 1
|
254 21 BARREL FRONTUP 1
|
||||||
255 15 BARREL FRONTDOWN 0
|
255 21 BARREL FRONTDOWN 0
|
||||||
256 0 FQQQ WEDGE 15
|
256 18 BARREL FRONTDOWN 7
|
||||||
257 0 FQQQ WEDGE 14
|
257 18 BARREL FRONTUP 6
|
||||||
258 0 FQQQ WEDGE 13
|
258 18 BARREL FRONTDOWN 5
|
||||||
259 0 FQQQ WEDGE 12
|
259 18 BARREL FRONTUP 4
|
||||||
260 0 FQQQ WEDGE 11
|
260 18 BARREL FRONTUP 3
|
||||||
261 0 FQQQ WEDGE 10
|
261 18 BARREL FRONTDOWN 2
|
||||||
262 0 FQQQ WEDGE 9
|
262 18 BARREL FRONTUP 1
|
||||||
263 0 FQQQ WEDGE 8
|
263 18 BARREL FRONTDOWN 0
|
||||||
264 0 FQQQ WEDGE 7
|
264 23 BARREL FRONTDOWN 7
|
||||||
265 0 FQQQ WEDGE 6
|
265 23 BARREL FRONTUP 6
|
||||||
266 0 FQQQ WEDGE 5
|
266 23 BARREL FRONTDOWN 5
|
||||||
267 0 FQQQ WEDGE 4
|
267 23 BARREL FRONTUP 4
|
||||||
268 0 FQQQ WEDGE 3
|
268 23 BARREL FRONTUP 3
|
||||||
269 0 FQQQ WEDGE 2
|
269 23 BARREL FRONTDOWN 2
|
||||||
270 0 FQQQ WEDGE 1
|
270 23 BARREL FRONTUP 1
|
||||||
271 0 FQQQ WEDGE 0
|
271 23 BARREL FRONTDOWN 0
|
||||||
272 12 BARREL FRONTDOWN 7
|
272 0 FQQQ RING 0
|
||||||
273 12 BARREL FRONTUP 6
|
273 0 FQQQ RING 1
|
||||||
274 12 BARREL FRONTDOWN 5
|
274 0 FQQQ RING 2
|
||||||
275 12 BARREL FRONTUP 4
|
275 0 FQQQ RING 3
|
||||||
276 12 BARREL FRONTUP 3
|
276 0 FQQQ RING 4
|
||||||
277 12 BARREL FRONTDOWN 2
|
277 0 FQQQ RING 5
|
||||||
278 12 BARREL FRONTUP 1
|
278 0 FQQQ RING 6
|
||||||
279 12 BARREL FRONTDOWN 0
|
279 0 FQQQ RING 7
|
||||||
280 17 BARREL FRONTDOWN 7
|
280 0 FQQQ RING 8
|
||||||
281 17 BARREL FRONTUP 6
|
281 0 FQQQ RING 9
|
||||||
282 17 BARREL FRONTDOWN 5
|
282 0 FQQQ RING 10
|
||||||
283 17 BARREL FRONTUP 4
|
283 0 FQQQ RING 11
|
||||||
284 17 BARREL FRONTUP 3
|
284 0 FQQQ RING 12
|
||||||
285 17 BARREL FRONTDOWN 2
|
285 0 FQQQ RING 13
|
||||||
286 17 BARREL FRONTUP 1
|
286 0 FQQQ RING 14
|
||||||
287 17 BARREL FRONTDOWN 0
|
287 0 FQQQ RING 15
|
||||||
288 1 FQQQ WEDGE 15
|
288 1 FQQQ RING 0
|
||||||
289 1 FQQQ WEDGE 14
|
289 1 FQQQ RING 1
|
||||||
290 1 FQQQ WEDGE 13
|
290 1 FQQQ RING 2
|
||||||
291 1 FQQQ WEDGE 12
|
291 1 FQQQ RING 3
|
||||||
292 1 FQQQ WEDGE 11
|
292 1 FQQQ RING 4
|
||||||
293 1 FQQQ WEDGE 10
|
293 1 FQQQ RING 5
|
||||||
294 1 FQQQ WEDGE 9
|
294 1 FQQQ RING 6
|
||||||
295 1 FQQQ WEDGE 8
|
295 1 FQQQ RING 7
|
||||||
296 1 FQQQ WEDGE 7
|
296 1 FQQQ RING 8
|
||||||
297 1 FQQQ WEDGE 6
|
297 1 FQQQ RING 9
|
||||||
298 1 FQQQ WEDGE 5
|
298 1 FQQQ RING 10
|
||||||
299 1 FQQQ WEDGE 4
|
299 1 FQQQ RING 11
|
||||||
300 1 FQQQ WEDGE 3
|
300 1 FQQQ RING 12
|
||||||
301 1 FQQQ WEDGE 2
|
301 1 FQQQ RING 13
|
||||||
302 1 FQQQ WEDGE 1
|
302 1 FQQQ RING 14
|
||||||
303 1 FQQQ WEDGE 0
|
303 1 FQQQ RING 15
|
||||||
304 1 FQQQ RING 0
|
304 1 FQQQ WEDGE 15
|
||||||
305 1 FQQQ RING 1
|
305 1 FQQQ WEDGE 14
|
||||||
306 1 FQQQ RING 2
|
306 1 FQQQ WEDGE 13
|
||||||
307 1 FQQQ RING 3
|
307 1 FQQQ WEDGE 12
|
||||||
308 1 FQQQ RING 4
|
308 1 FQQQ WEDGE 11
|
||||||
309 1 FQQQ RING 5
|
309 1 FQQQ WEDGE 10
|
||||||
310 1 FQQQ RING 6
|
310 1 FQQQ WEDGE 9
|
||||||
311 1 FQQQ RING 7
|
311 1 FQQQ WEDGE 8
|
||||||
312 1 FQQQ RING 8
|
312 1 FQQQ WEDGE 7
|
||||||
313 1 FQQQ RING 9
|
313 1 FQQQ WEDGE 6
|
||||||
314 1 FQQQ RING 10
|
314 1 FQQQ WEDGE 5
|
||||||
315 1 FQQQ RING 11
|
315 1 FQQQ WEDGE 4
|
||||||
316 1 FQQQ RING 12
|
316 1 FQQQ WEDGE 3
|
||||||
317 1 FQQQ RING 13
|
317 1 FQQQ WEDGE 2
|
||||||
318 1 FQQQ RING 14
|
318 1 FQQQ WEDGE 1
|
||||||
319 1 FQQQ RING 15
|
319 1 FQQQ WEDGE 0
|
||||||
320 0 FQQQ RING 0
|
320 2 FQQQ RING 15
|
||||||
321 0 FQQQ RING 1
|
321 2 FQQQ RING 14
|
||||||
322 0 FQQQ RING 2
|
322 2 FQQQ RING 13
|
||||||
323 0 FQQQ RING 3
|
323 2 FQQQ RING 12
|
||||||
324 0 FQQQ RING 4
|
324 2 FQQQ RING 11
|
||||||
325 0 FQQQ RING 5
|
325 2 FQQQ RING 10
|
||||||
326 0 FQQQ RING 6
|
326 2 FQQQ RING 9
|
||||||
327 0 FQQQ RING 7
|
327 2 FQQQ RING 8
|
||||||
328 0 FQQQ RING 8
|
328 2 FQQQ RING 7
|
||||||
329 0 FQQQ RING 9
|
329 2 FQQQ RING 6
|
||||||
330 0 FQQQ RING 10
|
330 2 FQQQ RING 5
|
||||||
331 0 FQQQ RING 11
|
331 2 FQQQ RING 4
|
||||||
332 0 FQQQ RING 12
|
332 2 FQQQ RING 3
|
||||||
333 0 FQQQ RING 13
|
333 2 FQQQ RING 2
|
||||||
334 0 FQQQ RING 14
|
334 2 FQQQ RING 1
|
||||||
335 0 FQQQ RING 15
|
335 2 FQQQ RING 0
|
||||||
336 2 FQQQ WEDGE 15
|
336 0 FQQQ WEDGE 15
|
||||||
337 2 FQQQ WEDGE 14
|
337 0 FQQQ WEDGE 14
|
||||||
338 2 FQQQ WEDGE 13
|
338 0 FQQQ WEDGE 13
|
||||||
339 2 FQQQ WEDGE 12
|
339 0 FQQQ WEDGE 12
|
||||||
340 2 FQQQ WEDGE 11
|
340 0 FQQQ WEDGE 11
|
||||||
341 2 FQQQ WEDGE 10
|
341 0 FQQQ WEDGE 10
|
||||||
342 2 FQQQ WEDGE 9
|
342 0 FQQQ WEDGE 9
|
||||||
343 2 FQQQ WEDGE 8
|
343 0 FQQQ WEDGE 8
|
||||||
344 2 FQQQ WEDGE 7
|
344 0 FQQQ WEDGE 7
|
||||||
345 2 FQQQ WEDGE 6
|
345 0 FQQQ WEDGE 6
|
||||||
346 2 FQQQ WEDGE 5
|
346 0 FQQQ WEDGE 5
|
||||||
347 2 FQQQ WEDGE 4
|
347 0 FQQQ WEDGE 4
|
||||||
348 2 FQQQ WEDGE 3
|
348 0 FQQQ WEDGE 3
|
||||||
349 2 FQQQ WEDGE 2
|
349 0 FQQQ WEDGE 2
|
||||||
350 2 FQQQ WEDGE 1
|
350 0 FQQQ WEDGE 1
|
||||||
351 2 FQQQ WEDGE 0
|
351 0 FQQQ WEDGE 0
|
||||||
352 2 FQQQ RING 0
|
352 2 FQQQ WEDGE 15
|
||||||
353 2 FQQQ RING 1
|
353 2 FQQQ WEDGE 14
|
||||||
354 2 FQQQ RING 2
|
354 2 FQQQ WEDGE 13
|
||||||
355 2 FQQQ RING 3
|
355 2 FQQQ WEDGE 12
|
||||||
356 2 FQQQ RING 4
|
356 2 FQQQ WEDGE 11
|
||||||
357 2 FQQQ RING 5
|
357 2 FQQQ WEDGE 10
|
||||||
358 2 FQQQ RING 6
|
358 2 FQQQ WEDGE 9
|
||||||
359 2 FQQQ RING 7
|
359 2 FQQQ WEDGE 8
|
||||||
360 2 FQQQ RING 8
|
360 2 FQQQ WEDGE 7
|
||||||
361 2 FQQQ RING 9
|
361 2 FQQQ WEDGE 6
|
||||||
362 2 FQQQ RING 10
|
362 2 FQQQ WEDGE 5
|
||||||
363 2 FQQQ RING 11
|
363 2 FQQQ WEDGE 4
|
||||||
364 2 FQQQ RING 12
|
364 2 FQQQ WEDGE 3
|
||||||
365 2 FQQQ RING 13
|
365 2 FQQQ WEDGE 2
|
||||||
366 2 FQQQ RING 14
|
366 2 FQQQ WEDGE 1
|
||||||
367 2 FQQQ RING 15
|
367 2 FQQQ WEDGE 0
|
||||||
368 3 FQQQ WEDGE 15
|
368 3 FQQQ WEDGE 15
|
||||||
369 3 FQQQ WEDGE 14
|
369 3 FQQQ WEDGE 14
|
||||||
370 3 FQQQ WEDGE 13
|
370 3 FQQQ WEDGE 13
|
||||||
371 3 FQQQ WEDGE 12
|
371 3 FQQQ WEDGE 12
|
||||||
372 3 FQQQ WEDGE 11
|
372 3 FQQQ WEDGE 11
|
||||||
373 3 FQQQ WEDGE 10
|
373 3 FQQQ WEDGE 10
|
||||||
374 3 FQQQ WEDGE 9
|
374 3 FQQQ WEDGE 9
|
||||||
375 3 FQQQ WEDGE 8
|
375 3 FQQQ WEDGE 8
|
||||||
376 3 FQQQ WEDGE 7
|
376 3 FQQQ WEDGE 7
|
||||||
377 3 FQQQ WEDGE 6
|
377 3 FQQQ WEDGE 6
|
||||||
378 3 FQQQ WEDGE 5
|
378 3 FQQQ WEDGE 5
|
||||||
379 3 FQQQ WEDGE 4
|
379 3 FQQQ WEDGE 4
|
||||||
380 3 FQQQ WEDGE 3
|
380 3 FQQQ WEDGE 3
|
||||||
381 3 FQQQ WEDGE 2
|
381 3 FQQQ WEDGE 2
|
||||||
382 3 FQQQ WEDGE 1
|
382 3 FQQQ WEDGE 1
|
||||||
383 3 FQQQ WEDGE 0
|
383 3 FQQQ WEDGE 0
|
||||||
384 0 blank blank 0
|
384 3 FQQQ RING 0
|
||||||
385 0 blank blank 1
|
385 3 FQQQ RING 1
|
||||||
386 0 blank blank 2
|
386 3 FQQQ RING 2
|
||||||
387 0 blank blank 3
|
387 3 FQQQ RING 3
|
||||||
388 0 blank blank 4
|
388 3 FQQQ RING 4
|
||||||
389 0 blank blank 5
|
389 3 FQQQ RING 5
|
||||||
390 0 blank blank 6
|
390 3 FQQQ RING 6
|
||||||
391 0 blank blank 7
|
391 3 FQQQ RING 7
|
||||||
392 0 blank blank 8
|
392 3 FQQQ RING 8
|
||||||
393 0 blank blank 9
|
393 3 FQQQ RING 9
|
||||||
394 0 blank blank 10
|
394 3 FQQQ RING 10
|
||||||
395 0 blank blank 11
|
395 3 FQQQ RING 11
|
||||||
396 0 blank blank 12
|
396 3 FQQQ RING 12
|
||||||
397 0 blank blank 13
|
397 3 FQQQ RING 13
|
||||||
398 0 blank blank 14
|
398 3 FQQQ RING 14
|
||||||
399 0 blank blank 15
|
399 3 FQQQ RING 15
|
||||||
400 3 FQQQ RING 0
|
400 0 blank blank 0
|
||||||
401 3 FQQQ RING 1
|
401 0 blank blank 1
|
||||||
402 3 FQQQ RING 2
|
402 0 blank blank 2
|
||||||
403 3 FQQQ RING 3
|
403 0 blank blank 3
|
||||||
404 3 FQQQ RING 4
|
404 0 blank blank 4
|
||||||
405 3 FQQQ RING 5
|
405 0 blank blank 5
|
||||||
406 3 FQQQ RING 6
|
406 0 blank blank 6
|
||||||
407 3 FQQQ RING 7
|
407 0 blank blank 7
|
||||||
408 3 FQQQ RING 8
|
408 0 blank blank 8
|
||||||
409 3 FQQQ RING 9
|
409 0 blank blank 9
|
||||||
410 3 FQQQ RING 10
|
410 0 blank blank 10
|
||||||
411 3 FQQQ RING 11
|
411 0 blank blank 11
|
||||||
412 3 FQQQ RING 12
|
412 0 blank blank 12
|
||||||
413 3 FQQQ RING 13
|
413 0 blank blank 13
|
||||||
414 3 FQQQ RING 14
|
414 0 blank blank 14
|
||||||
415 3 FQQQ RING 15
|
415 0 blank blank 15
|
||||||
416 0 blank blank 0
|
416 0 blank blank 1
|
||||||
417 0 blank blank 1
|
417 0 blank blank 2
|
||||||
418 0 blank blank 2
|
418 0 blank blank 3
|
||||||
419 0 blank blank 3
|
419 0 blank blank 4
|
||||||
420 0 blank blank 4
|
420 0 blank blank 5
|
||||||
421 0 blank blank 5
|
421 0 blank blank 6
|
||||||
422 0 blank blank 6
|
422 0 blank blank 7
|
||||||
423 0 blank blank 7
|
423 0 blank blank 8
|
||||||
424 0 blank blank 8
|
424 0 blank blank 9
|
||||||
425 0 blank blank 9
|
425 0 blank blank 10
|
||||||
426 0 blank blank 10
|
426 0 blank blank 11
|
||||||
427 0 blank blank 11
|
427 0 blank blank 12
|
||||||
428 0 blank blank 12
|
428 0 blank blank 13
|
||||||
429 0 blank blank 13
|
429 0 blank blank 14
|
||||||
430 0 blank blank 14
|
430 0 blank blank 15
|
||||||
431 0 blank blank 15
|
431 0 blank blank 0
|
||||||
432 0 blank blank 0
|
432 0 blank blank 1
|
||||||
433 0 blank blank 1
|
433 0 blank blank 2
|
||||||
434 0 blank blank 2
|
434 0 blank blank 3
|
||||||
435 0 blank blank 3
|
435 0 blank blank 4
|
||||||
436 0 blank blank 4
|
436 0 blank blank 5
|
||||||
437 0 blank blank 5
|
437 0 blank blank 6
|
||||||
438 0 blank blank 6
|
438 0 blank blank 7
|
||||||
439 0 blank blank 7
|
439 0 blank blank 8
|
||||||
440 0 blank blank 8
|
440 0 blank blank 9
|
||||||
441 0 blank blank 9
|
441 0 blank blank 10
|
||||||
442 0 blank blank 10
|
442 0 blank blank 11
|
||||||
443 0 blank blank 11
|
443 0 blank blank 12
|
||||||
444 0 blank blank 12
|
444 0 blank blank 13
|
||||||
445 0 blank blank 13
|
445 0 blank blank 14
|
||||||
446 0 blank blank 14
|
446 0 blank blank 15
|
||||||
447 0 blank blank 15
|
447 0 blank blank 15
|
||||||
448 0 PC CATHODE 16
|
448 0 PC CATHODE 16
|
||||||
449 0 PC CATHODE 17
|
449 0 PC CATHODE 17
|
||||||
450 0 PC CATHODE 18
|
450 0 PC CATHODE 18
|
||||||
451 0 PC CATHODE 19
|
451 0 PC CATHODE 19
|
||||||
452 0 PC CATHODE 20
|
452 0 PC CATHODE 20
|
||||||
453 0 PC CATHODE 21
|
453 0 PC CATHODE 21
|
||||||
454 0 PC CATHODE 22
|
454 0 PC CATHODE 22
|
||||||
455 0 PC CATHODE 23
|
455 0 PC CATHODE 23
|
||||||
457 0 PC ANODE 16
|
456 0 PC ANODE 16
|
||||||
458 0 PC ANODE 17
|
457 0 PC ANODE 17
|
||||||
459 0 PC ANODE 18
|
458 0 PC ANODE 18
|
||||||
460 0 PC ANODE 19
|
459 0 PC ANODE 19
|
||||||
461 0 PC ANODE 20
|
460 0 PC ANODE 20
|
||||||
462 0 PC ANODE 21
|
461 0 PC ANODE 21
|
||||||
463 0 PC ANODE 22
|
462 0 PC ANODE 22
|
||||||
464 0 PC ANODE 23
|
463 0 PC ANODE 23
|
||||||
465 0 PC ANODE 0
|
464 0 PC ANODE 0
|
||||||
466 0 PC ANODE 1
|
465 0 PC ANODE 1
|
||||||
467 0 PC ANODE 2
|
466 0 PC ANODE 2
|
||||||
468 0 PC ANODE 3
|
467 0 PC ANODE 3
|
||||||
469 0 PC ANODE 4
|
468 0 PC ANODE 4
|
||||||
470 0 PC ANODE 5
|
469 0 PC ANODE 5
|
||||||
471 0 PC ANODE 6
|
470 0 PC ANODE 6
|
||||||
472 0 PC ANODE 7
|
471 0 PC ANODE 7
|
||||||
473 0 PC ANODE 8
|
472 0 PC ANODE 8
|
||||||
474 0 PC ANODE 9
|
473 0 PC ANODE 9
|
||||||
475 0 PC ANODE 10
|
474 0 PC ANODE 10
|
||||||
476 0 PC ANODE 11
|
475 0 PC ANODE 11
|
||||||
477 0 PC ANODE 12
|
476 0 PC ANODE 12
|
||||||
478 0 PC ANODE 13
|
477 0 PC ANODE 13
|
||||||
479 0 PC ANODE 14
|
478 0 PC ANODE 14
|
||||||
480 0 PC ANODE 15
|
479 0 PC ANODE 15
|
||||||
481 0 PC CATHODE 0
|
480 0 PC CATHODE 0
|
||||||
482 0 PC CATHODE 1
|
481 0 PC CATHODE 1
|
||||||
483 0 PC CATHODE 2
|
482 0 PC CATHODE 2
|
||||||
484 0 PC CATHODE 3
|
483 0 PC CATHODE 3
|
||||||
485 0 PC CATHODE 4
|
484 0 PC CATHODE 4
|
||||||
486 0 PC CATHODE 5
|
485 0 PC CATHODE 5
|
||||||
487 0 PC CATHODE 6
|
486 0 PC CATHODE 6
|
||||||
488 0 PC CATHODE 7
|
487 0 PC CATHODE 7
|
||||||
489 0 PC CATHODE 8
|
488 0 PC CATHODE 8
|
||||||
490 0 PC CATHODE 9
|
489 0 PC CATHODE 9
|
||||||
491 0 PC CATHODE 10
|
490 0 PC CATHODE 10
|
||||||
492 0 PC CATHODE 11
|
491 0 PC CATHODE 11
|
||||||
493 0 PC CATHODE 12
|
492 0 PC CATHODE 12
|
||||||
494 0 PC CATHODE 13
|
493 0 PC CATHODE 13
|
||||||
495 0 PC CATHODE 14
|
494 0 PC CATHODE 14
|
||||||
496 0 PC CATHODE 15
|
495 0 PC CATHODE 15
|
||||||
|
|
15
processRun.C
Normal file
15
processRun.C
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#include "TFile.h"
|
||||||
|
#include "TString.h"
|
||||||
|
#include "TROOT.h"
|
||||||
|
#include "TTree.h"
|
||||||
|
|
||||||
|
|
||||||
|
void processRun(TString runFile){
|
||||||
|
|
||||||
|
TFile * file = new TFile(runFile);
|
||||||
|
|
||||||
|
TTree * tree = (TTree *) file->Get("tree");
|
||||||
|
|
||||||
|
tree->Process("Analyzer.C+");
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user