|
17 | 17 | #include <vector> |
18 | 18 |
|
19 | 19 | #include <RStringView.h> |
20 | | -#include <TArrayD.h> |
21 | 20 | #include <TGeoMatrix.h> |
22 | | -#include <TList.h> |
23 | 21 | #include <TNamed.h> |
24 | 22 | #include <TParticle.h> |
25 | 23 | #include <TVector3.h> |
@@ -154,7 +152,7 @@ class Geometry |
154 | 152 | /// \param[out] absId absolute ID number |
155 | 153 | /// \param[out] vimpact TVector3 of impact coordinates? |
156 | 154 | /// |
157 | | - void ImpactOnEmcal(TVector3 vtx, Double_t theta, Double_t phi, Int_t& absId, TVector3& vimpact) const; |
| 155 | + void ImpactOnEmcal(const Point3D<double> &vtx, Double_t theta, Double_t phi, Int_t& absId, Point3D<double>& vimpact) const; |
158 | 156 |
|
159 | 157 | /// |
160 | 158 | /// Checks whether point is inside the EMCal volume |
@@ -238,10 +236,10 @@ class Geometry |
238 | 236 | Double_t GetPhiCenterOfSMSec(Int_t nsupmod) const; |
239 | 237 | Float_t GetSuperModulesPar(Int_t ipar) const { return mParSM[ipar]; } |
240 | 238 | // |
241 | | - Int_t GetSMType(Int_t nSupMod) const |
| 239 | + EMCALSMType GetSMType(Int_t nSupMod) const |
242 | 240 | { |
243 | 241 | if (nSupMod > mNumberOfSuperModules) |
244 | | - return -1; |
| 242 | + return NOT_EXISTENT; |
245 | 243 | return mEMCSMSystem[nSupMod]; |
246 | 244 | } |
247 | 245 |
|
@@ -458,94 +456,48 @@ class Geometry |
458 | 456 | /// \return cell absolute ID number |
459 | 457 | Int_t GetAbsCellIdFromCellIndexes(Int_t nSupMod, Int_t iphi, Int_t ieta) const; |
460 | 458 |
|
461 | | - /// |
462 | | - /// Online mapping and numbering is the same for EMCal and DCal SMs but: |
463 | | - /// - DCal odd SM (13,15,17) has online cols: 16-47; offline cols 0-31. |
464 | | - /// - Even DCal SMs have the same numbering online and offline 0-31. |
465 | | - /// - DCal 1/3 SM (18,19), online rows 16-23; offline rows 0-7 |
466 | | - /// |
467 | | - /// Here shift the online cols or rows depending on the |
468 | | - /// super-module number to match the offline mapping. |
469 | | - /// |
470 | | - /// \param sm: super module number of the channel/cell |
471 | | - /// \param iphi: row/phi cell index, modified for DCal |
472 | | - /// \param ieta: column/eta index, modified for DCal |
473 | | - /// |
474 | | - void ShiftOnlineToOfflineCellIndexes(Int_t sm, Int_t& iphi, Int_t& ieta) const; |
475 | | - |
476 | | - /// |
477 | | - /// Here shift the DCal online cols or rows depending on the |
478 | | - /// super-module number to match the online mapping. |
479 | | - /// |
480 | | - /// Reverse procedure to the one in the method above |
481 | | - /// ShiftOnlineToOfflineCellIndexes(). |
482 | | - /// |
483 | | - /// \param sm super module number of the channel/cell |
484 | | - /// \param iphi row/phi cell index, modified for DCal |
485 | | - /// \param ieta column/eta index, modified for DCal |
486 | | - /// |
487 | | - void ShiftOfflineToOnlineCellIndexes(Int_t sm, Int_t& iphi, Int_t& ieta) const; |
488 | | - |
489 | | - /// |
490 | | - /// \brief Look to see what the relative position inside a given cell is for a recpoint. |
491 | | - /// |
492 | | - /// \param absId cell absolute id. number, input |
493 | | - /// \param xr,yr,zr - x,y,z coordinates of cell with absId inside SM, output |
494 | | - /// \throw InvalidCellIDException if cell ID does not exist |
495 | | - /// |
496 | | - void RelPosCellInSModule(Int_t absId, Double_t& xr, Double_t& yr, Double_t& zr) const; |
497 | | - |
498 | 459 | /// |
499 | 460 | /// \brief Look to see what the relative position inside a given cell is for a recpoint. |
500 | 461 | /// |
501 | 462 | /// Same as RelPosCellInSModule(Int_t absId, Double_t &xr, Double_t &yr, Double_t &zr) |
502 | 463 | /// but taking into account position of shower max. |
503 | 464 | /// |
504 | | - /// \param absId cell absolute id. number, input |
505 | | - /// \param distEff shower max position? check call in AliEMCALRecPoint!, input |
506 | | - /// \param xr,yr,zr - x,y,z coordinates of cell with absId inside SM, output |
507 | | - /// \throw InvalidCellIDException if cell ID does not exist |
508 | | - /// |
509 | | - void RelPosCellInSModule(Int_t absId, Double_t distEff, Double_t& xr, Double_t& yr, Double_t& zr) const; |
510 | | - |
511 | | - /// |
512 | | - /// \brief Look to see what the relative position inside a given cell is for a recpoint. |
513 | | - /// |
514 | | - /// \param absId cell absolute id. number, input |
515 | | - /// \param loc Double[3] with x,y,z coordinates of cell with absId inside SM, output |
| 465 | + /// \param[in] absId cell absolute id. number, input |
| 466 | + /// \param[in] distEff shower max position? check call in RecPoint! |
| 467 | + /// \return Point3D with x,y,z coordinates of cell with absId inside SM |
516 | 468 | /// \throw InvalidCellIDException if cell ID does not exist |
517 | 469 | /// |
518 | | - void RelPosCellInSModule(Int_t absId, Double_t loc[3]) const; |
| 470 | + Point3D<double> RelPosCellInSModule(Int_t absId, Double_t distEf) const; |
519 | 471 |
|
520 | 472 | /// |
521 | 473 | /// \brief Look to see what the relative position inside a given cell is for a recpoint. |
522 | 474 | /// |
523 | 475 | /// \param absId cell absolute id. number, input |
524 | | - /// \param vloc TVector3 with x,y,z coordinates of cell with absId inside SM, output |
| 476 | + /// \return Point3D with x,y,z coordinates of cell with absId inside SM |
525 | 477 | /// \throw InvalidCellIDException if cell ID does not exist |
526 | 478 | /// |
527 | | - void RelPosCellInSModule(Int_t absId, TVector3& vloc) const; |
| 479 | + Point3D<double> RelPosCellInSModule(Int_t absId) const; |
528 | 480 |
|
529 | | - const Int_t* GetEMCSystem() const { return mEMCSMSystem; } // EMC System, SM type list |
| 481 | + std::vector<EMCALSMType> GetEMCSystem() const { return mEMCSMSystem; } // EMC System, SM type list |
530 | 482 | // Local Coordinates of SM |
531 | | - TArrayD GetCentersOfCellsEtaDir() const |
| 483 | + std::vector<Double_t> GetCentersOfCellsEtaDir() const |
532 | 484 | { |
533 | 485 | return mCentersOfCellsEtaDir; |
534 | 486 | } // size fNEta*fNETAdiv (for TRD1 only) (eta or z in SM, in cm) |
535 | | - TArrayD GetCentersOfCellsXDir() const |
| 487 | + std::vector<Double_t> GetCentersOfCellsXDir() const |
536 | 488 | { |
537 | 489 | return mCentersOfCellsXDir; |
538 | 490 | } // size fNEta*fNETAdiv (for TRD1 only) ( x in SM, in cm) |
539 | | - TArrayD GetCentersOfCellsPhiDir() const |
| 491 | + std::vector<Double_t> GetCentersOfCellsPhiDir() const |
540 | 492 | { |
541 | 493 | return mCentersOfCellsPhiDir; |
542 | 494 | } // size fNPhi*fNPHIdiv (for TRD1 only) (phi or y in SM, in cm) |
543 | 495 | // |
544 | | - TArrayD GetEtaCentersOfCells() const |
| 496 | + std::vector<Double_t> GetEtaCentersOfCells() const |
545 | 497 | { |
546 | 498 | return mEtaCentersOfCells; |
547 | 499 | } // [fNEta*fNETAdiv*fNPhi*fNPHIdiv], positive direction (eta>0); eta depend from phi position; |
548 | | - TArrayD GetPhiCentersOfCells() const |
| 500 | + std::vector<Double_t> GetPhiCentersOfCells() const |
549 | 501 | { |
550 | 502 | return mPhiCentersOfCells; |
551 | 503 | } // [fNPhi*fNPHIdiv] from center of SM (-10. < phi < +10.) |
@@ -621,19 +573,19 @@ class Geometry |
621 | 573 | Int_t mNETAdiv; ///< Number eta division of module |
622 | 574 | Int_t mNPHIdiv; ///< Number phi division of module |
623 | 575 | Int_t mNCellsInModule; ///< Number cell in module |
624 | | - TArrayD mPhiBoundariesOfSM; ///< Phi boundaries of SM in rad; size is fNumberOfSuperModules; |
625 | | - TArrayD mPhiCentersOfSM; ///< Phi of centers of SM; size is fNumberOfSuperModules/2 |
626 | | - TArrayD mPhiCentersOfSMSec; ///< Phi of centers of section where SM lies; size is fNumberOfSuperModules/2 |
| 576 | + std::vector<Double_t> mPhiBoundariesOfSM; ///< Phi boundaries of SM in rad; size is fNumberOfSuperModules; |
| 577 | + std::vector<Double_t> mPhiCentersOfSM; ///< Phi of centers of SM; size is fNumberOfSuperModules/2 |
| 578 | + std::vector<Double_t> mPhiCentersOfSMSec; ///< Phi of centers of section where SM lies; size is fNumberOfSuperModules/2 |
627 | 579 |
|
628 | 580 | // Local Coordinates of SM |
629 | | - TArrayD mPhiCentersOfCells; ///< [fNPhi*fNPHIdiv] from center of SM (-10. < phi < +10.) |
630 | | - TArrayD mCentersOfCellsEtaDir; ///< Size fNEta*fNETAdiv (for TRD1 only) (eta or z in SM, in cm) |
631 | | - TArrayD mCentersOfCellsPhiDir; ///< Size fNPhi*fNPHIdiv (for TRD1 only) (phi or y in SM, in cm) |
632 | | - TArrayD |
| 581 | + std::vector<Double_t> mPhiCentersOfCells; ///< [fNPhi*fNPHIdiv] from center of SM (-10. < phi < +10.) |
| 582 | + std::vector<Double_t> mCentersOfCellsEtaDir; ///< Size fNEta*fNETAdiv (for TRD1 only) (eta or z in SM, in cm) |
| 583 | + std::vector<Double_t> mCentersOfCellsPhiDir; ///< Size fNPhi*fNPHIdiv (for TRD1 only) (phi or y in SM, in cm) |
| 584 | + std::vector<Double_t> |
633 | 585 | mEtaCentersOfCells; ///< [fNEta*fNETAdiv*fNPhi*fNPHIdiv], positive direction (eta>0); eta depend from phi position; |
634 | 586 | Int_t mNCells; ///< Number of cells in calo |
635 | 587 | Int_t mNPhi; ///< Number of Towers in the PHI direction |
636 | | - TArrayD mCentersOfCellsXDir; ///< Size fNEta*fNETAdiv (for TRD1 only) ( x in SM, in cm) |
| 588 | + std::vector<Double_t> mCentersOfCellsXDir; ///< Size fNEta*fNETAdiv (for TRD1 only) ( x in SM, in cm) |
637 | 589 | Float_t mEnvelop[3]; ///< The GEANT TUB for the detector |
638 | 590 | Float_t mArm1EtaMin; ///< Minimum pseudorapidity position of EMCAL in Eta |
639 | 591 | Float_t mArm1EtaMax; ///< Maximum pseudorapidity position of EMCAL in Eta |
@@ -670,7 +622,7 @@ class Geometry |
670 | 622 | Int_t mNumberOfSuperModules; ///< default is 12 = 6 * 2 |
671 | 623 |
|
672 | 624 | /// geometry structure |
673 | | - Int_t* mEMCSMSystem; //[mNumberOfSuperModules] |
| 625 | + std::vector<EMCALSMType> mEMCSMSystem; ///< Type of the supermodule (size number of supermodules |
674 | 626 |
|
675 | 627 | Float_t mFrontSteelStrip; ///< 13-may-05 |
676 | 628 | Float_t mLateralSteelStrip; ///< 13-may-05 |
|
0 commit comments