/* * PndLumiClusterBuilder.cxx * * Created on: Nov 18, 2008 * Author: tsito */ #include "PndLumiClusterBuilder.h" PndLumiClusterBuilder::PndLumiClusterBuilder() { } PndLumiClusterBuilder::PndLumiClusterBuilder(Double_t pitch, Double_t orient, Double_t W, Double_t L, Double_t thr, Double_t noise, Double_t sigma) { fPitch = pitch; fOrient = orient; fWidth = W; fLength = L; fThreshold = thr; fNoise = noise; fSigma = sigma; //fSide = side; } PndLumiClusterBuilder::~PndLumiClusterBuilder() { } InitStatus PndLumiClusterBuilder::Init() { // Get RootManager FairRootManager* ioman = FairRootManager::Instance(); if ( ! ioman ){ cout << "-E- PndLumiClusterBuilder::Init: " << "RootManager not instantiated!" << endl; return kFATAL; } // Get input array fLumiPoint = (TClonesArray*) ioman->GetObject("LumiPoint"); if (!fLumiPoint){ cout << "-W- PndLumiClusterBuilder::Init: " << "No LumiPoint collection!" << endl; return kERROR; } // Create and register output array fLumiClusterFront = new TClonesArray("PndLumiCluster"); fLumiClusterBack = new TClonesArray("PndLumiCluster"); ioman->Register("LumiClusterFront", "Lumi", fLumiClusterFront, kTRUE); ioman->Register("LumiClusterBack", "Lumi", fLumiClusterBack, kTRUE); return kSUCCESS; } void PndLumiClusterBuilder::Exec(Option_t* opt) { // Reset output array if (!fLumiClusterFront || !fLumiClusterBack) Fatal("Exec", "No hit collection"); fLumiClusterFront->Clear(); fLumiClusterBack->Clear(); PndLumiPoint *point = NULL; std::vector digi_front, digi_back; //collect digi strip std::map cluster_front, cluster_back; std::map::iterator it, it1; TVector3 pos_strip_front, pos_strip_back; TVector3 glo; TVector2 stripzeroId_front, stripzeroId_back; TVector3 entryPos, exitPos, MCPosition; //Loop over LumiPoint Int_t nPoints = fLumiPoint->GetEntriesFast(); for (Int_t iPoint = 0 ; iPoint< nPoints ; iPoint++){ point = (PndLumiPoint*) fLumiPoint->At(iPoint); //Variable definition TString detname = point->GetDetName(); Double_t eLoss = point->GetEnergyLoss()* 1E9; entryPos = point->GetEntryPoint(), exitPos = point->GetExitPoint(); MCPosition = 0.5*(entryPos + exitPos); //cout << "Entry in GCS : ( "<< entryPos.X()<< " , "<