//////////////////////////////////// // KRATTA DST reader // for the Asy-Eos experiment // TKratDstAna DEFINITION // Feb 2013 // revison 02/2013 // E.d.F ver 1.0 // sebastian.kupny@uj.edu.pl // Changes: //////////////////////////////////// #include "TKratDstAna.h" using std::cout; using std::endl; //______________________________________________________________________ TKratDstAna::TKratDstAna (const char* name, Int_t iVerbose ) : FairTask("KRATTA Digital S. Tape analyser") { fVerbose = iVerbose; fKratContInName = "KRATTA_ASYEVENT"; fModToAnalysisNumber = 0; } //______________________________________________________________________ TKratDstAna::~TKratDstAna() { delete fHistEventNo; delete fHistPeakNo; delete fDeltaEE; delete fGammaLine; //delete fC1; delete fFileWithAnalysisResults; } //______________________________________________________________________ void TKratDstAna::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"); } //______________________________________________________________________ Int_t TKratDstAna::LoadCuts( TString A_fileName ) { Int_t result = 0; TFile *f_cuts= new TFile ( A_fileName ); for ( int i = 0; i < 35; i++) { fCuts[i].p = (TCutG *) f_cuts->Get(Form("CUTG_AU_MOD_%01d_P", i)); fCuts[i].d = (TCutG *) f_cuts->Get(Form("CUTG_AU_MOD_%01d_D", i)); fCuts[i].t = (TCutG *) f_cuts->Get(Form("CUTG_AU_MOD_%01d_T", i)); fCuts[i].He3 = (TCutG *) f_cuts->Get(Form("CUTG_AU_MOD_%01d_HE3", i)); fCuts[i].He4 = (TCutG *) f_cuts->Get(Form("CUTG_AU_MOD_%01d_HE4", i)); } for ( int i = 0; i < 35; i++) { cout << "Module " << i << ":: "; cout << "cut for p: " << fCuts[i].p << " "; cout << "cut for d: " << fCuts[i].d << " "; cout << "cut for t: " << fCuts[i].t << " "; cout << "cut for he3: " << fCuts[i].He3 << " "; cout << "cut for he4: " << fCuts[i].He4 << " "; cout << endl; } return 0; } //______________________________________________________________________ InitStatus TKratDstAna::Init() { //fLogger->Info(MESSAGE_ORIGIN," TKratDstAna::Init()------------------Start "); //Farroot version: v-13.05 cout << "TKratDstAna::Init()------------------Start" << endl; /// Configure Fairroot instances FairRootManager* ioman = FairRootManager::Instance(); if ( ! ioman ) Fatal("Init", "No FairRootManager"); ///Get access to fairroot data source fASYEventCopy =(TClonesArray*) ioman->GetObject( fKratContInName ); fASYEvent = (ASYEvent*)fASYEventCopy; ///fModToAnalysisNumber = 7; fFileWithAnalysisResults = new TFile("Result_0221.root", "RECREATE" ); //fHistTimestamp = new TH1F("Light","Light",1000,0.,1E9); fHistEventNo = new TH1F("fHistEventNo","Event number",1000,41530000,41630000); fHistPeakNo = new TH1F("fHistPeakNo","Number of peaks",20,0.,20); fDeltaEE = new TH2F("fDeltaEE","DeltaE-E",1000,-10.,5000.,1000,-10.,4000.); fGammaLine = new TH2F("fGammaLine", "p22-p23:p22+p23" ,1000,-100.,2500.,1000,-300.,300.); //fLight = new TH1F("Light","Light",1000,0.,1000); //fEnergy = new TH1F("Light","Light",1000,0.,20000); //fHistogram = new TH2F("Light","Light",100,0.,100.,100,0.,100.); cout << "TKratDstAna::Init()------------------End" << endl; return kSUCCESS; } //______________________________________________________________________ void TKratDstAna::Exec(Option_t* opt) { //cout << *fASYEvent << endl; //unsigned long int timestamp = fASYEvent->tms - 18446744000000000000; Long64_t eventNo = fASYEvent->evt; Int_t peaksNo = fASYEvent->npeak; fHistEventNo ->Fill( eventNo ); fHistPeakNo ->Fill( peaksNo ); Double_t amp1 = 0.; Double_t amp2 = 0.; fKrattaAsyPeakClonesArray = fASYEvent->peak; Int_t nPeaks = fKrattaAsyPeakClonesArray -> GetEntries(); /* if ( peaksNo != nPeaks ){ cout << "HEY! Number of peaks is not equal" << endl; getchar(); } */ for (Int_t pi = 0; pi < nPeaks; pi++ ) { ASYFadcPeak *krattaPt = (ASYFadcPeak*) (*fKrattaAsyPeakClonesArray)[pi]; if ( krattaPt->mod == fModToAnalysisNumber ){ if ( CheckPeak( krattaPt ) ){ //cout << "\t" << pi << " " << krattaPt->s28 << " " << krattaPt->pds1 << " " << krattaPt->m11 << endl; amp1 = 0.; amp2 = 0.; amp1 = krattaPt->am1; amp2 = krattaPt->am2; fDeltaEE->Fill( amp2, amp1 ); Float_t temp_p22 = 0; Float_t temp_p23 = 0; temp_p22 = krattaPt->p22; temp_p23 = krattaPt->p23; fGammaLine->Fill( temp_p22 + temp_p23, temp_p22 - temp_p23 ); } } } } //______________________________________________________________________ void TKratDstAna::Reset() { // Clear the structure // cout << " -I- Digit Reset() called " << endl; // pc if (fLandDigi ) fLandDigi->Clear(); } //______________________________________________________________________ void TKratDstAna::Finish() { fDeltaEE->SetMaximum(1000); //fC1 = new TCanvas("fC1", "Delta E-E", 900, 700); //fC1->SetLogz(); //fDeltaEE->Draw("COLZ"); fHistEventNo ->Write(); fHistPeakNo ->Write(); fDeltaEE ->Write(); fGammaLine ->Write(); fHistEventNo ->SaveAs("result_fHistEventNo.root"); fHistPeakNo ->SaveAs("result_fHistPeakNo.root"); fDeltaEE ->SaveAs("result_fDeltaEE.root"); fGammaLine ->SaveAs("result_fGammaLine.root"); //fC1 ->SaveAs("result_fDeltaEE.png"); fFileWithAnalysisResults->Write(); fFileWithAnalysisResults->Close(); } //______________________________________________________________________ bool TKratDstAna::CheckPeak( ASYFadcPeak *peak ) { bool ampIsOk = false; bool timeIsOk = false; ///Check time conditions if ((peak->p04 == 0 || ( peak->p04 > 190 && peak->p04 < 200) ) && (peak->p14 == 0 || ( peak->p14 > 195 && peak->p14 < 230) ) && (peak->p24 == 0 || ( peak->p24 > 195 && peak->p24 < 230) ) ) { timeIsOk = true; } ///Check amplitude conditions if (peak->p10 + peak->p12 + peak->p13 > 30 && peak->p20 + peak->p22 + peak->p23 > 30 ) { ampIsOk = true; } ///Check others conditions return timeIsOk && ampIsOk; } //______________________________________________________________________ TString TKratDstAna::BuildAnalysisName( Int_t startRun, Int_t lastRun, Int_t modNo, TString param1, TString param2 ) { TString descrBegining = ""; TString descrEnd = ""; if (startRun == lastRun){ descrBegining = Form("Kratta run:%d Mod %d", startRun, modNo); }{ descrBegining= Form("Kratta runs:%d-%d Mod %d", startRun,lastRun, modNo); } if ( param2.Length() == 0 ) { descrEnd = Form("For %s", param1.Data()); }{ descrEnd = Form("For %s vs. %s", param1.Data(), param2.Data()); } TString result = Form( "%s %s", descrBegining.Data(), descrEnd.Data()); return result; } ClassImp( TKratDstAna )