@@ -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