//////////////////////////////////// // KRATTA SIM Prameters analysator // for the Asy-Eos experiment // TKratSimKapAna1 DEFINITION // May 2013 // revison 05/2013 // E.d.F ver 1.0 // sebastian.kupny@uj.edu.pl // Changes: //////////////////////////////////// #include "TKratSimKapAna1.h" using std::cout; using std::endl; //______________________________________________________________________ TKratSimKapAna1::TKratSimKapAna1 (const char* name, Int_t iVerbose ) : FairTask("KRATTA Parameters analysator"), fThin_SumEnergyLoss (0), fThick_SumEnergyLoss (0), fThin_SumEnergyLossByPrim (0), fThick_SumEnergyLossByPrim (0), fThin_SumEnergyLossByElectrons (0), fThick_SumEnergyLossByElectrons (0), fThin_SumEnergyLossByTheOthers (0), fThick_SumEnergyLossByTheOthers (0), fHistDEE_n1(0), fHistDEE_n2(0), fHistDEE_n3(0), fHistDEE_n4(0), fHistDEE_nv1(0), fFileCounter(0), fRootFileWithOutputHist(0), fSaveOutputToTree(kFALSE) { fVerbose = iVerbose; /// Input containers: fMCPointCopyName = "KrakowPointClone"; fMCTrackCopyName = "MCTrackClone"; fTKratSimKapReaderDataContainerName = "KrattaMcSimDataCont"; /// Output container: fTKratSimKapAna1DataContainerName = "KrattaMcSimAna1DataCont"; fRootFileWithOutputHistName = "KRATTA_MCS_HISTOGRAMS.root"; } //______________________________________________________________________ TKratSimKapAna1::~TKratSimKapAna1() { } //______________________________________________________________________ void TKratSimKapAna1::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 TKratSimKapAna1::Init() { //fLogger->Info(MESSAGE_ORIGIN," TKratSimKapAna1::Init()------------------Start "); //Farroot version: v-13.05 cout << "TKratSimKapAna1::Init()------------------Start" << endl; /// Configure Fairroot instances FairRootManager* ioman = FairRootManager::Instance(); if ( ! ioman ) Fatal("Init", "No FairRootManager"); ///Get access to fairroot data source fRootFileWithOutputHist = new TFile( fRootFileWithOutputHistName.Data(), "RECREATE"); fHistDEE_n1 = new TH2F("fHistDEE_n1", "Kratta DeltaE-E (all)", 1000, -0.02, 1.1, 1000, -0.05, 0.5); fHistDEE_n2 = new TH2F("fHistDEE_n2", "Kratta DeltaE-E (primary)", 1000, -0.02, 1.1, 1000, -0.05, 0.5); fHistDEE_n3 = new TH2F("fHistDEE_n3", "Kratta DeltaE-E (electrons)", 1000, -0.02, 1.1, 1000, -0.05, 0.5); fHistDEE_n4 = new TH2F("fHistDEE_n4", "Kratta DeltaE-E (rest)", 1000, -0.02, 1.1, 1000, -0.05, 0.5); fHistDEE_nv1= new TH2F("fHistDEE_nv1", "Kratta DeltaE-E temp (rest)", 1000, -0.02, 1.1, 1000, -0.05, 0.5); fMCPointCopy =(TClonesArray*) ioman->GetObject( fMCPointCopyName ); fMCPoint = (TClonesArray*)fMCPointCopy; fMCTrackCopy =(TClonesArray*) ioman->GetObject( fMCTrackCopyName ); fMCTrack = (TClonesArray*)fMCTrackCopy; fKapDataContClones =(TClonesArray*) ioman->GetObject( fTKratSimKapReaderDataContainerName ); fKapDataCont = (TKratSimKapReaderDataContainer*)fKapDataContClones; fKapAna1DataCont = new TKratSimKapAna1DataContainer(); fKapAna1DataContClones = new TClonesArray("TKratSimKapAna1DataContainer"); fKapAna1DataContClones = (TClonesArray*) fKapAna1DataCont; ioman->Register( fTKratSimKapAna1DataContainerName, "Kratta MC sim ana1 data container", fKapAna1DataContClones, fSaveOutputToTree); fAcceptanceToleranceInPrecent = 10; /// in [%] fThinCrystalId = 3; fThickCrystalId = 4; /// That should be updated for every file (done in reset function which is not called now) Double_t fEkinInGeV = (fKapDataCont->fEkin)/1000.; fEnergyLowLimit = fEkinInGeV * (1 - fAcceptanceToleranceInPrecent/100.); fEnergyUpperLimit = fEkinInGeV * (1 + fAcceptanceToleranceInPrecent/100.); fFSCalculator = new TKratFSCalculator(); ///Cleaning variables: fThin_SumEnergyLoss = 0; fThick_SumEnergyLoss = 0; fThin_SumEnergyLossByPrim = 0; fThick_SumEnergyLossByPrim = 0; fThin_SumEnergyLossByElectrons = 0; fThick_SumEnergyLossByElectrons = 0; fThin_SumEnergyLossByTheOthers = 0; fThick_SumEnergyLossByTheOthers = 0; //ResetCounters(); cout << "TKratSimKapAna1::Init()------------------End" << endl; return kSUCCESS; } //______________________________________________________________________ void TKratSimKapAna1::Exec(Option_t* opt) { /// Debug level 2 or higher. Int_t nPoints = fMCPoint-> GetEntries(); if ( fVerbose > 1 ) cout << "In event is " << nPoints << " KrakowArrayPoint(s) stored." << endl; fKapAna1DataCont->Clear(); fThin_EnergyLoss = 0; fThin_EnergyLossByPrim = 0; fThin_EnergyLossByElectrons = 0; fThin_EnergyLossByTheOthers = 0; fThick_EnergyLoss = 0; fThick_EnergyLossByPrim = 0; fThick_EnergyLossByElectrons = 0; fThick_EnergyLossByTheOthers = 0; fThin_EnergyLoss = 0; fThin_EnergyLossByPrim = 0; fThin_EnergyLossByElectrons = 0; fThin_EnergyLossByTheOthers = 0; fThick_EnergyLoss = 0; fThick_EnergyLossByPrim = 0; fThick_EnergyLossByElectrons = 0; fThick_EnergyLossByTheOthers = 0; Double_t fLightSumInOneEvent_FastThin = 0; Double_t fLightSumInOneEvent_SlowThin = 0; Double_t fsc_in_one_event_DEE_DeltaE = 0; Double_t fLightSumInOneEvent_FastThick = 0; Double_t fLightSumInOneEvent_SlowThick = 0; Double_t fsc_in_one_event_DEE_E = 0; for (Int_t kapi = 0; kapi < nPoints; kapi++ ) /// Iteration over Krakow Array Points stored in container (TClonesArray) { KrakowArrayPoint *krakowArrayPoint; krakowArrayPoint = (KrakowArrayPoint*) fMCPoint->ConstructedAt(kapi); Int_t aDetId = krakowArrayPoint->GetDetectorID(); Int_t aTrackID = krakowArrayPoint->GetTrackID(); Double_t aEnergyLoss = krakowArrayPoint->GetEnergyLoss(); R3BMCTrack *track; track = (R3BMCTrack*) fMCTrack->ConstructedAt(aTrackID); Int_t aPID = track->GetPdgCode(); Int_t aMother = track->GetMotherId(); Double_t aMctMass = track->GetMass(); Double_t aMctEnergy = track->GetEnergy(); Double_t px_in = krakowArrayPoint->GetPx(); Double_t py_in = krakowArrayPoint->GetPy(); Double_t pz_in = krakowArrayPoint->GetPz(); Double_t p_in = TMath::Sqrt( px_in*px_in + py_in*py_in + pz_in*pz_in ); Double_t E_in = TMath::Sqrt( p_in*p_in + aMctMass*aMctMass ); Double_t px_out = krakowArrayPoint->GetPxOut(); Double_t py_out = krakowArrayPoint->GetPyOut(); Double_t pz_out = krakowArrayPoint->GetPzOut(); Double_t p_out = TMath::Sqrt( px_out*px_out + py_out*py_out + pz_out*pz_out ); Double_t E_out = TMath::Sqrt( p_out*p_out + aMctMass*aMctMass ); Double_t p_loss_rc = p_in - p_out; Double_t E_loss_rc = E_in - E_out; ///DEBUG: cout << "==========================================================" << endl; ///DEBUG: fMCPoint->ConstructedAt(kapi)->Print(); ///DEBUG: cout << "p_loss_rc = "; ///DEBUG: cout << p_loss_rc; ///DEBUG: cout << "\t E_loss_rc = "; ///DEBUG: cout << E_loss_rc; ///DEBUG: cout << endl; Double_t E_loss_agrenment = 0; Double_t E_loss_agrenment_in_prec = 0; if( aEnergyLoss > 0 ){ E_loss_agrenment = (aEnergyLoss - E_loss_rc)/aEnergyLoss ; E_loss_agrenment_in_prec = TMath::Abs(E_loss_agrenment)*100.; }/// else{throw error, that energy loss is 0 or inform that there is not a good E_loss_agrenment value. /// ---------------------------------------------------------------- /// Energy depoisted: if( aDetId == fThinCrystalId ){ fThin_EnergyLoss += aEnergyLoss; if ( aTrackID == 0 ) { fThin_EnergyLossByPrim += aEnergyLoss; } // can be = isntead of += (only one particle with trackId = 0 if ( aTrackID != 0 && aPID == 11 ){ fThin_EnergyLossByElectrons += aEnergyLoss; } if ( aTrackID != 0 && aPID != 11 ){ fThin_EnergyLossByTheOthers += aEnergyLoss; } }else if( aDetId == fThickCrystalId ){ fThick_EnergyLoss += aEnergyLoss; if ( aTrackID == 0 ) { fThick_EnergyLossByPrim += aEnergyLoss; } // can be = isntead of += (only one particle with trackId = 0 if ( aTrackID != 0 && aPID == 11 ){ fThick_EnergyLossByElectrons += aEnergyLoss; } if ( aTrackID != 0 && aPID != 11 ){ fThick_EnergyLossByTheOthers += aEnergyLoss; } }else{ cout << " [TKratSimKapAna1::Exec:] ERROR: Unexpected detector, with Fairroot ID= " << aDetId << endl; } /// ---------------------------------------------------------------- /// Parameters for FS decomposition ///E2FS(E_IN[is][ie],E_OUT[is][ie], iz, ia, Fast, Slow); Double_t fsc_energy_kin_in = TMath::Sqrt( p_in *p_in + aMctMass*aMctMass) - aMctMass; //Double_t fsc_energy_kin_out = TMath::Sqrt( p_out*p_out + aMctMass*aMctMass) - aMctMass; /// Nie mozemy liczyc pedu koncowego, poniewaz gdy jest reakcja to jego wartosc spada do zera. /// Energia zdeponowana to jest wtedy tylko rowna eneregy loss, a wiec energia koncowa to roznica /// miedzy energia wejsciowa a wyjsciowa. Stad ponizsza wartosc energii koncowej dla naszego modelu /// fast slow. TODO: Skonsultowac z Jurkiem Double_t fsc_energy_kin_out = fsc_energy_kin_in - aEnergyLoss; Int_t fsc_ia = 0; Int_t fsc_iz = 0; Double_t fsc_fast = 0; Double_t fsc_slow = 0; Double_t fsc_energy_in_MeV = fsc_energy_kin_in *1000.; /// GeV => MeV Double_t fsc_energy_out_MeV = fsc_energy_kin_out *1000.; /// GeV => MeV ///DEBUG: cout << "p_in = "; ///DEBUG: cout << p_in; ///DEBUG: cout << "\t aMctMass = "; ///DEBUG: cout << aMctMass; ///DEBUG: cout << "\t fsc_energy_kin_in = "; ///DEBUG: cout << fsc_energy_kin_in; ///DEBUG: cout << "\t fsc_energy_kin_out = "; ///DEBUG: cout << fsc_energy_kin_out; ///DEBUG: cout << "\t aEnergyLoss = "; ///DEBUG: cout << aEnergyLoss; ///DEBUG: cout << endl; if ( fsc_energy_kin_out < 0 ){ fsc_energy_kin_out= 0; } fFSCalculator->GetAZformPdgCode( aPID, fsc_iz , fsc_ia ); ///DEBUG: cout << "aPID = "; ///DEBUG: cout << aPID; ///DEBUG: cout << "\t fsc_ia = "; ///DEBUG: cout << fsc_ia; ///DEBUG: cout << "\t fsc_iz = "; ///DEBUG: cout << fsc_iz; ///DEBUG: cout << endl; if( fsc_ia > 0 && fsc_ia < 16 ){ /// Only those ion's energy can be convereted to the light if (fVerbose > 3 ) { //cout << scientific; cout << "E1 " << fsc_energy_kin_in; cout << ",\t" << fsc_energy_kin_out; cout << ",\t X=" ; cout << ",\t" << fsc_energy_kin_in - fsc_energy_kin_out; cout << ",\t" << aEnergyLoss; cout << ",\t" << 100.*((fsc_energy_kin_in - fsc_energy_kin_out)-aEnergyLoss)/aEnergyLoss; cout << "[%],\t" ; cout << "E2FS(" << fsc_energy_in_MeV; cout << ",\t" << fsc_energy_out_MeV; cout << ",\t" << fsc_ia; cout << ",\t" << fsc_iz; cout << ",\t" << fsc_fast; cout << ",\t" << fsc_slow; cout << ")"; if ( aTrackID == 0 ) { cout << "\t PRIMARY PARTICLE"; // krattaPt->Print(); }; cout << endl; } fFSCalculator->E2FS( fsc_energy_in_MeV, fsc_energy_out_MeV , fsc_iz, fsc_ia, fsc_fast, fsc_slow); ///DEBUG: cout << "DetID=" << aDetId; ///DEBUG: cout << "\t energy_in_MeV = "; ///DEBUG: cout << fsc_energy_in_MeV; ///DEBUG: cout << "\t nergy_out_MeV = "; ///DEBUG: cout << fsc_energy_out_MeV; ///DEBUG: cout << "\t fsc_fast = "; ///DEBUG: cout << fsc_fast; ///DEBUG: cout << "\t SlowThin = "; ///DEBUG: cout << fsc_slow; ///DEBUG: cout << endl; if( aDetId == fThinCrystalId ){ ///fLightSumInOneEvent_FastThin += fsc_fast; ///fLightSumInOneEvent_SlowThin += fsc_slow; ///y012[is][ie] = E2H(E_IN1[is][ie],E_OUT1[is][ie], iz, ia, 0);//CSI1 fsc_in_one_event_DEE_DeltaE += fFSCalculator->E2H(fsc_energy_in_MeV, fsc_energy_out_MeV , fsc_iz, fsc_ia, 0);//DE-E for MOD 7 //CSI1 }else if( aDetId == fThickCrystalId ){ fLightSumInOneEvent_FastThick += fsc_fast; fLightSumInOneEvent_SlowThick += fsc_slow; fsc_in_one_event_DEE_E += fFSCalculator->E2H(fsc_energy_in_MeV, fsc_energy_out_MeV , fsc_iz, fsc_ia, 1);//DE-E for MOD 7 //CSI2 } } /// ---------------------------------------------------------------- /// Debug if ( fVerbose > 2 ){ cout << "ANA1: Particle PID " << aPID << " hit \t Detector Id=" << aDetId << " \t TrackId=" << aTrackID << " \t EnergyLoss=" << aEnergyLoss; cout << endl; } } if ( fVerbose > 1 ){ cout << "\t FastThin = "; cout << fLightSumInOneEvent_FastThin; cout << "\t SlowThin = "; cout << fLightSumInOneEvent_SlowThin; cout << "\t FastThick = "; cout << fLightSumInOneEvent_FastThick; cout << "\t SlowThick = "; cout << fLightSumInOneEvent_SlowThick; cout << "\t DEE_DeltaE = "; cout << fsc_in_one_event_DEE_DeltaE; cout << "\t DEE_E = "; cout << fsc_in_one_event_DEE_E; cout << endl; } /// ---------------------------------------------------------------- /// Was reaction or not Double_t fDeltaE = fThin_EnergyLossByPrim; Double_t fE = fThick_EnergyLossByPrim; Double_t fSum_fDeltaEfE = fDeltaE + fE; if ( fE == 0 && fDeltaE > 0 && fDeltaE < fEnergyLowLimit ) { fKapAna1DataCont->fIsReactThin = 1; } if ( fE > 0 && fDeltaE > 0 && fSum_fDeltaEfE < fEnergyLowLimit ){ fKapAna1DataCont->fIsReactThick = 1; } if ( fKapAna1DataCont->fIsReactThin == 1 || fKapAna1DataCont->fIsReactThick == 1){; fKapAna1DataCont->fIsReact = 1; } /// /// /* * code from macro: fSum_fDeltaEfE = fE + fDeltaE; //fDeltaE *= 1000.; //fE *= 1000.; fNumberOfTracks += fMaxTrackNumberInEvent; hFastSlowHistogram ->Fill ( fLightSumInOneEvent_SlowThick+fLightSumInOneEvent_FastThick, fLightSumInOneEvent_FastThick/fLightSumInOneEvent_SlowThick ); hFastSlowDee ->Fill ( fsc_in_one_event_DEE_E, fsc_in_one_event_DEE_DeltaE ); hFastSlowDeeSmall ->Fill ( fsc_in_one_event_DEE_E, fsc_in_one_event_DEE_DeltaE ); if (verbose > 1 ) ///temorary 5, default set to 1 { cout << "Pair (" << fE << "," << fDeltaE << ")" << endl; cout << "Total energy: " << fSum_fDeltaEfE << endl; } hist1->Fill( fE, fDeltaE ); hist2->Fill( fSum_fDeltaEfE ); if ( fE == 0 && fDeltaE == 0 ) { iFiredNoOne++; } if ( fE == 0 && fDeltaE > 0 ) { iFiredOnlyFirst++; } if ( fE > 0 && fDeltaE > 0 ) { iFiredBoth++; } if ( ( fEnergyLowLimit <= fSum_fDeltaEfE ) && ( fSum_fDeltaEfE < fEnergyUpperLimit )) { iTotalEnergyIsMax++; } if ( ( fEnergyLowLimit <= fDeltaE ) && ( fDeltaE < fEnergyUpperLimit )) { iDeltaEEnergyIsMax++; } if ( fSum_fDeltaEfE < fEnergyLowLimit ) { iTotalEnergyIsNotMax++; } if ( fEnergyUpperLimit < fSum_fDeltaEfE ) { iTotalEnergyIsLargerThanMax++; } if ( fEnergyLowLimit < fSum_fDeltaEfE && fSum_fDeltaEfE < fEnergyUpperLimit ){ hist_R_NO-> Fill ( fSum_fDeltaEfE ); ihist_R_NO++; rWasReaction = kFALSE; }; if ( fE == 0 && fDeltaE > 0 && fDeltaE < fEnergyLowLimit ){ hist_R_1 -> Fill ( fSum_fDeltaEfE ); ihist_R_1++; }; if ( fE > 0 && fDeltaE > 0 && fSum_fDeltaEfE < fEnergyLowLimit ){ hist_R_2 -> Fill ( fSum_fDeltaEfE ); ihist_R_2++; }; if ( fSum_fDeltaEfE < fEnergyLowLimit ){ hist_R_12-> Fill ( fSum_fDeltaEfE ); ihist_R_12++;}; /// [2013-04-16] Calcluation for total energy - check the abundancy of hits of followed types for neutrons if ( fTotalEnergyLossInEventInThin == 0 && fTotalEnergyLossInEventInThick == 0 ){ ihist_total_R_NO++; }; /// No energy deposited if ( fTotalEnergyLossInEventInThin > 0 && fTotalEnergyLossInEventInThick == 0 ){ ihist_total_R_1++; }; /// Energy depisted only in first if ( fTotalEnergyLossInEventInThin == 0 && fTotalEnergyLossInEventInThick > 0 ){ ihist_total_R_2++; }; /// Energy depisted only in second if ( fTotalEnergyLossInEventInThin > 0 && fTotalEnergyLossInEventInThick > 0 ){ ihist_total_R_12++; }; /// Energy depisted in both ///TODO: Zdebugowac ten kwalek: /// proba zidentyfikowania czastek ktore przelecialy przez detektor if ( (fEnergyLowLimit > fSum_fDeltaEfE || fSum_fDeltaEfE > fEnergyUpperLimit) && (fE > 0) ){ hist_R_REST-> Fill ( fSum_fDeltaEfE ); ihist_R_REST++;}; /// Calkowita energia zdeponowana w evencie histTotalEnergy_ALL ->Fill( fTotalEnergyLossInEventInThick, fTotalEnergyLossInEventInThin ); if( rWasReaction == kFALSE ){ histTotalEnergy_R_NO ->Fill( fTotalEnergyLossInEventInThick, fTotalEnergyLossInEventInThin ); }else{ histTotalEnergy_R_12 ->Fill( fTotalEnergyLossInEventInThick, fTotalEnergyLossInEventInThin ); } //histTotalEnergy_R_REST->Fill( fTotalEnergyLossInEventInThick, fTotalEnergyLossInEventInThin); fTotalEnergyLossInThin += fTotalEnergyLossInEventInThin; fTotalEnergyLossInThick += fTotalEnergyLossInEventInThick; */ /// /// fKapAna1DataCont->fTotalEnergy = fThin_EnergyLoss + fThick_EnergyLoss; fKapAna1DataCont->fThinEnTot = fThin_EnergyLoss; fKapAna1DataCont->fThinEnPrim = fThin_EnergyLossByPrim; fKapAna1DataCont->fThinEnElec = fThin_EnergyLossByElectrons; fKapAna1DataCont->fThinEnRest = fThin_EnergyLossByTheOthers; fKapAna1DataCont->fThinLightTot = fLightSumInOneEvent_FastThin + fLightSumInOneEvent_SlowThin; fKapAna1DataCont->fThinLightF = fLightSumInOneEvent_FastThin; fKapAna1DataCont->fThinLightS = fLightSumInOneEvent_SlowThin; fKapAna1DataCont->fThinLightEne = fsc_in_one_event_DEE_DeltaE; fKapAna1DataCont->fThickEnTot = fThick_EnergyLoss; fKapAna1DataCont->fThickEnPrim = fThick_EnergyLossByPrim; fKapAna1DataCont->fThickEnElec = fThick_EnergyLossByElectrons; fKapAna1DataCont->fThickEnRest = fThick_EnergyLossByTheOthers; fKapAna1DataCont->fThickLightTot = fLightSumInOneEvent_FastThick + fLightSumInOneEvent_SlowThick; fKapAna1DataCont->fThickLightF = fLightSumInOneEvent_FastThick; fKapAna1DataCont->fThickLightS = fLightSumInOneEvent_SlowThick; fKapAna1DataCont->fThickLightEne = fsc_in_one_event_DEE_E; ///fKapAna1DataCont->fIsReact ///fKapAna1DataCont->fIsReactThin ///fKapAna1DataCont->fIsReactThick fThin_SumEnergyLoss += fThin_EnergyLoss; fThick_SumEnergyLoss += fThick_EnergyLoss; fThin_SumEnergyLossByPrim += fThin_EnergyLossByPrim; fThick_SumEnergyLossByPrim += fThick_EnergyLossByPrim; fThin_SumEnergyLossByElectrons += fThin_EnergyLossByElectrons; fThick_SumEnergyLossByElectrons += fThick_EnergyLossByElectrons; fThin_SumEnergyLossByTheOthers += fThin_EnergyLossByTheOthers; fThick_SumEnergyLossByTheOthers += fThick_EnergyLossByTheOthers; //if(fKapDataCont != NULL ) //{ // cout << " *fKapDataCont = " << *fKapDataCont << endl; //} /// DEBUGGING //cout << "fThin_SumEnergyLoss = " << fThin_SumEnergyLoss ; //cout << ", fThick_SumEnergyLoss = " << fThick_SumEnergyLoss ; //cout << ", ptr fHistDEE_n1 = " << fHistDEE_n1 << endl; if (fHistDEE_n1) fHistDEE_n1->Fill( fThick_EnergyLoss, fThin_EnergyLoss ); if (fHistDEE_n2) fHistDEE_n2->Fill( fThick_EnergyLossByPrim, fThin_EnergyLossByPrim ); if (fHistDEE_n3) fHistDEE_n3->Fill( fThick_EnergyLossByElectrons, fThin_EnergyLossByElectrons ); if (fHistDEE_n4) fHistDEE_n4->Fill( fThick_EnergyLossByTheOthers, fThin_EnergyLossByTheOthers ); if (fHistDEE_nv1) fHistDEE_nv1->Fill( fThick_EnergyLoss, fThin_EnergyLoss ); } //______________________________________________________________________ void TKratSimKapAna1::ResetCounters() { fThin_SumEnergyLoss = 0; fThick_SumEnergyLoss = 0; fThin_SumEnergyLossByPrim = 0; fThick_SumEnergyLossByPrim = 0; fThin_SumEnergyLossByElectrons = 0; fThick_SumEnergyLossByElectrons = 0; fThin_SumEnergyLossByTheOthers = 0; fThick_SumEnergyLossByTheOthers = 0; } //______________________________________________________________________ void TKratSimKapAna1::PrintResults() { cout << "[TKratSimKapAna1::PrintResults:] \t"; /* if(fKapDataCont != NULL ) { cout << ", Kap.fEkin= " << fKapDataCont->fEkin; cout << ", Kap.fMom= " << fKapDataCont->fMomentum; cout << ", Kap.fParticleStringID= " << fKapDataCont->fParticle } cout << ", fThin_SumEnergyLoss " << fThin_SumEnergyLoss ; cout << ", fThick_SumEnergyLoss " << fThick_SumEnergyLoss ; cout << ", fThin_SumEnergyLossByPrim " << fThin_SumEnergyLossByPrim ; cout << ", fThick_SumEnergyLossByPrim " << fThick_SumEnergyLossByPrim ; cout << ", fThin_SumEnergyLossByElectrons " << fThin_SumEnergyLossByElectrons ; cout << ", fThick_SumEnergyLossByElectrons " << fThick_SumEnergyLossByElectrons ; cout << ", fThin_SumEnergyLossByTheOthers " << fThin_SumEnergyLossByTheOthers ; cout << ", fThick_SumEnergyLossByTheOthers " << fThick_SumEnergyLossByTheOthers ; cout << endl; */ /// Fields if(fKapDataCont != NULL ) { cout << "Kap.fEkin\t" ; cout << "Kap.fMom\t"; cout << "Kap.fParticleStringID\t"; } cout << "fThin_SumEnergyLoss\t"; cout << "fThick_SumEnergyLoss\t"; cout << "fThin_SumEnergyLossByPrim\t"; cout << "fThick_SumEnergyLossByPrim\t"; cout << "fThin_SumEnergyLossByElectrons\t"; cout << "fThick_SumEnergyLossByElectrons\t"; cout << "fThin_SumEnergyLossByTheOthers\t"; cout << "fThick_SumEnergyLossByTheOthers\t"; cout << endl; cout << "[TKratSimKapAna1::PrintResults:] \t"; if(fKapDataCont != NULL ) { cout << fKapDataCont->fEkin << "\t"; cout << fKapDataCont->fMomentum << "\t"; cout << fKapDataCont->fParticle << "\t"; } cout << fThin_SumEnergyLoss << "\t"; cout << fThick_SumEnergyLoss << "\t"; cout << fThin_SumEnergyLossByPrim << "\t"; cout << fThick_SumEnergyLossByPrim << "\t"; cout << fThin_SumEnergyLossByElectrons << "\t"; cout << fThick_SumEnergyLossByElectrons << "\t"; cout << fThin_SumEnergyLossByTheOthers << "\t"; cout << fThick_SumEnergyLossByTheOthers << "\t"; cout << endl; } //______________________________________________________________________ InitStatus TKratSimKapAna1::ReInit() { cout << "[TKratSimKapAna1::ReInit:] ReInit IS CALLING" << endl; PrintResults(); ResetCounters(); fRootFileWithOutputHist->Write(); fFileCounter++; Double_t fEkinInGeV = (fKapDataCont->fEkin)/1000.; TString particle = fKapDataCont->fParticle; fEnergyLowLimit = fEkinInGeV * (1 - fAcceptanceToleranceInPrecent/100.); fEnergyUpperLimit = fEkinInGeV * (1 + fAcceptanceToleranceInPrecent/100.); fHistDEE_nv1->Reset(); fHistDEE_n1->SetTitle(Form("Total nergy loss for %s up to %.3f [GeV]", particle.Data(), fEkinInGeV )); fHistDEE_n2->SetTitle(Form("Primary part. energy loss for %s up to %.3f [GeV]", particle.Data(), fEkinInGeV )); fHistDEE_n3->SetTitle(Form("electrons energy loss for %s up to %.3f [GeV]", particle.Data(), fEkinInGeV )); fHistDEE_n4->SetTitle(Form("the rest energy loss for %s up to %.3f [GeV]", particle.Data(), fEkinInGeV )); fHistDEE_nv1->SetTitle(Form("Energy loss for %s at %.3f [GeV]", particle.Data(), fEkinInGeV )); /// This idea didn't work :( //if (fHistDEE_nv1 !=0 ){ // fFileCounter++; // cout << "Reinit Histogram " << endl; // fHistDEE_nv1->SaveAs( Form("fHistDEE_nv1_%d.root", fFileCounter )); //delete fHistDEE_nv1; //fHistDEE_nv1 = 0; //fHistDEE_nv1 = new TH2F( Form("fHistDEE_nv1_%d", fFileCounter ), Form("Kratta DeltaE-E (all) %d", fFileCounter ), 1000, -0.02, 1.1, 1000, -0.05, 0.5); // cout << "Reinit Histogram done " << Form("fHistDEE_n5_%d", fFileCounter ) << endl; //} return kSUCCESS; } //______________________________________________________________________ void TKratSimKapAna1::Reset() { cout << "[TKratSimKapAna1::Reset:] RESET IS CALLING" << endl; } //______________________________________________________________________ void TKratSimKapAna1::Finish(){ cout << "TKratSimKapAna1::Finish():" << endl; ReInit(); } ClassImp( TKratSimKapAna1 )