Reading PicoDst files with FMS data

In order to read the information from the branches without any additional STAR libraries, disable all other branches from the TTree and use SetMakeClass(1).

Adjusted from: StRoot/StPicoEvent/macros/SimplePicoDstAnalyzer.C

Decoding the channel ID and ADC information: StRoot/StPicoEvent/StPicoFmsHit.cxx

    TTree *inTree = (TTree*) inFile->Get("PicoDst");
    
    inTree->SetBranchStatus("*",0);
inTree->SetBranchStatus("Event",1); inTree->SetBranchStatus("FmsHit",1); inTree->SetBranchStatus("FmsHit.*",1); inTree->SetMakeClass(1); Int_t evt; inTree->SetBranchAddress( "Event", &evt); Int_t hits; inTree->SetBranchAddress( "FmsHit", &hits); UShort_t cha[2000]; inTree->SetBranchAddress( "FmsHit.mChannelDetectorId", cha); UShort_t adc[2000]; inTree->SetBranchAddress( "FmsHit.mAdc", adc); for( int i=0; i<inTree->GetEntries(); i++ ) { inTree->GetEntry( i ); //inTree->Show( i ) ; for( int j=0; j<hits; j++ ) { int det = int(cha[j])%32; int tow = int(cha[j]/32); if( det==8 ) H_FMS_ADC[0]->Fill( tow, adc[j] ); if( det==9 ) H_FMS_ADC[1]->Fill( tow, adc[j] ); if( det==10 ) H_FMS_ADC[2]->Fill( tow, adc[j] ); if( det==11 ) H_FMS_ADC[3]->Fill( tow, adc[j] ); if( det==14 ) H_FPS_ADC[0]->Fill( tow, adc[j] ); if( det==15 ) H_FPS_ADC[1]->Fill( tow, adc[j] ); } // end hits } // end events (inTree)


- to do: check picoDsts for st_physics and trigger information
  - FmsHit from MINBIAS trigger for hot channel finding



pp500_production_2017
st_fms, SL18c, 7.86G events, 87380 files, 1.5 TB
st_fms_adc, SL18c, 95k events, 2453 files, 12 GB
st_physics, SL18b, 2.99G events, 575308 files, not on disk
st_physics_adc SL18b, 29.6M events, 74618 files, not on disk

picoDst production is using event cuts that should not be applied to the FMS data (likely the vertex cut brings us down by 1/1000). Jerome is checking the production settings and then we will have to reproduce the picoDst files.