64 <<
"Error: There are problems with creation of the configuration from XML node (in BmnGemStripStation)\n";
152 throw(
Station_Exception(
"Error in the function GetDriftGapThicknessOfModule()"));
161 throw(
Station_Exception(
"Error in the function GetFTransfGapThicknessOfModule()"));
170 throw(
Station_Exception(
"Error in the function GetSTransfGapThicknessOfModule()"));
179 throw(
Station_Exception(
"Error in the function GetInductionGapThicknessOfModule()"));
195 Modules[imodule]->ResetModuleData();
212 if (
Modules[module]->AddRealPoint(xcoord, ycoord, zcoord, px, py, pz, dEloss, refID)) {
223 Int_t points_sum = 0;
225 points_sum +=
Modules[iModule]->GetNRealPoints();
233 Modules[iModule]->CalculateStripHitIntersectionPoints();
239 Int_t points_sum = 0;
241 points_sum +=
Modules[iModule]->GetNIntersectionPoints();
249 if (
Modules[imodule]->IsPointInsideModule(xcoord, ycoord, zcoord))
312 Int_t currentModuleNum = 0;
328 Int_t module_cnt = 0;
347 TIter next(attrList);
349 while ((attr = (
TXMLAttr*)next()) !=
nullptr) {
350 if (strcmp(attr->
GetName(),
"xShift") == 0) {
353 if (strcmp(attr->
GetName(),
"yShift") == 0) {
356 if (strcmp(attr->
GetName(),
"zShift") == 0) {
359 if (strcmp(attr->
GetName(),
"driftDirection") == 0) {
360 if (strcmp(attr->
GetValue(),
"forward") == 0) {
363 if (strcmp(attr->
GetValue(),
"backward") == 0) {
368 if (strcmp(attr->
GetName(),
"gap_drift_thick") == 0) {
371 if (strcmp(attr->
GetName(),
"gap_ftransf_thick") == 0) {
374 if (strcmp(attr->
GetName(),
"gap_stransf_thick") == 0) {
377 if (strcmp(attr->
GetName(),
"gap_induct_thick") == 0) {
390 Int_t currentLayerNum = 0;
404 Int_t zone_number = 0;
412 StripNumberingDirection strip_direction =
LeftToRight;
428 TIter next(attrList);
430 while ((attr = (
TXMLAttr*)next()) !=
nullptr) {
431 if (strcmp(attr->
GetName(),
"zoneNumber") == 0) {
432 zone_number = atoi(attr->
GetValue());
434 if (strcmp(attr->
GetName(),
"type") == 0) {
435 if (strcmp(attr->
GetValue(),
"lower") == 0) {
438 if (strcmp(attr->
GetValue(),
"upper") == 0) {
442 if (strcmp(attr->
GetName(),
"stripAngle") == 0) {
445 if (strcmp(attr->
GetName(),
"pitch") == 0) {
448 if (strcmp(attr->
GetName(),
"xorig") == 0) {
451 if (strcmp(attr->
GetName(),
"yorig") == 0) {
454 if (strcmp(attr->
GetName(),
"xsize") == 0) {
457 if (strcmp(attr->
GetName(),
"ysize") == 0) {
460 if (strcmp(attr->
GetName(),
"stripDirection") == 0) {
461 if (strcmp(attr->
GetValue(),
"LeftToRight") == 0) {
464 if (strcmp(attr->
GetValue(),
"RightToLeft") == 0) {
469 if (strcmp(attr->
GetName(),
"lborder") == 0) {
470 if (strcmp(attr->
GetValue(),
"LeftTop") == 0) {
473 if (strcmp(attr->
GetValue(),
"LeftBottom") == 0) {
477 if (strcmp(attr->
GetName(),
"rborder") == 0) {
478 if (strcmp(attr->
GetValue(),
"RightTop") == 0) {
481 if (strcmp(attr->
GetValue(),
"RightBottom") == 0) {
486 if (strcmp(attr->
GetName(),
"lxborder") == 0) {
487 lx_border = -atof(attr->
GetValue());
488 useCoordinateBorders =
kTRUE;
490 if (strcmp(attr->
GetName(),
"lyborder") == 0) {
492 useCoordinateBorders =
kTRUE;
494 if (strcmp(attr->
GetName(),
"rxborder") == 0) {
495 rx_border = -atof(attr->
GetValue());
496 useCoordinateBorders =
kTRUE;
498 if (strcmp(attr->
GetName(),
"ryborder") == 0) {
500 useCoordinateBorders =
kTRUE;
510 if (useCoordinateBorders) {
524 Int_t currentDeadZoneNum = 0;
526 if (strcmp(node->
GetNodeName(),
"DeadZone") == 0) {
528 currentDeadZoneNum++;
546 Int_t currentDeadPointNum = 0;
548 if (strcmp(node->
GetNodeName(),
"DeadPoint") == 0) {
553 TIter next(attrList);
555 while ((attr = (
TXMLAttr*)next()) !=
nullptr) {
556 if (strcmp(attr->
GetName(),
"x") == 0) {
557 xpoints[currentDeadPointNum] =
560 if (strcmp(attr->
GetName(),
"y") == 0) {
566 currentDeadPointNum++;
571 dead_zone.
SetDeadZone(n_dead_points, xpoints, ypoints);
581 Int_t dead_point_cnt = 0;
584 if (strcmp(node->
GetNodeName(),
"DeadPoint") == 0) {
589 return dead_point_cnt;
Bool_t SetStripNumberingOrder(StripNumberingDirection strip_direction)
Bool_t AddDeadZone(Int_t n_points, Double_t *x_points, Double_t *y_points)
Bool_t SetStripNumberingBorders(Double_t x_left, Double_t y_left, Double_t x_right, Double_t y_right)
Int_t CountNumberOfModules(TXMLNode *node)
Double_t * XShiftOfModules
Double_t * STransfGapThicknessOfModules
BmnGemStripModule ** Modules
Double_t * FTransfGapThicknessOfModules
Double_t GetDriftGapThicknessOfModule(Int_t module_num)
Double_t GetXShiftOfModule(Int_t module_num)
Double_t GetZShiftOfModule(Int_t module_num)
Bool_t ParseModule(TXMLNode *node, Int_t iModule)
Int_t CountNProcessedPointInStation()
void ProcessPointsInStation()
BmnGemStripModule * GetModule(Int_t module_num)
Double_t * ZShiftOfModules
Double_t GetInductionGapThicknessOfModule(Int_t module_num)
Double_t GetSTransfGapThicknessOfModule(Int_t module_num)
DeadZoneOfStripLayer ParseDeadZone(TXMLNode *node, Int_t iModule)
Double_t * DriftGapThicknessOfModules
Double_t * YShiftOfModules
Int_t CountDeadZonePoints(TXMLNode *node)
Double_t * InductionGapThicknessOfModules
Int_t AddPointToStation(Double_t xcoord, Double_t ycoord, Double_t zcoord, Double_t px, Double_t py, Double_t pz, Double_t dEloss, Int_t refID)
Bool_t CreateConfigurationFromXMLNode(TXMLNode *node)
Int_t CountNAddedToStationPoints()
Int_t GetPointModuleOwnership(Double_t xcoord, Double_t ycoord, Double_t zcoord)
void DefineStationBorders()
Double_t GetFTransfGapThicknessOfModule(Int_t module_num)
Double_t GetYShiftOfModule(Int_t module_num)
BmnGemStripLayer ParseLayer(TXMLNode *node, Int_t iLayer, Int_t iModule)
virtual ~BmnGemStripStation()
Bool_t SetDeadZone(Int_t n_points, Double_t *xpoints, Double_t *ypoints)
const char * GetValue() const
const char * GetName() const override
const char * GetNodeName() const
Bool_t HasAttributes() const