Public Member Functions | |
BLVirtualDetectorNTuple (G4String type, G4String category, G4String _name, G4VPhysicalVolume *pv, int _noSingles, G4String filename, G4String _require, BLCoordinateType _coordinateType, int _kill) | |
constructor. | |
bool | needsReference () |
void | UserSteppingAction (const G4Step *step) |
UserSteppingAction() from BLManager::SteppingAction. | |
Private Attributes | |
G4String | name |
G4VPhysicalVolume * | thisVol |
BLCoordinateType | coordinateType |
int | noSingles |
G4String | require |
int | kill |
BLTrackNTuple * | ntuple |
bool | verbose |
Friends | |
class | BLCMDvirtualdetector |
BLVirtualDetectorNTuple::BLVirtualDetectorNTuple | ( | G4String | type, | |
G4String | category, | |||
G4String | _name, | |||
G4VPhysicalVolume * | pv, | |||
int | _noSingles, | |||
G4String | filename, | |||
G4String | _require, | |||
BLCoordinateType | _coordinateType, | |||
int | _kill | |||
) |
constructor.
References coordinateType, BLTrackNTuple::create(), BLManager::getObject(), BLManager::getSteppingVerbose(), kill, name, noSingles, ntuple, require, thisVol, and verbose.
00390 { 00391 name = _name; 00392 thisVol = pv; 00393 noSingles = _noSingles; 00394 coordinateType = _coordinateType; 00395 require = _require; 00396 ntuple = BLTrackNTuple::create(type,category,name,filename, 00397 coordinateType,require,noSingles); 00398 kill = _kill; 00399 verbose = BLManager::getObject()->getSteppingVerbose() > 0; 00400 }
bool BLVirtualDetectorNTuple::needsReference | ( | ) | [inline] |
References BLTrackNTuple::needsReference(), and ntuple.
Referenced by BLCMDvirtualdetector::construct().
00161 { return ntuple ? ntuple->needsReference() : false; }
void BLVirtualDetectorNTuple::UserSteppingAction | ( | const G4Step * | step | ) | [virtual] |
UserSteppingAction() from BLManager::SteppingAction.
Implements BLManager::SteppingAction.
References BLTrackNTuple::appendTrack(), BEAM, BLCOORD_REFERENCE, coordinateType, BLManager::getObject(), BLManager::getState(), kill, name, ntuple, SPECIAL, thisVol, and verbose.
00403 { 00404 if(BLManager::getObject()->getState() == SPECIAL) return; 00405 00406 // only use reference coordinates when they are valid 00407 BLManagerState state = BLManager::getObject()->getState(); 00408 if(coordinateType == BLCOORD_REFERENCE && state != BEAM) return; 00409 00410 // get basic physical-volume info 00411 G4StepPoint *prePoint = step->GetPreStepPoint(); 00412 if(!prePoint) return; 00413 G4VPhysicalVolume *preVol = prePoint->GetPhysicalVolume(); 00414 if(!preVol) return; 00415 G4StepPoint *postPoint = step->GetPostStepPoint(); 00416 if(!postPoint) return; 00417 G4VPhysicalVolume *postVol = postPoint->GetPhysicalVolume(); 00418 if(!postVol) return; 00419 00420 // return if not entering thisVol 00421 if(preVol == postVol || postVol != thisVol) return; 00422 00423 ntuple->appendTrack(step->GetTrack()); 00424 00425 if(kill) { 00426 step->GetTrack()->SetTrackStatus(fStopAndKill); 00427 if(verbose) printf("Track killed by '%s' with kill=1\n", 00428 name.c_str()); 00429 } 00430 }
friend class BLCMDvirtualdetector [friend] |
G4String BLVirtualDetectorNTuple::name [private] |
Referenced by BLVirtualDetectorNTuple(), and UserSteppingAction().
G4VPhysicalVolume* BLVirtualDetectorNTuple::thisVol [private] |
Referenced by BLVirtualDetectorNTuple(), and UserSteppingAction().
Referenced by BLVirtualDetectorNTuple(), and UserSteppingAction().
int BLVirtualDetectorNTuple::noSingles [private] |
Referenced by BLVirtualDetectorNTuple().
G4String BLVirtualDetectorNTuple::require [private] |
Referenced by BLVirtualDetectorNTuple().
int BLVirtualDetectorNTuple::kill [private] |
Referenced by BLVirtualDetectorNTuple(), and UserSteppingAction().
BLTrackNTuple* BLVirtualDetectorNTuple::ntuple [private] |
Referenced by BLVirtualDetectorNTuple(), needsReference(), and UserSteppingAction().
bool BLVirtualDetectorNTuple::verbose [private] |
Referenced by BLVirtualDetectorNTuple(), and UserSteppingAction().