MpdMultiFieldPar.cxx 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // -------------------------------------------------------------------------
  2. // MpdMultiFieldPar source file -----
  3. // Created 23/07/13 by P. Batyuk (MPD) <batyuk@jinr.ru> -----
  4. // from MpdMultiFieldPar (PNDROOT) -----
  5. // -------------------------------------------------------------------------
  6. /// Last modified: 24.07.2013, P.B.
  7. #include "MpdMultiFieldPar.h"
  8. #include "MpdMultiFieldPar.h"
  9. #include "MpdConstField.h"
  10. #include "MpdConstPar.h"
  11. #include "FairParamList.h"
  12. #include "MpdMapPar.h"
  13. #include "FairRuntimeDb.h"
  14. #include "FairRun.h"
  15. #include "MpdFieldMap.h"
  16. #include "MpdFieldPar.h"
  17. // ------ Constructor --------------------------------------------------
  18. MpdMultiFieldPar::MpdMultiFieldPar(const char* name, const char* title, const char* context)
  19. : MpdMapPar(name, title, context)
  20. {
  21. fParArray=new TObjArray();
  22. }
  23. //-----------------------------------------------------------------------
  24. MpdMultiFieldPar::MpdMultiFieldPar() { }
  25. //-----------------------------------------------------------------------
  26. MpdMultiFieldPar::~MpdMultiFieldPar() { }
  27. //-----------------------------------------------------------------------
  28. void MpdMultiFieldPar::putParams(FairParamList* list)
  29. {
  30. if ( ! list ) return;
  31. list->addObject("List of Field par", fParArray);
  32. list->add("Field Type", fType);
  33. }
  34. //-----------------------------------------------------------------------
  35. Bool_t MpdMultiFieldPar::getParams(FairParamList* l)
  36. {
  37. if (!l->fillObject("list of fields Par",fParArray))return kFALSE;
  38. if ( ! l->fill("Field Type", &fType) ) return kFALSE;
  39. return kTRUE;
  40. }
  41. //-----------------------------------------------------------------------
  42. void MpdMultiFieldPar:: SetParameters(FairField* field)
  43. {
  44. fType=5;
  45. FairRuntimeDb *rtdb=FairRuntimeDb::instance();
  46. FairRun *fRun= FairRun::Instance();
  47. MpdMultiField *fmField = (MpdMultiField *)field;
  48. TObjArray *fArray=fmField->GetFieldList();
  49. TIterator *Iter=fArray->MakeIterator();
  50. Iter->Reset();
  51. FairField* fField = NULL;
  52. Int_t Type=-1;
  53. while( (fField = (FairField*)Iter->Next() ) ) {
  54. Type=fField->GetType();
  55. if(Type==0) {
  56. MpdConstField *fc= (MpdConstField *)fField;
  57. MpdConstPar *cp = (MpdConstPar*) rtdb->getContainer("MpdConstPar");
  58. cp->SetParameters(fc);
  59. cp->setInputVersion(fRun->GetRunId(),1);
  60. fParArray->AddLast(cp);
  61. }
  62. else if(Type==1) {
  63. MpdFieldMap *fm= (MpdFieldMap*)fField;
  64. MpdFieldPar* fmp = (MpdFieldPar*) rtdb->getContainer("MpdFieldPar");
  65. fmp->SetParameters(fm);
  66. fmp->setInputVersion(fRun->GetRunId(),1);
  67. fParArray->AddLast(fmp);
  68. }
  69. }
  70. delete Iter;
  71. }
  72. ClassImp(MpdMultiFieldPar)