//////////////////////////////////// // KRATTA CALIB analyser - Global parameters calculation // for the Asy-Eos experiment // TKratCalibGlobalCalc DEFINITION // Apr 2014 // revison 04/2014 // E.d.F ver 1.0 // sebastian.kupny@uj.edu.pl // Changes: //////////////////////////////////// #include "TKratCalibGlobalCalc.h" using namespace std; //______________________________________________________________________ TKratCalibGlobalCalc::TKratCalibGlobalCalc (const char* name, Int_t iVerbose ) : FairTask("KRATTA Calib events analyser") { fVerbose = iVerbose; fKratCalEvtClonArrName = "KRATTAEVENT_CLONE"; fRootKRATGlobalCopyName = "KRATTAGLOBAL"; fModToAnalysisNumber = 0; fSaveOutputToTree = kFALSE; } //______________________________________________________________________ TKratCalibGlobalCalc::~TKratCalibGlobalCalc() { //delete fHistEventNo; //delete fHistPeakNo; //delete fDeltaEE; //delete fGammaLine; ////delete fC1; //delete fFileWithAnalysisResults; } //______________________________________________________________________ void TKratCalibGlobalCalc::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 TKratCalibGlobalCalc::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 TKratCalibGlobalCalc::Init() { //fLogger->Info(MESSAGE_ORIGIN," TKratCalibGlobalCalc::Init()------------------Start "); //Farroot version: v-13.05 cout << "TKratCalibGlobalCalc::Init()------------------Start" << endl; /// Configure Fairroot instances FairRootManager* ioman = FairRootManager::Instance(); if ( ! ioman ) Fatal("Init", "No FairRootManager"); ///Get access to fairroot data source fKratCalEvtClonArr = (TClonesArray*) ioman->GetObject( fKratCalEvtClonArrName.Data() ); fKratCalEvt = (TRootKRATEvent*)fKratCalEvtClonArr; fRootKRATGlobal = new TRootKRATGlobal(); //ioman->Register("CHIGLOBAL", "CHIMERA GLOABL TREE", fRootKRATGlobal, kFALSE); fRootKRATGlobalCopy=(TClonesArray*)fRootKRATGlobal; ioman->Register( fRootKRATGlobalCopyName , "KRATTA GLOBAL TREE CLONE", fRootKRATGlobalCopy, fSaveOutputToTree); //DC fFileWithAnalysisResults = new TFile("Result_0221.root", "RECREATE" ); //DC //DC //fHistTimestamp = new TH1F("Light","Light",1000,0.,1E9); //DC fHistEventNo = new TH1F("fHistEventNo","Event number",1000,41530000,41630000); //DC fHistPeakNo = new TH1F("fHistPeakNo","Number of peaks",20,0.,20); //DC //DC fDeltaEE = new TH2F("fDeltaEE","DeltaE-E",1000,-10.,5000.,1000,-10.,4000.); //DC fGammaLine = new TH2F("fGammaLine", "p22-p23:p22+p23" ,1000,-100.,2500.,1000,-300.,300.); //DC //DC //fLight = new TH1F("Light","Light",1000,0.,1000); //DC //fEnergy = new TH1F("Light","Light",1000,0.,20000); //DC //DC //fHistogram = new TH2F("Light","Light",100,0.,100.,100,0.,100.); cout << "TKratCalibGlobalCalc::Init()------------------End" << endl; return kSUCCESS; } //______________________________________________________________________ void TKratCalibGlobalCalc::Exec(Option_t* opt) { //cout << *fKratCalEvt << endl; //unsigned long int timestamp = fASYEvent->tms - 18446744000000000000; fMult = 0; fZtot = 0; fAtot = 0; fMultH = 0; fMultHe = 0; fMultIMF = 0; fGood = 0; Long64_t eventNo = fKratCalEvt->Evt; Int_t run = fKratCalEvt->Run; //cout << "HELLO " << endl; //Int_t peaksNo = fKratCalEvt->npeak; //DC fHistEventNo ->Fill( eventNo ); //DC fHistPeakNo ->Fill( peaksNo ); //DC Double_t amp1 = 0.; //DC Double_t amp2 = 0.; fKratCalPartClonArr = fKratCalEvt->fHit; Int_t nHit = fKratCalPartClonArr -> GetEntries(); cout <<"[TKratCalibGlobalCalc::Exec:]" << *fKratCalEvt << endl; for (Int_t hit = 0; hit < nHit; hit++ ) { fKratCalPart = (TRootKRATParticle*) (*fKratCalPartClonArr)[hit]; Int_t mod = fKratCalPart->Module; //for( Int_t p = 0; p < fNPar; p++) //{ // fProf[mod][p]->Fill( run, GetVal(p,fKratCalEvt, fKratCalPart) ); //} //cout << "Im here: hit: " << hit << endl; ///fProf[mod][0]->Fill( run, fKratCalEvt->fNhit ); ///fProf[mod][1]->Fill( run, fKratCalEvt->Run ); ///fProf[mod][2]->Fill( run, fKratCalEvt->Evt ); ///fProf[mod][3]->Fill( run, fKratCalEvt->TgtThck ); ///fProf[mod][9]->Fill( run, fKratCalPart->Module ); ///fProf[mod][10]->Fill( run, fKratCalPart->Code ); ///fProf[mod][11]->Fill( run, fKratCalPart->Spect ); ///fProf[mod][12]->Fill( run, fKratCalPart->Xident ); ///fProf[mod][13]->Fill( run, fKratCalPart->Yident ); ///fProf[mod][14]->Fill( run, fKratCalPart->PID ); ///fProf[mod][15]->Fill( run, fKratCalPart->Z ); ///fProf[mod][16]->Fill( run, fKratCalPart->A ); Int_t Z = fKratCalPart->Z; Int_t A = fKratCalPart->A; Float_t RealA = fKratCalPart->RealA; Float_t Energy = fKratCalPart->Energy; /// Good Hits filter: Bool_t isGoodEvt = kFALSE; if ((RealA>0) && (Energy>0)) { isGoodEvt = kTRUE; } /// Global parameters calculations: if (isGoodEvt){ fGood = 1; fMult++; fZtot += Z; fAtot += A; if (Z == 1 ){ fMultH++ ;} if (Z == 2 ){ fMultHe++ ;} if (Z >= 3 ){ fMultIMF++;} } } fRootKRATGlobal->multi = fMult ; fRootKRATGlobal->Ztot = fZtot ; fRootKRATGlobal->Atot = fAtot ; fRootKRATGlobal->multH = fMultH ; fRootKRATGlobal->multHe = fMultHe ; fRootKRATGlobal->multIMF = fMultIMF; /* if ( peaksNo != nPeaks ){ cout << "HEY! Number of peaks is not equal" << endl; getchar(); } */ } //______________________________________________________________________ void TKratCalibGlobalCalc::Reset() { // Clear the structure // cout << " -I- Digit Reset() called " << endl; // pc if (fLandDigi ) fLandDigi->Clear(); } //______________________________________________________________________ void TKratCalibGlobalCalc::Finish() { cout << "TKratCalibGlobalCalc::Finish" << endl; //DC fDeltaEE->SetMaximum(1000); //DC //fC1 = new TCanvas("fC1", "Delta E-E", 900, 700); //DC //fC1->SetLogz(); //DC //fDeltaEE->Draw("COLZ"); //DC //DC //DC fHistEventNo ->Write(); //DC fHistPeakNo ->Write(); //DC fDeltaEE ->Write(); //DC fGammaLine ->Write(); //DC //DC fHistEventNo ->SaveAs("result_fHistEventNo.root"); //DC fHistPeakNo ->SaveAs("result_fHistPeakNo.root"); //DC fDeltaEE ->SaveAs("result_fDeltaEE.root"); //DC fGammaLine ->SaveAs("result_fGammaLine.root"); //DC //DC //DC //DC //fC1 ->SaveAs("result_fDeltaEE.png"); //DC //DC fFileWithAnalysisResults->Write(); //DC fFileWithAnalysisResults->Close(); //delete cProfile; } /** //______________________________________________________________________ TString TKratCalibGlobalCalc::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); }else{ descrBegining= Form("Kratta runs:%d-%d Mod %d", startRun,lastRun, modNo); } if ( param2.Length() == 0 ) { descrEnd = Form("For %s", param1.Data()); }else{ descrEnd = Form("For %s vs. %s", param1.Data(), param2.Data()); } TString result = Form( "%s %s", descrBegining.Data(), descrEnd.Data()); return result; } Double_t TKratCalibGlobalCalc::GetVal(Int_t paramNumber, TRootKRATEvent *ev, TRootKRATParticle * fk) { Double_t res = 0; switch (paramNumber){ case 1: res = ev->fNhit; break; case 2: res = ev->Run; break; case 3: res = ev->Evt; break; case 4: res = ev->TgtThck; break; case 5: res = ev->BeamEnergy; break; case 6: res = ev->BeamA; break; case 7: res = ev->BeamZ; break; case 8: res = ev->BeamRapidity; break; case 9: res = ev->CMRapidity; break; case 10: res = fk->Module; break; case 11: res = fk->Code; break; case 12: res = fk->Spect; break; case 13: res = fk->Xident; break; case 14: res = fk->Yident; break; case 15: res = fk->PID; break; case 16: res = fk->Z; break; case 17: res = fk->A; break; case 18: res = fk->RealZ; break; case 19: res = fk->RealA; break; case 20: res = fk->Energy; break; case 21: res = fk->EnergyOld; break; case 22: res = fk->de_csi2; break; case 23: res = fk->de_myl1; break; case 24: res = fk->de_csi1; break; case 25: res = fk->de_csi1_cal; break; case 26: res = fk->de_myl0; break; case 27: res = fk->de_sil1; break; case 28: res = fk->de_sil1_cal; break; case 29: res = fk->de_ddl1; break; case 30: res = fk->de_sil0; break; case 31: res = fk->de_sil0_cal; break; case 32: res = fk->de_ddl0; break; case 33: res = fk->de_win; break; case 34: res = fk->de_air; break; case 35: res = fk->de_tgt; break; case 36: res = fk->WeightCol; break; case 37: res = fk->WeightInt; break; case 38: res = fk->WeightGeant; break; case 39: res = fk->RangeCsI; break; case 40: res = fk->DeltaECsI; break; case 41: res = fk->EnergyDE01; break; case 42: res = fk->EnergyDE0; break; case 43: res = fk->EneResDE01; break; case 44: res = fk->EneResDE0; break; case 45: res = fk->Theta; break; case 46: res = fk->Phi; break; case 47: res = fk->ThetaRndm; break; case 48: res = fk->PhiRndm; break; case 49: res = fk->Pextra; break; case 50: res = fk->Gamma; break; case 51: res = fk->Star; break; case 52: res = fk->PunchThrough; break; case 53: res = fk->InTime; break; case 54: res = fk->RapidityLab; break; case 55: res = fk->RapidityCM; break; case 56: res = fk->Pt; break; case 57: res = fk->Px; break; case 58: res = fk->Py; break; case 59: res = fk->Pz; break; case 60: res = fk->Xt; break; case 61: res = fk->Winv; break; case 62: res = fk->Gam; break; case 63: res = fk->ch_csi2; break; case 64: res = fk->ch_csi1; break; case 65: res = fk->ch_sil1; break; case 66: res = fk->ch_sil0; break; case 67: res = fk->ch_slo2; break; case 68: res = fk->ch_fas2; break; case 69: res = fk->ch_sof2; break; case 70: res = fk->ch_mod0; break; case 71: res = fk->ch_sum1; break; case 72: res = fk->ch_dif1; break; case 73: res = fk->ch_sum2; break; case 74: res = fk->ch_dif2; break; case 75: res = fk->ch_log01; break; case 76: res = fk->ch_slo1; break; case 77: res = fk->ch_fas1; break; case 78: res = fk->ch_sof1; break; case 79: res = fk->ch_log1; break; case 80: res = fk->ch_log2; break; case 81: res = fk->ch_tm0; break; case 82: res = fk->ch_tm1; break; case 83: res = fk->ch_tm2; break; case 84: res = fk->pthr_flag; break; default: break; } if (res != res ){ res =0; cout << "For " << paramNumber << " Nan - reset" << endl; } return res; } */ ClassImp( TKratCalibGlobalCalc )