//////////////////////////////////// // KRATTA CALIB reader // for the Asy-Eos experiment // TKratCalibAna DEFINITION // Jan 2014 // revison 01/2014 // E.d.F ver 1.0 // sebastian.kupny@uj.edu.pl // Changes: //////////////////////////////////// #include "TKratCalibAna.h" using namespace std; //______________________________________________________________________ TKratCalibAna::TKratCalibAna (const char* name, Int_t iVerbose ) : FairTask("KRATTA Calib events analyser") { fVerbose = iVerbose; fKratCalEvtClonArrName = "KRATTAEVENT_CLONE"; fModToAnalysisNumber = 0; } //______________________________________________________________________ TKratCalibAna::~TKratCalibAna() { //delete fHistEventNo; //delete fHistPeakNo; //delete fDeltaEE; //delete fGammaLine; ////delete fC1; //delete fFileWithAnalysisResults; } //______________________________________________________________________ void TKratCalibAna::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 TKratCalibAna::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 TKratCalibAna::Init() { //fLogger->Info(MESSAGE_ORIGIN," TKratCalibAna::Init()------------------Start "); //Farroot version: v-13.05 cout << "TKratCalibAna::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; ///fModToAnalysisNumber = 7; //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.); for (int m = 0; m < fNMod; m++) { for (int p = 0; p < fNPar; p++) { Double_t Sa = ARA[m][p]; Double_t Sb = ARB[m][p]; //Double_t diff = TMath::Abs(Sa-Sb); Double_t max = TMath::Max(Sa,Sb); Double_t min = TMath::Min(Sa,Sb); max *= 1.3; min *= 0.5; fRunFi = 1600;//1250; fRunLa = 1700;//2250; //fProf[m][p] = new TProfile(Form("hist_%d_%d", m, p), Form("hist_%d_%d", m, p), fRunLa-fRunFi, Double_t(fRunFi), Double_t(fRunLa), max-min, min, max); //fProf[m][p] = new TProfile(Form("hist_%d_%d", m, p), Form("hist_%d_%d", m, p), max-min, min, max); TString profileName = Form("prof_Mod_%d_%s-%d", m, ARN[p].Data(), p); fProf[m][p] = new TProfile(profileName, profileName, Int_t(fRunLa-fRunFi), Double_t(fRunFi), Double_t(fRunLa), min, max, "S"); //fHsit[m][p] = new TH2F(Form("hist_%d_%d", m, p), Form("hist_%d_%d", m, p), 1000, 0, 1); } }; cout << "TKratCalibAna::Init()------------------End" << endl; return kSUCCESS; } //______________________________________________________________________ void TKratCalibAna::Exec(Option_t* opt) { //cout << *fKratCalEvt << endl; //unsigned long int timestamp = fASYEvent->tms - 18446744000000000000; 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(); /* if ( peaksNo != nPeaks ){ cout << "HEY! Number of peaks is not equal" << endl; getchar(); } */ 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][4]->Fill( run, fKratCalEvt->BeamEnergy ); fProf[mod][5]->Fill( run, fKratCalEvt->BeamA ); fProf[mod][6]->Fill( run, fKratCalEvt->BeamZ ); fProf[mod][7]->Fill( run, fKratCalEvt->BeamRapidity ); fProf[mod][8]->Fill( run, fKratCalEvt->CMRapidity ); 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 ); fProf[mod][17]->Fill( run, fKratCalPart->RealZ ); fProf[mod][18]->Fill( run, fKratCalPart->RealA ); fProf[mod][19]->Fill( run, fKratCalPart->Energy ); fProf[mod][20]->Fill( run, fKratCalPart->EnergyOld ); fProf[mod][21]->Fill( run, fKratCalPart->de_csi2 ); fProf[mod][22]->Fill( run, fKratCalPart->de_myl1 ); fProf[mod][23]->Fill( run, fKratCalPart->de_csi1 ); fProf[mod][24]->Fill( run, fKratCalPart->de_csi1_cal ); fProf[mod][25]->Fill( run, fKratCalPart->de_myl0 ); fProf[mod][26]->Fill( run, fKratCalPart->de_sil1 ); fProf[mod][27]->Fill( run, fKratCalPart->de_sil1_cal ); fProf[mod][28]->Fill( run, fKratCalPart->de_ddl1 ); fProf[mod][29]->Fill( run, fKratCalPart->de_sil0 ); fProf[mod][30]->Fill( run, fKratCalPart->de_sil0_cal ); fProf[mod][31]->Fill( run, fKratCalPart->de_ddl0 ); fProf[mod][32]->Fill( run, fKratCalPart->de_win ); fProf[mod][33]->Fill( run, fKratCalPart->de_air ); fProf[mod][34]->Fill( run, fKratCalPart->de_tgt ); fProf[mod][35]->Fill( run, fKratCalPart->WeightCol ); fProf[mod][36]->Fill( run, fKratCalPart->WeightInt ); fProf[mod][37]->Fill( run, fKratCalPart->WeightGeant ); fProf[mod][38]->Fill( run, fKratCalPart->RangeCsI ); fProf[mod][39]->Fill( run, fKratCalPart->DeltaECsI ); fProf[mod][40]->Fill( run, fKratCalPart->EnergyDE01 ); fProf[mod][41]->Fill( run, fKratCalPart->EnergyDE0 ); fProf[mod][42]->Fill( run, fKratCalPart->EneResDE01 ); fProf[mod][43]->Fill( run, fKratCalPart->EneResDE0 ); fProf[mod][44]->Fill( run, fKratCalPart->Theta ); fProf[mod][45]->Fill( run, fKratCalPart->Phi ); fProf[mod][46]->Fill( run, fKratCalPart->ThetaRndm ); fProf[mod][47]->Fill( run, fKratCalPart->PhiRndm ); fProf[mod][48]->Fill( run, fKratCalPart->Pextra ); fProf[mod][49]->Fill( run, fKratCalPart->Gamma ); fProf[mod][50]->Fill( run, fKratCalPart->Star ); fProf[mod][51]->Fill( run, fKratCalPart->PunchThrough ); fProf[mod][52]->Fill( run, fKratCalPart->InTime ); fProf[mod][53]->Fill( run, fKratCalPart->RapidityLab ); fProf[mod][54]->Fill( run, fKratCalPart->RapidityCM ); fProf[mod][55]->Fill( run, fKratCalPart->Pt ); fProf[mod][56]->Fill( run, fKratCalPart->Px ); fProf[mod][57]->Fill( run, fKratCalPart->Py ); fProf[mod][58]->Fill( run, fKratCalPart->Pz ); fProf[mod][59]->Fill( run, fKratCalPart->Xt ); fProf[mod][60]->Fill( run, fKratCalPart->Winv ); fProf[mod][61]->Fill( run, fKratCalPart->Gam ); fProf[mod][62]->Fill( run, fKratCalPart->ch_csi2 ); fProf[mod][63]->Fill( run, fKratCalPart->ch_csi1 ); fProf[mod][64]->Fill( run, fKratCalPart->ch_sil1 ); fProf[mod][65]->Fill( run, fKratCalPart->ch_sil0 ); fProf[mod][66]->Fill( run, fKratCalPart->ch_slo2 ); fProf[mod][67]->Fill( run, fKratCalPart->ch_fas2 ); fProf[mod][68]->Fill( run, fKratCalPart->ch_sof2 ); fProf[mod][69]->Fill( run, fKratCalPart->ch_mod0 ); fProf[mod][70]->Fill( run, fKratCalPart->ch_sum1 ); fProf[mod][71]->Fill( run, fKratCalPart->ch_dif1 ); fProf[mod][72]->Fill( run, fKratCalPart->ch_sum2 ); fProf[mod][73]->Fill( run, fKratCalPart->ch_dif2 ); fProf[mod][74]->Fill( run, fKratCalPart->ch_log01 ); fProf[mod][75]->Fill( run, fKratCalPart->ch_slo1 ); fProf[mod][76]->Fill( run, fKratCalPart->ch_fas1 ); fProf[mod][77]->Fill( run, fKratCalPart->ch_sof1 ); fProf[mod][78]->Fill( run, fKratCalPart->ch_log1 ); fProf[mod][79]->Fill( run, fKratCalPart->ch_log2 ); fProf[mod][80]->Fill( run, fKratCalPart->ch_tm0 ); fProf[mod][81]->Fill( run, fKratCalPart->ch_tm1 ); fProf[mod][82]->Fill( run, fKratCalPart->ch_tm2 ); fProf[mod][83]->Fill( run, fKratCalPart->pthr_flag ); //if ( fKratCalPart->Module == fModToAnalysisNumber ){ //cout << * fKratCalPart << endl; //cout << "\t" << hit << " " << krattaPt->s28 << " " << krattaPt->pds1 << " " << krattaPt->m11 << endl; //DC amp1 = 0.; //DC amp2 = 0.; //DC amp1 = krattaPt->am1; //DC amp2 = krattaPt->am2; //DC fDeltaEE->Fill( amp2, amp1 ); //DC //DC Float_t temp_p22 = 0; //DC Float_t temp_p23 = 0; //DC //DC temp_p22 = krattaPt->p22; //DC temp_p23 = krattaPt->p23; //DC //DC fGammaLine->Fill( temp_p22 + temp_p23, temp_p22 - temp_p23 ); //} } } //______________________________________________________________________ void TKratCalibAna::Reset() { // Clear the structure // cout << " -I- Digit Reset() called " << endl; // pc if (fLandDigi ) fLandDigi->Clear(); } //______________________________________________________________________ void TKratCalibAna::Finish() { cout << "TKratCalibAna::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(); for (int m = 0; m < fNMod; m++) { for (int p = 0; p < fNPar; p++) { // Draw lines: TLine *lineAuL = new TLine( fRunFi, 0.9*ARA[m][p], fRunLa, 0.9*ARA[m][p]); TLine *lineAuM = new TLine( fRunFi, 1.0*ARA[m][p], fRunLa, 1.0*ARA[m][p]); TLine *lineAuU = new TLine( fRunFi, 1.1*ARA[m][p], fRunLa, 1.1*ARA[m][p]); TLine *lineRZL = new TLine( fRunFi, 0.9*ARB[m][p], fRunLa, 0.9*ARB[m][p]); TLine *lineRZM = new TLine( fRunFi, 1.0*ARB[m][p], fRunLa, 1.0*ARB[m][p]); TLine *lineRZU = new TLine( fRunFi, 1.1*ARB[m][p], fRunLa, 1.1*ARB[m][p]); lineAuL->SetLineStyle(2); //lineAuM->SetLineStyle(2); lineAuU->SetLineStyle(2); lineRZL->SetLineStyle(2); //lineRZM->SetLineStyle(2); lineRZU->SetLineStyle(2); TString canvasName = Form("profile_Mod_%d_%s-%d", m, ARN[p].Data(), p); TCanvas * cProfile = new TCanvas(canvasName, canvasName, 800, 600); fProf[m][p]->Draw(); lineAuL->Draw("same"); lineAuM->Draw("same"); lineAuU->Draw("same"); lineRZL->Draw("same"); lineRZM->Draw("same"); lineRZU->Draw("same"); cProfile->Write();// //cProfile->SaveAs( Form("%s.png", canvasName.Data() ) ); fProf[m][p]->Write(); } }; //delete cProfile; } //______________________________________________________________________ TString TKratCalibAna::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; } Double_t TKratCalibAna::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( TKratCalibAna )