Skip to content

Commit 0d2a395

Browse files
committedSep 21, 2017
create WCSim-g410-no-trigger-trigger
1 parent 1008503 commit 0d2a395

7 files changed

+77
-0
lines changed
 

‎WCSim.mac

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
#choose the Trigger & Digitizer type (and options)
7070
/DAQ/Digitizer SKI
7171
/DAQ/Trigger NDigits
72+
#/DAQ/Trigger NoTrigger
7273

7374
#grab the other DAQ options (thresholds, timing windows, etc.)
7475
/control/execute macros/daq.mac

‎include/WCSimEnumerations.hh

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ typedef enum ETriggerType {
77
kTriggerUndefined = -1,
88
kTriggerNDigits,
99
kTriggerNDigitsTest,
10+
kTriggerNoTrig,
1011
kTriggerFailure // this should always be the last entry (for looping)
1112
} TriggerType_t;
1213

‎include/WCSimWCTrigger.hh

+15
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ protected:
129129
* for testing purposes. Triggers issued in this mode have type kTriggerNDigitsTest
130130
*/
131131
void AlgNDigits(WCSimWCDigitsCollection* WCDCPMT, bool remove_hits, bool test=false);
132+
void AlgNoTrigger(WCSimWCDigitsCollection* WCDCPMT, bool remove_hits, bool test=false);
132133

133134
WCSimWCTriggeredDigitsCollection* DigitsCollection; ///< The main output of the class - collection of digits in the trigger window
134135
std::map<int,int> DigiHitMap; ///< Keeps track of the PMTs that have been added to the output WCSimWCTriggeredDigitsCollection
@@ -324,6 +325,20 @@ private:
324325
int GetDefaultNDigitsPostTriggerWindow() { return 950; } ///< SK SLE trigger window ~+950
325326
};
326327

328+
class WCSimWCTriggerNoTrigger : public WCSimWCTriggerBase
329+
{
330+
public:
331+
332+
///Create WCSimWCTriggerNoTrigger instance with knowledge of the detector and DAQ options
333+
WCSimWCTriggerNoTrigger(G4String name, WCSimDetectorConstruction*, WCSimWCDAQMessenger*);
334+
335+
~WCSimWCTriggerNoTrigger();
336+
337+
private:
338+
///Calls the workhorse of this class: AlgNoTrigger
339+
void DoTheWork(WCSimWCDigitsCollection* WCDCPMT);
340+
341+
};
327342

328343
/**
329344
* \class WCSimWCTriggerNDigits2

‎src/WCSimEnumerations.cc

+3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ std::string WCSimEnumerations::EnumAsString(TriggerType_t t)
2828
case (kTriggerFailure) :
2929
return "No_trigger_passed";
3030
break;
31+
case (kTriggerNoTrig) :
32+
return "NoTrigger";
33+
break;
3134
default:
3235
return "";
3336
break;

‎src/WCSimEventAction.cc

+4
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ void WCSimEventAction::CreateDAQInstances()
113113
WCSimWCTriggerNDigits2* WCTM = new WCSimWCTriggerNDigits2("WCReadout", detectorConstructor, DAQMessenger);
114114
DMman->AddNewModule(WCTM);
115115
}
116+
else if(TriggerChoice == "NoTrigger") {
117+
WCSimWCTriggerNoTrigger* WCTM = new WCSimWCTriggerNoTrigger("WCReadout", detectorConstructor, DAQMessenger);
118+
DMman->AddNewModule(WCTM);
119+
}
116120
else {
117121
G4cerr << "Unknown TriggerChoice " << TriggerChoice << G4endl;
118122
exit(-1);

‎src/WCSimWCDAQMessenger.cc

+2
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,13 @@ WCSimWCDAQMessenger::WCSimWCDAQMessenger(WCSimEventAction* eventaction) :
4141
TriggerChoice->SetGuidance("Available choices are:\n"
4242
"NDigits\n"
4343
"NDigits2\n"
44+
"NoTrigger\n"
4445
);
4546
TriggerChoice->SetParameterName("Trigger", false);
4647
TriggerChoice->SetCandidates(
4748
"NDigits "
4849
"NDigits2 "
50+
"NoTrigger "
4951
);
5052
TriggerChoice->AvailableForStates(G4State_PreInit, G4State_Idle);
5153
TriggerChoice->SetDefaultValue(defaultTrigger);

‎src/WCSimWCTrigger.cc

+51
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ void WCSimWCTriggerBase::GetVariables()
9696
int WCSimWCTriggerBase::GetPreTriggerWindow(TriggerType_t t)
9797
{
9898
switch(t) {
99+
case kTriggerNoTrig:
100+
return 0;
101+
break;
99102
case kTriggerNDigits:
100103
case kTriggerNDigitsTest:
101104
return ndigitsPreTriggerWindow;
@@ -114,6 +117,9 @@ int WCSimWCTriggerBase::GetPreTriggerWindow(TriggerType_t t)
114117
int WCSimWCTriggerBase::GetPostTriggerWindow(TriggerType_t t)
115118
{
116119
switch(t) {
120+
case kTriggerNoTrig:
121+
return WCSimWCTriggerBase::LongTime;
122+
break;
117123
case kTriggerNDigits:
118124
case kTriggerNDigitsTest:
119125
return ndigitsPostTriggerWindow;
@@ -409,6 +415,25 @@ void WCSimWCTriggerBase::FillDigitsCollection(WCSimWCDigitsCollection* WCDCPMT,
409415

410416
}
411417

418+
void WCSimWCTriggerBase::AlgNoTrigger(WCSimWCDigitsCollection* WCDCPMT, bool remove_hits, bool test) {
419+
420+
//Does not doanything, just writes out all hits
421+
TriggerType_t this_triggerType = kTriggerNoTrig;
422+
std::vector<Float_t> triggerinfo;
423+
Int_t Ndigits=0;
424+
for (G4int i = 0 ; i < WCDCPMT->entries() ; i++) {
425+
for ( G4int ip = 0 ; ip < (*WCDCPMT)[i]->GetTotalPe() ; ip++) {
426+
Ndigits++;
427+
}
428+
}
429+
triggerinfo.push_back(Ndigits);
430+
TriggerTypes.push_back(kTriggerNoTrig);
431+
TriggerInfos.push_back(triggerinfo);
432+
TriggerTimes.push_back(0.);
433+
434+
FillDigitsCollection(WCDCPMT, remove_hits, this_triggerType);
435+
}
436+
412437
void WCSimWCTriggerBase::SaveOptionsToOutput(WCSimRootOptions * wcopt)
413438
{
414439
wcopt->SetTriggerClassName(triggerClassName);;
@@ -513,6 +538,32 @@ void WCSimWCTriggerNDigits::DoTheWork(WCSimWCDigitsCollection* WCDCPMT) {
513538
AlgNDigits(WCDCPMT, remove_hits);
514539
}
515540

541+
// *******************************************
542+
// DERIVED CLASS
543+
// *******************************************
544+
545+
546+
WCSimWCTriggerNoTrigger::WCSimWCTriggerNoTrigger(G4String name,
547+
WCSimDetectorConstruction* myDetector,
548+
WCSimWCDAQMessenger* myMessenger)
549+
:WCSimWCTriggerBase(name, myDetector, myMessenger)
550+
{
551+
triggerClassName = "NoTrigger";
552+
}
553+
554+
WCSimWCTriggerNoTrigger::~WCSimWCTriggerNoTrigger()
555+
{
556+
}
557+
558+
void WCSimWCTriggerNoTrigger::DoTheWork(WCSimWCDigitsCollection* WCDCPMT) {
559+
//Apply an NDigits trigger
560+
bool remove_hits = false;
561+
SetMultiDigitsPerTrigger(true);
562+
SetSaveFailuresMode(0);
563+
AlgNoTrigger(WCDCPMT, remove_hits);
564+
}
565+
566+
516567
// *******************************************
517568
// DERIVED CLASS
518569
// *******************************************

0 commit comments

Comments
 (0)
Please sign in to comment.