//////////////////////////////////// // KRATTA SIM Prameters analysator // for the Asy-Eos experiment // TKratSimKapAna2 DEFINITION // May 2013 // revison 05/2013 // E.d.F ver 1.0 // sebastian.kupny@uj.edu.pl // Changes: //////////////////////////////////// #include "TKratSimKapAna2.h" using std::cout; using std::endl; //______________________________________________________________________ TKratSimKapAna2::TKratSimKapAna2 (const char* name, Int_t iVerbose ) : FairTask("KRATTA Parameters analysator") { fVerbose = iVerbose; fTKratSimKapReaderDataContainer = "KrattaMcSimDataCont"; fTKratSimKapAna1DataContainer = "KrattaMcSimAna1DataCont"; } //______________________________________________________________________ TKratSimKapAna2::~TKratSimKapAna2() { } //______________________________________________________________________ void TKratSimKapAna2::SetParContainers() { // Get run and runtime database FairRunAna* run = FairRunAna::Instance(); if ( ! run ) Fatal("SetParContainers", "No analysis run"); FairRuntimeDb* rtdb = run->GetRuntimeDb(); if ( ! rtdb ) Fatal("SetParContainers", "No runtime database"); } //______________________________________________________________________ InitStatus TKratSimKapAna2::Init() { //fLogger->Info(MESSAGE_ORIGIN," TKratSimKapAna2::Init()------------------Start "); //Farroot version: v-13.05 /// Configure Fairroot instances FairRootManager* ioman = FairRootManager::Instance(); if ( ! ioman ) Fatal("Init", "No FairRootManager"); ///Get access to fairroot data source fKapReaderDataContClones =(TClonesArray*) ioman->GetObject( fTKratSimKapReaderDataContainer ); fKapReaderDataCont = (TKratSimKapReaderDataContainer*)fKapReaderDataContClones; fKapAna1DataContClones =(TClonesArray*) ioman->GetObject( fTKratSimKapAna1DataContainer ); fKapAna1DataCont = (TKratSimKapAna1DataContainer*)fKapAna1DataContClones; fHistEnergySumWhenReactionInThin = new TH1F("fHistEnergySumWhenReactionInThin", "ReactionInThin", 1000, -0.01, 1. ); fHistEnergySumWhenReactionInThick = new TH1F("fHistEnergySumWhenReactionInThick", "fHistEnergySumWhenReactionInThick", 1000, -0.01, 1. ); fHistEnergySumNoReaction = new TH1F("fHistEnergySumNoReaction", "fHistEnergySumNoReaction", 1000, -0.01, 1. ); fHistEnergyPrimWhenReactionInThin = new TH1F("fHistEnergyPrimWhenReactionInThin", "Prim Reaction In Thin", 1000, -0.01, 1. ); fHistEnergyPrimWhenReactionInThick = new TH1F("fHistEnergyPrimWhenReactionInThick", " Prim Reaction In Thick", 1000, -0.01, 1. ); fHistEnergyPrimNoReaction = new TH1F("fHistEnergyPrimNoReaction", "Prim No Reaction", 1000, -0.01, 1. ); fHistReactVsEnInAny = new TH1F("fHistReactVsEnInAny", "Reaction ratio in any", 1000, -100, 1000 ); fHistReactVsEnInThin = new TH1F("fHistReactVsEnInThin", "Reaction ratio in thin", 1000, -100, 1000 ); fHistReactVsEnInThick = new TH1F("fHistReactVsEnInThick", "Reaction ratio in thic", 1000, -100, 1000 ); fHistReactVsEnNo = new TH1F("fHistReactVsEnNo", "No reaction", 1000, -100, 1000 ); return kSUCCESS; } //______________________________________________________________________ void TKratSimKapAna2::Exec(Option_t* opt) { if ( fVerbose > 2 ){ cout << "[TKratSimKapAna2::Exec:] " << endl; fKapReaderDataCont->Print(); cout << *fKapReaderDataCont << endl; fKapAna1DataCont->Print(); cout << * fKapAna1DataCont << endl; } fKineticEnergy = fKapReaderDataCont->fEkin; fMomentum = fKapReaderDataCont->fMomentum; fParticle = fKapReaderDataCont->fParticle; fSimDescription = fKapReaderDataCont->fAnaDescr; fEventsInFile = fKapReaderDataCont->fNEventsInFile; Double_t totalDepositedEnergy = fKapAna1DataCont->fTotalEnergy; Double_t primParticleDepositedEnergy = fKapAna1DataCont->fThinEnPrim + fKapAna1DataCont->fThickEnPrim; if( fKapAna1DataCont->fIsReact) { ++fCounterReact; fHistReactVsEnInAny -> Fill (fKineticEnergy ); } if( fKapAna1DataCont->fIsReactThin) { ++fCounterReactThin; fHistEnergySumWhenReactionInThin ->Fill( totalDepositedEnergy ); fHistEnergyPrimWhenReactionInThin ->Fill( primParticleDepositedEnergy ); fHistReactVsEnInThin -> Fill (fKineticEnergy); } if( fKapAna1DataCont->fIsReactThick){ ++fCounterReactThick; fHistEnergySumWhenReactionInThick ->Fill( totalDepositedEnergy ); fHistEnergyPrimWhenReactionInThick ->Fill( primParticleDepositedEnergy ); fHistReactVsEnInThick -> Fill (fKineticEnergy ); } if( ! fKapAna1DataCont->fIsReact ) { fHistEnergySumNoReaction ->Fill( totalDepositedEnergy ); fHistEnergyPrimNoReaction ->Fill( primParticleDepositedEnergy ); fHistReactVsEnNo -> Fill (fKineticEnergy ); } } //______________________________________________________________________ void TKratSimKapAna2::Reset() { //cout << "[TKratSimKapAna2::Reset:]" << endl; fKineticEnergy = 0; fMomentum = 0; fParticle = ""; fSimDescription = ""; fEventsInFile = 0; fCounterReact = 0; fCounterReactThin = 0; fCounterReactThick = 0; } //______________________________________________________________________ void TKratSimKapAna2::PrintResults() { /** cout << "[TKratSimKapAna2::PrintResults:] " << endl; cout << "fKineticEnergy=\t" << fKineticEnergy; cout << ", fMomentum=\t" << fMomentum; cout << ", fParticle=\t" << fParticle; cout << ", fSimDescription=\t" << fSimDescription; cout << ", fEventsInFile=\t" << fEventsInFile; cout << ", fCounterReact=\t" << fCounterReact; cout << ", fCounterReactThin=\t" << fCounterReactThin; cout << ", fCounterReactThick=\t" << fCounterReactThick; cout << endl; */ cout << "[TKratSimKapAna2::PrintResults:]\t"; cout << "fKineticEnergy\t"; cout << "fMomentum\t"; cout << "fParticle\t"; cout << "fSimDescription\t"; cout << "fEventsInFile\t"; cout << "fCounterReact\t"; cout << "fCounterReactThin\t"; cout << "fCounterReactThick\t"; cout << endl; cout << "[TKratSimKapAna2::PrintResults:]\t"; cout << fKineticEnergy << "\t"; cout << fMomentum << "\t"; cout << fParticle << "\t"; cout << fSimDescription << "\t"; cout << fEventsInFile << "\t"; cout << fCounterReact << "\t"; cout << fCounterReactThin << "\t"; cout << fCounterReactThick << "\t"; cout << endl; } //______________________________________________________________________ InitStatus TKratSimKapAna2::ReInit() { if ( fVerbose > 1 ){ cout << "[TKratSimKapAna2::ReInit()]" << endl; } PrintResults(); Reset(); fKineticEnergy = fKapReaderDataCont->fEkin; fMomentum = fKapReaderDataCont->fMomentum; fParticle = fKapReaderDataCont->fParticle; fSimDescription = fKapReaderDataCont->fAnaDescr; fHistEnergySumWhenReactionInThin ->Write(); fHistEnergySumWhenReactionInThick ->Write(); fHistEnergySumNoReaction ->Write(); fHistEnergyPrimWhenReactionInThin ->Write(); fHistEnergyPrimWhenReactionInThick->Write(); fHistEnergyPrimNoReaction ->Write(); fHistEnergySumWhenReactionInThin->Reset(); fHistEnergySumWhenReactionInThin->SetTitle(Form("Total energy loss when reaction in thin for %.1f [MeV]", fKineticEnergy )); fHistEnergySumWhenReactionInThick->Reset(); fHistEnergySumWhenReactionInThick->SetTitle(Form("Total energy loss when reaction in thick for %.1f [MeV]", fKineticEnergy )); fHistEnergySumNoReaction->Reset(); fHistEnergySumNoReaction->SetTitle(Form("Total energy loss when no reaction %.1f [GeV]", fKineticEnergy )); fHistEnergyPrimWhenReactionInThin->Reset(); fHistEnergyPrimWhenReactionInThin->SetTitle(Form("Prim energy loss when reaction in thin for %.1f [MeV]", fKineticEnergy )); fHistEnergyPrimWhenReactionInThick->Reset(); fHistEnergyPrimWhenReactionInThick->SetTitle(Form("Prim energy loss when reaction in thick for %.1f [MeV]", fKineticEnergy )); fHistEnergyPrimNoReaction->Reset(); fHistEnergyPrimNoReaction->SetTitle(Form("Prim energy loss when no reaction %.1f [GeV]", fKineticEnergy )); ; fHistReactVsEnInAny ->Write(); fHistReactVsEnInThin ->Write(); fHistReactVsEnInThick->Write(); fHistReactVsEnNo ->Write(); return kSUCCESS; } //______________________________________________________________________ void TKratSimKapAna2::Finish(){ if ( fVerbose > 1 ){ cout << "[TKratSimKapAna2::Finish()]" << endl; } ReInit(); } ClassImp( TKratSimKapAna2 )