// Example for SAMURAI FDC2 void FDC2Hist(){ // 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 TArtSAMURAIParameters *smprm = TArtSAMURAIParameters::Instance(); smprm->LoadParameter("db/SAMURAIFDC2.xml"); // TArtStoreManager is a class for accessing calibrated data TArtStoreManager *sman = TArtStoreManager::Instance(); // calibration classes TArtCalibFDC2Hit *calibfdc2hit = new TArtCalibFDC2Hit; Int_t fdc2_int_drift_tdc = 1495-1090; Int_t fdc2_tzero = 1495; TArtCalibFDC2Track *calibfdc2track = new TArtCalibFDC2Track(fdc2_int_drift_tdc, fdc2_tzero); // define histograms TH1* hid = new TH1I("hid", "FDC2 ID", 1568, 0.5, 1568.5); TH1* hlayertdc = new TH2D("hlayertdc", "FDC2 Layer-TDC", 14,-0.5,13.5, 4100, 0, 4100); TH1* hchi2 = new TH1D("hchi2","FDC2 track chi2", 200,0,2000000); TH1* hnhitlayer = new TH1D("hnhitlayer","FDC2 Num of Hit Layers", 15, -0.5,14.5); TH1* hxy = new TH2D("hxy", "FDC2 X-Y", 200, -1200, 1200, 200,-500,500); TH1* hxa = new TH2D("hxa", "FDC2 X-A", 200, -1200, 1200, 200,-0.5,0.5); TH1* hyb = new TH2D("hyb", "FDC2 Y-B", 200, -500, 500, 200,-0.5,0.5); // event loop int nevent = 0; while(eventstore->GetNextEvent() && nevent<1000){ calibfdc2hit->ReconstructData(); calibfdc2track->ReconstructData(); //-------------------------------------------------------- // Get FDC2 hit information TClonesArray *fdc2hits = (TClonesArray *)sman->FindDataContainer("SAMURAIFDC2Hit"); if (fdc2hits!=0){ Int_t nhit = fdc2hits->GetEntries(); for (Int_t i=0; iAt(i); hid->Fill( hit->GetID() ); hlayertdc->Fill( hit->GetLayer(), hit->GetTDC() ); } } //-------------------------------------------------------- // Get FDC2 track information TClonesArray *fdc2trks = (TClonesArray*)sman->FindDataContainer("SAMURAIFDC2Track"); if ( 0 != fdc2trks ){ if ( 0 < fdc2trks->GetEntries() ){ TArtDCTrack *trk = (TArtDCTrack*)fdc2trks->At(0);//best track hchi2->Fill( trk->GetChi2() ); hnhitlayer->Fill( trk->GetNumHitLayer() ); hxy->Fill( trk->GetPosition(0), trk->GetPosition(1) ); hxa->Fill( trk->GetPosition(0), trk->GetAngle(0) ); hyb->Fill( trk->GetPosition(1), trk->GetAngle(1) ); } } // clear calibfdc2hit->ClearData(); calibfdc2track->ClearData(); eventstore->ClearData(); ++nevent; } return; }