Skip to content

Commit a73c085

Browse files
Elros60shahor02
authored andcommitted
Add more configurables to alignment workflow
1 parent 7cf775b commit a73c085

File tree

1 file changed

+44
-12
lines changed

1 file changed

+44
-12
lines changed

Detectors/MUON/MCH/Align/src/AlignmentSpec.cxx

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -208,11 +208,21 @@ class AlignmentTask
208208

209209
auto doEvaluation = ic.options().get<bool>("do-evaluation");
210210
mAlign.SetDoEvaluation(doEvaluation);
211+
211212
// Variation range for parameters
212-
mAlign.SetAllowedVariation(0, 2.0);
213-
mAlign.SetAllowedVariation(1, 0.3);
214-
mAlign.SetAllowedVariation(2, 0.002);
215-
mAlign.SetAllowedVariation(3, 2.0);
213+
auto AllowX = ic.options().get<float>("variation-x");
214+
auto AllowY = ic.options().get<float>("variation-y");
215+
auto AllowPhi = ic.options().get<float>("variation-phi");
216+
auto AllowZ = ic.options().get<float>("variation-z");
217+
mAlign.SetAllowedVariation(0, AllowX);
218+
mAlign.SetAllowedVariation(1, AllowY);
219+
mAlign.SetAllowedVariation(2, AllowPhi);
220+
mAlign.SetAllowedVariation(3, AllowZ);
221+
222+
// Sigma XY
223+
auto SigmaX = ic.options().get<float>("sigma-x");
224+
auto SigmaY = ic.options().get<float>("sigma-y");
225+
mAlign.SetSigmaXY(SigmaX, SigmaY);
216226

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

225235
// Fix chambers
226-
auto input_fixchambers = ic.options().get<string>("fix-chamber");
227-
std::stringstream string_chambers(input_fixchambers);
228-
string_chambers >> std::ws;
229-
while (string_chambers.good()) {
230-
string substr;
231-
std::getline(string_chambers, substr, ',');
232-
LOG(info) << Form("%s%d", "Fixing chamber: ", std::stoi(substr));
233-
mAlign.FixChamber(std::stoi(substr));
236+
TString chambersString = ic.options().get<string>("fix-chamber");
237+
std::unique_ptr<TObjArray> objArray(chambersString.Tokenize(","));
238+
if (objArray->GetEntries() > 0) {
239+
for (int iVar = 0; iVar < objArray->GetEntries(); ++iVar) {
240+
LOG(info) << Form("%s%d", "Fixing chamber: ", std::stoi(objArray->At(iVar)->GetName()));
241+
mAlign.FixChamber(std::stoi(objArray->At(iVar)->GetName()));
242+
}
243+
}
244+
245+
// Fix DEs
246+
TString DEString = ic.options().get<string>("fix-de");
247+
TString MaskDEString = ic.options().get<string>("mask-fix-de");
248+
std::unique_ptr<TObjArray> objArrayDE(DEString.Tokenize(","));
249+
std::unique_ptr<TObjArray> objArrayMask(MaskDEString.Tokenize(","));
250+
if (objArrayDE->GetEntries() > 0) {
251+
if (objArrayDE->GetEntries() != objArrayMask->GetEntries()) {
252+
LOG(fatal) << "Inconsistent size of DEs and Masks!";
253+
}
254+
for (int iVar = 0; iVar < objArrayDE->GetEntries(); ++iVar) {
255+
LOG(info) << Form("%s%d%s%d", "Fixing DE: ", std::stoi(objArrayDE->At(iVar)->GetName()), " with mask: ", std::stoi(objArrayMask->At(iVar)->GetName()));
256+
mAlign.FixDetElem(std::stoi(objArrayDE->At(iVar)->GetName()), std::stoi(objArrayMask->At(iVar)->GetName()));
257+
}
234258
}
235259

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

0 commit comments

Comments
 (0)