Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add more configurables to alignment workflow #13935

Merged
merged 1 commit into from
Feb 4, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 44 additions & 12 deletions Detectors/MUON/MCH/Align/src/AlignmentSpec.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -208,11 +208,21 @@ class AlignmentTask

auto doEvaluation = ic.options().get<bool>("do-evaluation");
mAlign.SetDoEvaluation(doEvaluation);

// Variation range for parameters
mAlign.SetAllowedVariation(0, 2.0);
mAlign.SetAllowedVariation(1, 0.3);
mAlign.SetAllowedVariation(2, 0.002);
mAlign.SetAllowedVariation(3, 2.0);
auto AllowX = ic.options().get<float>("variation-x");
auto AllowY = ic.options().get<float>("variation-y");
auto AllowPhi = ic.options().get<float>("variation-phi");
auto AllowZ = ic.options().get<float>("variation-z");
mAlign.SetAllowedVariation(0, AllowX);
mAlign.SetAllowedVariation(1, AllowY);
mAlign.SetAllowedVariation(2, AllowPhi);
mAlign.SetAllowedVariation(3, AllowZ);

// Sigma XY
auto SigmaX = ic.options().get<float>("sigma-x");
auto SigmaY = ic.options().get<float>("sigma-y");
mAlign.SetSigmaXY(SigmaX, SigmaY);

// Configuration for track fitter
const auto& trackerParam = TrackerParam::Instance();
Expand All @@ -223,14 +233,28 @@ class AlignmentTask
mImproveCutChi2 = 2. * trackerParam.sigmaCutForImprovement * trackerParam.sigmaCutForImprovement;

// Fix chambers
auto input_fixchambers = ic.options().get<string>("fix-chamber");
std::stringstream string_chambers(input_fixchambers);
string_chambers >> std::ws;
while (string_chambers.good()) {
string substr;
std::getline(string_chambers, substr, ',');
LOG(info) << Form("%s%d", "Fixing chamber: ", std::stoi(substr));
mAlign.FixChamber(std::stoi(substr));
TString chambersString = ic.options().get<string>("fix-chamber");
std::unique_ptr<TObjArray> objArray(chambersString.Tokenize(","));
if (objArray->GetEntries() > 0) {
for (int iVar = 0; iVar < objArray->GetEntries(); ++iVar) {
LOG(info) << Form("%s%d", "Fixing chamber: ", std::stoi(objArray->At(iVar)->GetName()));
mAlign.FixChamber(std::stoi(objArray->At(iVar)->GetName()));
}
}

// Fix DEs
TString DEString = ic.options().get<string>("fix-de");
TString MaskDEString = ic.options().get<string>("mask-fix-de");
std::unique_ptr<TObjArray> objArrayDE(DEString.Tokenize(","));
std::unique_ptr<TObjArray> objArrayMask(MaskDEString.Tokenize(","));
if (objArrayDE->GetEntries() > 0) {
if (objArrayDE->GetEntries() != objArrayMask->GetEntries()) {
LOG(fatal) << "Inconsistent size of DEs and Masks!";
}
for (int iVar = 0; iVar < objArrayDE->GetEntries(); ++iVar) {
LOG(info) << Form("%s%d%s%d", "Fixing DE: ", std::stoi(objArrayDE->At(iVar)->GetName()), " with mask: ", std::stoi(objArrayMask->At(iVar)->GetName()));
mAlign.FixDetElem(std::stoi(objArrayDE->At(iVar)->GetName()), std::stoi(objArrayMask->At(iVar)->GetName()));
}
}

doMatched = ic.options().get<bool>("matched");
Expand Down Expand Up @@ -902,6 +926,14 @@ o2::framework::DataProcessorSpec getAlignmentSpec(bool disableCCDB)
{"matched", VariantType::Bool, false, {"Switch for using MCH-MID matched tracks"}},
{"fix-chamber", VariantType::String, "", {"Chamber fixing, ex 1,2,3"}},
{"use-record", VariantType::Bool, false, {"Option for directly using record in alignment if provided"}},
{"variation-x", VariantType::Float, 2.0, {"Allowed variation for x axis in cm"}},
{"variation-y", VariantType::Float, 0.3, {"Allowed variation for y axis in cm"}},
{"variation-phi", VariantType::Float, 0.002, {"Allowed variation for phi axis in rad"}},
{"variation-z", VariantType::Float, 2.0, {"Allowed variation for z axis in cm"}},
{"sigma-x", VariantType::Float, 1000.0, {"Sigma cut along X"}},
{"sigma-y", VariantType::Float, 1000.0, {"Sigma cut along Y"}},
{"fix-de", VariantType::String, "", {"DE fixing, ex 101,1019"}},
{"mask-fix-de", VariantType::String, "", {"Mask for DE d.o.f fixing, ex 0,2,4"}},
{"output", VariantType::String, "Alignment", {"Option for name of output file"}}}};
}

Expand Down