// Example for SAMURAI ICB // NOTICE!: software threshold 200ch is set in TArtCalibIC.cc (anaroot_v4.5.4) void ICBHist(){ // set raw data file TArtEventStore *eventstore = new TArtEventStore; const char* filename = "ridf/sdaq02/dayone0080.ridf";//22C+C run if(!eventstore->Open(filename)){ std::cout << "cannot open " << filename << std::endl; return; } // calibration parameters TArtBigRIPSParameters *bripsprm = TArtBigRIPSParameters::Instance(); bripsprm->LoadParameter("db/BigRIPSIC.xml"); // TArtStoreManager is a class for accessing calibrated data TArtStoreManager *sman = TArtStoreManager::Instance(); // TArtCalibHODPla is a class for calibartion of SAMURAI Hodoscope TArtCalibIC *calibic = new TArtCalibIC; // define histograms TH1* hid = new TH1I("hid", "ICB ID", 10, 0.5, 10.5); TH1* ha = new TH2D("ha", "ICB ID-ARaw", 10,0.5,10.5, 4100, 0, 4100); TH1* he = new TH1D("he", "ICB E", 500, 0, 50); // event loop int nevent = 0; while(eventstore->GetNextEvent() && nevent<10000){ calibic->ReconstructData(); // Get calibrated data TClonesArray * ic_array = (TClonesArray *)sman->FindDataContainer("BigRIPSIC"); // another way //TClonesArray *ic_array = (TClonesArray*)calibic->GetICArray(); TArtIC *icb = (TArtIC *)TArtUtil::FindDataObject(ic_array,(char*)"ICB"); if (icb!=0){ Int_t nhit = icb->GetNumHit(); for(Int_t i=0; iFill(i); ha->Fill( i, icb->GetRawADC(i) ); } he->Fill( icb->GetEnergySqSum() ); } // clear calibic->ClearData(); eventstore->ClearData(); ++nevent; } return; }