Skip to content

Commit 5e5ffcd

Browse files
authored
[PWGDQ] Add more configurables for alignment setup (#9607)
1 parent 26d9dd1 commit 5e5ffcd

File tree

1 file changed

+44
-13
lines changed

1 file changed

+44
-13
lines changed

PWGDQ/Tasks/mchAlignRecord.cxx

Lines changed: 44 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,23 @@ struct mchAlignRecordTask {
111111
Configurable<bool> fDoNewGeo{"do-realign", false, "Transform to a given new geometry"};
112112
Configurable<bool> fDoEvaluation{"do-evaluation", false, "Enable storage of residuals"};
113113
Configurable<string> fConfigNewGeoFile{"new-geo", "o2sim_geometry-aligned.root", "New geometry for transformation"};
114+
Configurable<double> fAllowedVarX{"variation-x", 2.0, "Allowed variation for x axis in cm"};
115+
Configurable<double> fAllowedVarY{"variation-y", 0.3, "Allowed variation for y axis in cm"};
116+
Configurable<double> fAllowedVarPhi{"variation-phi", 0.002, "Allowed variation for phi axis in rad"};
117+
Configurable<double> fAllowedVarZ{"variation-z", 2.0, "Allowed variation for z axis in cm"};
118+
Configurable<double> cfgSigmaX{"cfgSigmaX", 1000., "Sigma cut along X"};
119+
Configurable<double> cfgSigmaY{"cfgSigmaY", 1000., "Sigma cut along Y"};
120+
Configurable<double> cfgChamberResolutionX{"cfgChamberResolutionX", 0.04, "Chamber resolution along X configuration for refit"}; // 0.4cm pp, 0.2cm PbPb
121+
Configurable<double> cfgChamberResolutionY{"cfgChamberResolutionY", 0.04, "Chamber resolution along Y configuration for refit"}; // 0.4cm pp, 0.2cm PbPb
122+
Configurable<double> cfgSigmaCutImprove{"cfgSigmaCutImprove", 6., "Sigma cut for track improvement"};
123+
struct : ConfigurableGroup {
124+
Configurable<std::vector<int>> cfgDetElem{"cfgDetElem",
125+
{},
126+
"List of DetElem to be fixed"};
127+
Configurable<std::vector<int>> cfgParMask{"cfgParMask",
128+
{},
129+
"List of param mask for d.o.f to be fixed"};
130+
} fFixDetElem;
114131

115132
void init(InitContext& ic)
116133
{
@@ -122,27 +139,41 @@ struct mchAlignRecordTask {
122139

123140
// Configuration for alignment object
124141
mAlign.SetDoEvaluation(fDoEvaluation.value);
125-
mAlign.SetAllowedVariation(0, 2.0);
126-
mAlign.SetAllowedVariation(1, 0.3);
127-
mAlign.SetAllowedVariation(2, 0.002);
128-
mAlign.SetAllowedVariation(3, 2.0);
142+
mAlign.SetAllowedVariation(0, fAllowedVarX.value);
143+
mAlign.SetAllowedVariation(1, fAllowedVarY.value);
144+
mAlign.SetAllowedVariation(2, fAllowedVarPhi.value);
145+
mAlign.SetAllowedVariation(3, fAllowedVarZ.value);
146+
mAlign.SetSigmaXY(cfgSigmaX.value, cfgSigmaY.value);
129147

130148
// Configuration for track fitter
131149
const auto& trackerParam = o2::mch::TrackerParam::Instance();
132150
trackFitter.setBendingVertexDispersion(trackerParam.bendingVertexDispersion);
133-
trackFitter.setChamberResolution(trackerParam.chamberResolutionX, trackerParam.chamberResolutionY);
151+
trackFitter.setChamberResolution(cfgChamberResolutionX.value, cfgChamberResolutionY.value);
134152
trackFitter.smoothTracks(true);
135153
trackFitter.useChamberResolution();
136-
mImproveCutChi2 = 2. * trackerParam.sigmaCutForImprovement * trackerParam.sigmaCutForImprovement;
154+
mImproveCutChi2 = 2. * cfgSigmaCutImprove.value * cfgSigmaCutImprove.value;
137155

138156
// Configuration for chamber fixing
139-
auto chambers = fFixChamber.value;
140-
for (std::size_t i = 0; i < chambers.length(); ++i) {
141-
if (chambers[i] == ',')
142-
continue;
143-
int chamber = chambers[i] - '0';
144-
LOG(info) << Form("%s%d", "Fixing chamber: ", chamber);
145-
mAlign.FixChamber(chamber);
157+
TString chambersString = fFixChamber.value;
158+
std::unique_ptr<TObjArray> objArray(chambersString.Tokenize(","));
159+
if (objArray->GetEntries() > 0) {
160+
for (int iVar = 0; iVar < objArray->GetEntries(); ++iVar) {
161+
LOG(info) << Form("%s%d", "Fixing chamber: ", std::stoi(objArray->At(iVar)->GetName()));
162+
mAlign.FixChamber(std::stoi(objArray->At(iVar)->GetName()));
163+
}
164+
}
165+
166+
// Configuration for DE fixing with given axes
167+
auto DEs = fFixDetElem.cfgDetElem.value;
168+
auto Masks = fFixDetElem.cfgParMask.value;
169+
if (DEs.size() > 0) {
170+
if (DEs.size() != Masks.size()) {
171+
LOG(fatal) << "Inconsistent size of mask list.";
172+
}
173+
for (int i = 0; i < static_cast<int>(DEs.size()); i++) {
174+
LOG(info) << Form("%s%d%s%d", "Fixing DE: ", DEs.at(i), " with mask: ", Masks.at(i));
175+
mAlign.FixDetElem(DEs.at(i), Masks.at(i));
176+
}
146177
}
147178

148179
// Init for output saving

0 commit comments

Comments
 (0)