Skip to content
Snippets Groups Projects
Commit dedbbe92 authored by nnitika's avatar nnitika
Browse files

ATLFM

parent e33ca193
No related branches found
No related tags found
No related merge requests found
Pipeline #6790093 failed
......@@ -163,27 +163,27 @@ ATLFieldManager::ATLFieldManager()
m_chordFinder(nullptr),
m_propagator(nullptr),
m_dChordDefault(0.25), //Default
m_dIntersectionDefault(0.001),
m_dIntersectionDefault(0.002),
m_dOneStepDefault(0.01),
m_stepMaxDefault(1000.), ////limit
m_dChordTracker(0.0001), //Tracker //tracker* !!?
m_dIntersectionTracker(0.001), //tracker* !!?
m_dOneStepTracker(0.001), //tracker* !!?
m_dChordTracker(0.0001), //Tracker
m_dIntersectionTracker(0.0004),
m_dOneStepTracker(0.001),
m_stepMaxTracker(100.),
m_Rmax2(1.e+4),
m_Zmax(3.e+2),
m_energyThTracker(0.0), //tracker* !!?
m_energyThTracker(0.0),
m_energyThreshold(0.0),
m_dChordBeampipe(0.002), //Beampipe
m_dIntersectionBeampipe(0.0001),
m_dIntersectionBeampipe(0.003),
m_dOneStepBeampipe(0.02),
m_stepMaxBeampipe(1000.0),
m_cfTracker(false), //tracker* !!?
m_cfBeampipe(false) { //beampipe*
m_cfTracker(false),
m_cfBeampipe(false) {
if (m_chordFinder != m_currChordFinder) {
delete m_chordFinder;
......@@ -193,7 +193,8 @@ ATLFieldManager::ATLFieldManager()
void ATLFieldManager::InitialiseForVolume(const ParameterSet &params,
atl::Field* field,
G4ChordFinder* cfDefault,
// G4ChordFinder* cfMonopole,
G4ChordFinder *cfTracker,
G4ChordFinder *cfBeamPipe,
const std::string& vol,
const std::string& fieldType,
const std::string& stepperName,
......@@ -207,28 +208,28 @@ void ATLFieldManager::InitialiseForVolume(const ParameterSet &params,
int maxLC = static_cast<int>(params.getDoubleParameter("MaximumLoopCounts")); // Assuming "MaximumLoopCounts" is the parameter name
// Tracker
m_dChordTracker = params.getDoubleParameter("DeltaChord") * CLHEP::mm; //tracker* !!?
m_dIntersectionTracker = params.getDoubleParameter("DeltaIntersection") * CLHEP::mm;
m_dOneStepTracker = params.getDoubleParameter("DeltaOneStep") * CLHEP::mm; //tracker* !!?
m_stepMaxTracker = params.getDoubleParameter("MaxStep") * CLHEP::cm;
m_dChordTracker = params.getDoubleParameter("DeltaChordTracker") * CLHEP::mm;
m_dIntersectionTracker = params.getDoubleParameter("DeltaIntersectionTracker") * CLHEP::mm;
m_dOneStepTracker = params.getDoubleParameter("DeltaOneStepTracker") * CLHEP::mm;
m_stepMaxTracker = params.getDoubleParameter("MaxStepTracker") * CLHEP::cm;
//Beampipe
m_dChordBeampipe = params.getDoubleParameter("DeltaChord") * CLHEP::mm;
m_dIntersectionBeampipe = params.getDoubleParameter("DeltaIntersection") * CLHEP::mm;
m_dOneStepBeampipe = params.getDoubleParameter("DeltaOneStep") * CLHEP::mm;
m_stepMaxBeampipe = params.getDoubleParameter("MaxStep") * CLHEP::cm;
m_dChordBeampipe = params.getDoubleParameter("DeltaChordBeampipe") * CLHEP::mm;
m_dIntersectionBeampipe = params.getDoubleParameter("DeltaIntersectionBeampipe") * CLHEP::mm;
m_dOneStepBeampipe = params.getDoubleParameter("DeltaOneStepBeampipe") * CLHEP::mm;
m_stepMaxBeampipe = params.getDoubleParameter("MaxStepBeampipe") * CLHEP::cm;
//Default
m_dChordDefault = params.getDoubleParameter("DeltaChord") * CLHEP::mm;
m_dIntersectionDefault = params.getDoubleParameter("DeltaIntersection") * CLHEP::mm;
m_dOneStepDefault = params.getDoubleParameter("DeltaOneStep") * CLHEP::mm;
m_stepMaxDefault = params.getDoubleParameter("MaxStep") * CLHEP::cm;
m_dChordDefault = params.getDoubleParameter("DeltaChordDefault") * CLHEP::mm;
m_dIntersectionDefault = params.getDoubleParameter("DeltaIntersectionDefault") * CLHEP::mm;
m_dOneStepDefault = params.getDoubleParameter("DeltaOneStepDefault") * CLHEP::mm;
m_stepMaxDefault = params.getDoubleParameter("MaxStepDefault") * CLHEP::cm;
m_energyThreshold = params.getDoubleParameter("EnergyThBeampipe") * CLHEP::GeV; //...check if ....
m_energyThTracker = params.getDoubleParameter("EnergyThTracker") * CLHEP::GeV; //tracker* !!?
m_energyThTracker = params.getDoubleParameter("EnergyThTracker") * CLHEP::GeV;
double rmax = params.getDoubleParameter("RmaxTracker") * CLHEP::mm; //tracker* !!?
double rmax = params.getDoubleParameter("Rmax") * CLHEP::mm;
m_Rmax2 = rmax * rmax;
m_Zmax = params.getDoubleParameter("ZmaxTracker") * CLHEP::mm; //tracker* !!?
m_Zmax = params.getDoubleParameter("Zmax") * CLHEP::mm;
std::cout << "is it workinggggggggg!" ">\n"
//edm::LogVerbatim("")
......@@ -241,26 +242,26 @@ void ATLFieldManager::InitialiseForVolume(const ParameterSet &params,
<< " MinimumEpsilonStep " << minEpsStep << "\n"
<< " MaximumEpsilonStep " << maxEpsStep << "\n"
<< " MinStep " << minstep << " mm\n"
<< " MaxStep Default " << m_stepMaxDefault / CLHEP::cm << " cm\n"
<< " MaxStep Tracker " << m_stepMaxTracker / CLHEP::cm << " cm\n"
<< " DeltaChord Default " << m_dChordDefault << " mm\n"
<< " DeltaOneStep Default " << m_dOneStepDefault << " mm\n"
<< " DeltaIntersection Default " << m_dIntersectionDefault << " mm\n"
<< " DeltaInterTracker " << m_dIntersectionTracker << " mm\n" //tracker* !!?
<< " MaxStepDefault " << m_stepMaxDefault / CLHEP::cm << " cm\n"
<< " MaxStepTracker " << m_stepMaxTracker / CLHEP::cm << " cm\n"
<< " DeltaChordDefault " << m_dChordDefault << " mm\n"
<< " DeltaOneStepDefault " << m_dOneStepDefault << " mm\n"
<< " DeltaIntersectionDefault " << m_dIntersectionDefault << " mm\n"
<< " DeltaInterTracker " << m_dIntersectionTracker << " mm\n"
<< " EnergyThresholdBeampipe " << m_energyThreshold / CLHEP::MeV << " MeV\n"
<< " EnergyThresholdTracker " << m_energyThTracker / CLHEP::MeV << " MeV\n" //tracker* !!?
<< " EnergyThresholdTracker " << m_energyThTracker / CLHEP::MeV << " MeV\n"
<< " DeltaChordBeampipe " << m_dChordBeampipe << " mm\n"
<< " DeltaOneStepBeampipe " << m_dOneStepBeampipe << " mm\n"
<< " DeltaIntersectionBeampipe " << m_dIntersectionBeampipe << " mm\n"
<< " MaxStepInVacuum " << m_stepMaxBeampipe / CLHEP::cm << " cm"; //beampipe*
<< " MaxStepInVacuum " << m_stepMaxBeampipe / CLHEP::cm << " cm";
// initialisation of chord finders
m_chordFinder = cfDefault; //here
m_chordFinder = cfDefault;
m_chordFinderTracker = cfTracker;
m_chordFinderBeamPipe = cfBeamPipe;
m_chordFinder->SetDeltaChord(m_dChordDefault); //check replacement of m_dChord
// m_chordFinderMonopole = cfmon; //here
// m_chordFinderMonopole->SetDeltaChord(m_dChord); //check
// initialisation of field manager
// initialisation of field manager
theField.reset(field);
SetDetectorField(field); //here
......@@ -293,7 +294,7 @@ void ATLFieldManager::InitialiseForVolume(const ParameterSet &params,
//edm::LogVerbatim("SimG4CoreApplication") << "Beampipe field integration in G4Regions:\n" << ss.str() << "\n";// edm is for CMS, modify it
}
}
/*
void ATLFieldManager::ConfigureForTrack(const G4Track *track) {
// run time parameters per track
if (track->GetKineticEnergy() > m_energyThTracker && isInsideTracker(track)) { //tracker* !!?
......@@ -301,7 +302,7 @@ void ATLFieldManager::InitialiseForVolume(const ParameterSet &params,
setChordFinderForTracker();
}
} else if (track->GetKineticEnergy() <= m_energyThreshold || isInsideVacuum(track)) { //beampipe*
} else if (track->GetKineticEnergy() <= m_energyThreshold || isInsideBeampipe(track)) { //beampipe*
if (!m_cfBeampipe) { //beampipe*
setChordFinderForBeampipe(); //beampipe*
}
......@@ -311,8 +312,28 @@ void ATLFieldManager::InitialiseForVolume(const ParameterSet &params,
setDefaultChordFinder();
}
}
bool ATLFieldManager::isInsideVacuum(const G4Track *track) { //beampipe*
*/
void ATLFieldManager::ConfigureForTrack(const G4Track *track) {
// run time parameters per track
if (track->GetKineticEnergy() > m_energyThTracker && isInsideTracker(track)) {
if (!m_cfTracker) {
setChordFinderForTracker();
std::cout << "Track is in the Tracker region with the following parameters:\n";
printParameters("Tracker");
}
} else if (track->GetKineticEnergy() <= m_energyThreshold || isInsideBeampipe(track)) {
if (!m_cfBeampipe) {
setChordFinderForBeampipe();
std::cout << "Track is in the Beampipe region with the following parameters:\n";
printParameters("Beampipe");
}
} else if (m_cfTracker || m_cfBeampipe) {
// restore defaults
setDefaultChordFinder();
}
}
/*
bool ATLFieldManager::isInsideBeampipe(const G4Track *track) { //beampipe*
if (!m_regions.empty()) {
const G4Region *reg = track->GetVolume()->GetLogicalVolume()->GetRegion();
for (auto &areg : m_regions) {
......@@ -323,40 +344,97 @@ void ATLFieldManager::InitialiseForVolume(const ParameterSet &params,
}
return false;
}
*/
bool ATLFieldManager::isInsideBeampipe(const G4Track *track) {
if (!m_regions.empty()) {
const G4Region *reg = track->GetVolume()->GetLogicalVolume()->GetRegion();
// Check if the track is in any of the specified beam pipe regions
for (auto &areg : m_regions) {
if (reg == areg) {
std::string regionName = areg->GetName();
if (regionName == "BeamPipeCentral" || regionName == "BeamPipeFwd" || regionName == "BeamPipe") {
return true;
}
}
}
}
return false;
}
bool ATLFieldManager::isInsideTracker(const G4Track *track) {
const G4Region *reg = track->GetVolume()->GetLogicalVolume()->GetRegion();
std::string regionName = reg->GetName();
// if the track is inside any of the specified tracker regions
if (regionName == "TrackerSupportRailBarrelPart1" ||
regionName == "TrackerSupportRailBarrelPart2" ||
regionName == "TrackerSupportRailBarrelPart3" ||
regionName == "TrackerSupportRailEndPart1" ||
regionName == "TrackerSupportRailEndPart2" ||
regionName == "TrackerSupportRailEndPart3") {
return true;
}
return false;
}
/*
bool ATLFieldManager::isInsideTracker(const G4Track *track) {
const G4ThreeVector &pos = track->GetPosition();
const double x = pos.x();
const double y = pos.y();
// Check if the track is within the specified tracker regions
if ((x * x + y * y < m_Rmax2) && (std::abs(pos.z()) < m_Zmax)) {
const G4Region *reg = track->GetVolume()->GetLogicalVolume()->GetRegion();
std::string regionName = reg->GetName();
if (regionName == "TrackerSupportRailBarrelPart1" ||
regionName == "TrackerSupportRailBarrelPart2" ||
regionName == "TrackerSupportRailBarrelPart3" ||
regionName == "TrackerSupportRailEndPart1" ||
regionName == "TrackerSupportRailEndPart2" ||
regionName == "TrackerSupportRailEndPart3") {
return true;
}
}
return false;
}
*/
/*
bool ATLFieldManager::isInsideTracker(const G4Track *track) { //tracker* !!?
const G4ThreeVector &pos = track->GetPosition();
const double x = pos.x();
const double y = pos.y();
return (x * x + y * y < m_Rmax2 && std::abs(pos.z()) < m_Zmax);
}
*/
void ATLFieldManager::setDefaultChordFinder() {
if (m_currChordFinder != m_chordFinder) {
m_currChordFinder = m_chordFinder;
SetChordFinder(m_currChordFinder);
}
m_currChordFinder->SetDeltaChord(m_dChordDefault);//monopole
m_currChordFinder->SetDeltaChord(m_dChordDefault);
SetDeltaOneStep(m_dOneStepDefault);
SetDeltaIntersection(m_dIntersectionDefault);
m_propagator->SetLargestAcceptableStep(m_stepMaxDefault);
m_cfBeampipe = m_cfTracker = false; //tracker* !!? //beampipe*
m_cfBeampipe = m_cfTracker = false;
}
void ATLFieldManager::setChordFinderForTracker() { //tracker* !!?
void ATLFieldManager::setChordFinderForTracker() {
if (m_currChordFinder != m_chordFinder) {
m_currChordFinder = m_chordFinder;
SetChordFinder(m_currChordFinder);
}
m_currChordFinder->SetDeltaChord(m_dChordTracker); //tracker* !!?
SetDeltaOneStep(m_dOneStepTracker); //tracker* !!?
SetDeltaIntersection(m_dIntersectionTracker); //tracker* !!?
m_currChordFinder->SetDeltaChord(m_dChordTracker);
SetDeltaOneStep(m_dOneStepTracker);
SetDeltaIntersection(m_dIntersectionTracker);
m_propagator->SetLargestAcceptableStep(m_stepMaxTracker);
m_cfBeampipe = false; //beampipe*
m_cfTracker = true; //tracker* !!?
m_cfBeampipe = false;
m_cfTracker = true;
}
void ATLFieldManager::setChordFinderForBeampipe() { //beampipe*
void ATLFieldManager::setChordFinderForBeampipe() {
if (m_currChordFinder != m_chordFinder) {
m_currChordFinder = m_chordFinder;
SetChordFinder(m_currChordFinder);
......@@ -366,5 +444,14 @@ void ATLFieldManager::InitialiseForVolume(const ParameterSet &params,
SetDeltaIntersection(m_dIntersectionBeampipe);
m_propagator->SetLargestAcceptableStep(m_stepMaxBeampipe);
m_cfBeampipe = true;
m_cfTracker = false; //tracker* !!?
m_cfTracker = false;
}
void ATLFieldManager::printParameters(const std::string& region) {
std::cout << "DeltaChord: " << (region == "Tracker" ? m_dChordTracker : m_dChordBeampipe) << " mm\n";
std::cout << "DeltaOneStep: " << (region == "Tracker" ? m_dOneStepTracker : m_dOneStepBeampipe) << " mm\n";
std::cout << "DeltaIntersection: " << (region == "Tracker" ? m_dIntersectionTracker : m_dIntersectionBeampipe) << " mm\n";
std::cout << "MaxStep: " << (region == "Tracker" ? m_stepMaxTracker : m_stepMaxBeampipe) / CLHEP::cm << " cm\n";
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment