AlcapDAQ  1
Functions | Variables
MStoppedMuonsPerBlock.cpp File Reference
#include <stdlib.h>
#include <string>
#include <map>
#include <TH1I.h>
#include "TGlobalData.h"
#include "TSetupData.h"

Go to the source code of this file.

Functions

INT MStoppedMuonsPerBlock_init (void)
 
INT MStoppedMuonsPerBlock (EVENT_HEADER *, void *)
 

Variables

HNDLE hDB
 
TGlobalDatagData
 
TSetupDatagSetup
 
static TH1I * hNumberOfStoppedMuonsPerBlock
 
static const double tw_muveto = 100.
 
static const double tw_sc = 100.
 
static const double tw_si = 100.
 
ANA_MODULE MStoppedMuonsPerBlock_module
 

Function Documentation

INT MStoppedMuonsPerBlock ( EVENT_HEADER *  pheader,
void *  pevent 
)

Definition at line 69 of file MStoppedMuonsPerBlock.cpp.

References TSetupData::fBankToDetectorMap, TGlobalData::fPulseIslandToChannelMap, hNumberOfStoppedMuonsPerBlock, SUCCESS, tw_muveto, tw_sc, and tw_si.

70 {
71 
72  unsigned int nStopped = 0;
73 
74  // We assume the existance of all necessary TPI vectors
75  std::map< std::string, std::vector<TPulseIsland*> >& tpis = gData->fPulseIslandToChannelMap;
76  std::map< std::string, std::string>& dets = gSetup->fBankToDetectorMap;
77  std::map< std::string, std::vector<TPulseIsland*> >::iterator iBank;
78  std::vector<TPulseIsland*> *musc_pulses = NULL, *muveto_pulses = NULL, *scr_pulses = NULL, *scl_pulses = NULL;
79  std::vector< std::vector<TPulseIsland*>* > sir_pulses, sil_pulses;
80  std::vector<TPulseIsland*>::iterator c_musc_pulse, c_muveto_pulse, c_scr_pulse, c_scl_pulse;
81  std::vector< std::vector<TPulseIsland*>::iterator > c_sir_pulse, c_sil_pulse;
82 
83  std::string cDet, cBank;
84  int nSiL = 0, nSiR = 0;
85  for (iBank = tpis.begin(); iBank != tpis.end(); iBank++) {
86  cBank = iBank->first;
87  cDet = dets[cBank];
88  if (cDet == "muSc") {
89  musc_pulses = &tpis.at(cBank);
90  c_musc_pulse = musc_pulses->begin();
91  } else if (cDet == "muVeto"){
92  muveto_pulses = &tpis.at(cBank);
93  c_muveto_pulse = muveto_pulses->begin();
94  } else if (cDet == "ScR") {
95  scr_pulses = &tpis.at(cBank);
96  c_scr_pulse = scr_pulses->begin();
97  } else if (cDet == "ScL") {
98  scl_pulses = &tpis.at(cBank);
99  c_scl_pulse = scl_pulses->begin();
100  } else if (cDet.substr(0,2) == "Si" && cDet.substr(cDet.size()-5,4) == "fast") {
101  if(cDet[2] == 'R') {
102  sir_pulses.push_back(&tpis.at(cBank));
103  c_sir_pulse.push_back(std::vector<TPulseIsland*>::iterator());
104  nSiR++;
105  } else {
106  sil_pulses.push_back(&tpis.at(cBank));
107  c_sil_pulse.push_back(std::vector<TPulseIsland*>::iterator());
108  nSiL++;
109  }
110  }
111  }
112 
113 
114  double cTime = 0;
115  for (; c_musc_pulse != musc_pulses->end(); c_musc_pulse++) {
116  cTime = (*c_musc_pulse)->GetPulseTime();
117 
118  while ((*c_muveto_pulse)->GetPulseTime() < cTime)
119  c_muveto_pulse++;
120  while ((*c_scl_pulse)->GetPulseTime() < cTime)
121  c_scl_pulse++;
122  while ((*c_scr_pulse)->GetPulseTime() < cTime)
123  c_scr_pulse++;
124  for(int iSiR = 0; iSiR < nSiR; iSiR++)
125  while ((*c_sir_pulse[iSiR])->GetPulseTime() < cTime)
126  c_sir_pulse[iSiR]++;
127  for (int iSiL = 0; iSiL < nSiL; iSiL++)
128  while ((*c_sil_pulse[iSiL])->GetPulseTime() < cTime)
129  c_sil_pulse[iSiL]++;
130 
131  if ((*c_muveto_pulse)->GetPulseTime() - cTime < tw_muveto)
132  continue;
133  if ((*c_scr_pulse)->GetPulseTime() - cTime < tw_sc)
134  continue;
135  if ((*c_scl_pulse)->GetPulseTime() - cTime < tw_sc)
136  continue;
137  for (int iSiR = 0; iSiR < nSiR; iSiR++)
138  if ((*c_sir_pulse[iSiR])->GetPulseTime() - cTime < tw_si)
139  continue;
140  for (int iSiL = 0; iSiL < nSiL; iSiL++)
141  if ((*c_sil_pulse[iSiL])->GetPulseTime() - cTime < tw_si)
142  continue;
143 
144  nStopped++;
145  }
146 
147  hNumberOfStoppedMuonsPerBlock->Fill(nStopped);
148 
149  return SUCCESS;
150 }
INT MStoppedMuonsPerBlock_init ( )

This method initializes histograms.

Definition at line 61 of file MStoppedMuonsPerBlock.cpp.

References hNumberOfStoppedMuonsPerBlock, and SUCCESS.

62 {
63 
64  hNumberOfStoppedMuonsPerBlock = new TH1I("hNumberOfStoppedMuons","Number of (Possibly) Stopped Muons",2000,0.,2000.);
65  return SUCCESS;
66 }

Variable Documentation

TGlobalData* gData

Definition at line 54 of file analyzer.cpp.

TSetupData* gSetup

Definition at line 55 of file analyzer.cpp.

HNDLE hDB

Definition at line 11 of file mucap_compress.cpp.

TH1I* hNumberOfStoppedMuonsPerBlock
static

Definition at line 37 of file MStoppedMuonsPerBlock.cpp.

Referenced by MStoppedMuonsPerBlock(), and MStoppedMuonsPerBlock_init().

ANA_MODULE MStoppedMuonsPerBlock_module
Initial value:
=
{
"MStoppedMuonsPerBlock",
"John R Quirk",
NULL,
NULL,
NULL,
NULL,
0,
NULL,
}

Definition at line 45 of file MStoppedMuonsPerBlock.cpp.

const double tw_muveto = 100.
static

Definition at line 40 of file MStoppedMuonsPerBlock.cpp.

Referenced by MStoppedMuonsPerBlock().

const double tw_sc = 100.
static

Definition at line 41 of file MStoppedMuonsPerBlock.cpp.

Referenced by MStoppedMuonsPerBlock().

const double tw_si = 100.
static

Definition at line 42 of file MStoppedMuonsPerBlock.cpp.

Referenced by MStoppedMuonsPerBlock().