//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Implementation of class TpcShieldPointAlignmentTask // see TpcShieldPointAlignmentTask.hh for details // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Sebastian Neubert TUM (original author) // // //----------------------------------------------------------- // Panda Headers ---------------------- // This Class' Header ------------------ #include "TpcShieldPointAlignmentTask.h" // C/C++ Headers ---------------------- #include #include // Collaborating Class Headers -------- #include "TClonesArray.h" #include "TString.h" #include "TRandom.h" #include "TpcPoint.h" #include "TpcGas.h" #include "TpcShieldPoint.h" #include "LinearInterpolPolicy.h" #include "TpcDigiPar.h" #include "TpcAlignmentManager.h" #include "FairRunAna.h" #include "FairRunSim.h" #include "FairRuntimeDb.h" #include "FairMCEventHeader.h" #include "FairEventHeader.h" #include "FairRootManager.h" using std::cout; using std::endl; using std::fabs; using std::floor; // Class Member definitions ----------- TpcShieldPointAlignmentTask::TpcShieldPointAlignmentTask() : FairTask("TPC Shield point alignment"), fCopy(false), fShieldPointArray(NULL) { fShieldPointBranchName = "TpcShieldPoint"; fShieldPointOutBranchName = "TpcShieldPoint"; } TpcShieldPointAlignmentTask::~TpcShieldPointAlignmentTask() {} void TpcShieldPointAlignmentTask::SetParContainers() { std::cout<<"TpcShieldPointAlignmentTask::SetParContainers\n"; // Get run and runtime database FairRun* run = FairRun::Instance(); if ( ! run ) Fatal("SetParContainers", "No analysis run"); FairRuntimeDb* db = run->GetRuntimeDb(); if ( ! db ) Fatal("SetParContainers", "No runtime database"); // Get Tpc digitisation parameter container fpar= (TpcDigiPar*) db->getContainer("TpcDigiPar"); if (! fpar ) Fatal("SetParContainers", "TpcDigiPar not found"); } InitStatus TpcShieldPointAlignmentTask::Init() { //Get ROOT Manager FairRootManager* ioman= FairRootManager::Instance(); if(ioman==0){ Error("TpcShieldPointAlignmentTask::Init","RootManager not instantiated!"); return kERROR; } // Get input collection fShieldPointArray=(TClonesArray*) ioman->GetObject(fShieldPointBranchName); if(fShieldPointArray==0) { Error("TpcShieldPointAlignmentTask::Init","ShieldPoint-array not found!"); return kERROR; } if(fCopy) { fShieldPointOutArray = new TClonesArray("TpcShieldPoint"); ioman->Register(fShieldPointOutBranchName,"tpc",fShieldPointOutArray,true); } return kSUCCESS; } void TpcShieldPointAlignmentTask::Exec(Option_t* opt) { // Reset output Arrays if(fCopy && fShieldPointOutArray==0) Fatal("TpcShieldPointAlignmentTask::Exec()","No copy array"); if(fCopy) fShieldPointOutArray->Delete(); unsigned int nShieldPoint= fShieldPointArray->GetEntriesFast(); for(unsigned int iShieldPoint=0;iShieldPointUncheckedAt(iShieldPoint); if(fCopy){ unsigned int nOut= fShieldPointOutArray->GetEntriesFast(); ShieldPoint=new ((*fShieldPointOutArray)[nOut]) TpcShieldPoint(*ShieldPoint); } TVector3 pos; ShieldPoint->Position(pos);; pos = TpcAlignmentManager::getInstance()->masterToLocal("shield",pos); ShieldPoint->SetPosition(pos); } return; } ClassImp(TpcShieldPointAlignmentTask)