355 #include <sys/stat.h>
356 #include <sys/fcntl.h>
358 #include "StDAQMaker/StFTPCReader.h"
360 #include "StMessMgr.h"
361 #include "StFtpcClusterMaker.h"
362 #include "StFtpcParamReader.hh"
363 #include "StFtpcDbReader.hh"
364 #include "StFtpcGeantReader.hh"
365 #include "StFtpcClusterFinder.hh"
366 #include "StFtpcGasUtilities.hh"
367 #include "StFtpcTrackMaker/StFtpcConfMapPoint.hh"
368 #include "StFtpcGeantPoint.hh"
369 #include "StFtpcFastSimu.hh"
370 #include "St_DataSetIter.h"
373 #include "TObjArray.h"
374 #include "TObjectSet.h"
375 #include "PhysicalConstants.h"
377 #include "tables/St_fcl_ftpcsqndx_Table.h"
378 #include "tables/St_fcl_ftpcadc_Table.h"
380 #include "tables/St_g2t_vertex_Table.h"
381 #include "tables/St_g2t_track_Table.h"
382 #include "tables/St_g2t_ftp_hit_Table.h"
383 #include "tables/St_ffs_gepoint_Table.h"
385 #include "StDetectorDbMaker/StDetectorDbClock.h"
386 #include "StDetectorDbMaker/StDetectorDbFTPCGas.h"
387 #include "StDetectorDbMaker/StDetectorDbFTPCVoltageStatus.h"
389 #include "St_db_Maker/St_db_Maker.h"
392 #include "StFtpcHitCollection.h"
393 #include "StDetectorState.h"
424 memset(m_ThBeg,0,m_ThEnd-m_ThBeg+1);
428 StFtpcClusterMaker::~StFtpcClusterMaker(){
431 Int_t StFtpcClusterMaker::InitRun(
int runnumber){
432 Float_t x[3] = {0,0,0};
434 StarMagField::Instance()->BField(x,b);
435 Double_t gFactor = b[2]/4.980;
438 Int_t dbDate = mDbMaker->GetDateTime().GetDate();
439 Int_t dbTime = mDbMaker->GetDateTime().GetTime();
440 LOG_INFO<<
"dbDate = "<<dbDate<<
" dbTime = "<<dbTime<<
" Run Number = "<<
GetRunNumber()<<
" gFactor = "<<gFactor<<endm;
445 if ( gFactor > 0.8 ) {
446 SetFlavor(
"ffp10kv",
"ftpcVDrift");
447 SetFlavor(
"ffp10kv",
"ftpcdVDriftdP");
448 SetFlavor(
"ffp10kv",
"ftpcDeflection");
449 SetFlavor(
"ffp10kv",
"ftpcdDeflectiondP");
450 LOG_DEBUG <<
"Ftpc drift map flavor set to ffp10kv"<<endm;
452 else if ( gFactor > 0.2 ) {
453 SetFlavor(
"hfp10kv",
"ftpcVDrift");
454 SetFlavor(
"hfp10kv",
"ftpcdVDriftdP");
455 SetFlavor(
"hfp10kv",
"ftpcDeflection");
456 SetFlavor(
"hfp10kv",
"ftpcdDeflectiondP");
457 LOG_DEBUG <<
"Ftpc drift map flavor set to hfp10kv"<<endm;
459 else if ( gFactor > -0.2 ) {
460 SetFlavor(
"zf10kv",
"ftpcVDrift");
461 SetFlavor(
"zf10kv",
"ftpcdVDriftdP");
462 SetFlavor(
"zf10kv",
"ftpcDeflection");
463 SetFlavor(
"zf10kv",
"ftpcdDeflectiondP");
464 LOG_DEBUG <<
"Ftpc drift map flavor set to zf10kv"<<endm;
466 else if ( gFactor > -0.8 ) {
467 SetFlavor(
"hfn10kv",
"ftpcVDrift");
468 SetFlavor(
"hfn10kv",
"ftpcdVDriftdP");
469 SetFlavor(
"hfn10kv",
"ftpcDeflection");
470 SetFlavor(
"hfn10kv",
"ftpcdDeflectiondP");
471 LOG_DEBUG <<
"Ftpc drift map flavor set to hfn10kv"<<endm;
474 SetFlavor(
"ffn10kv",
"ftpcVDrift");
475 SetFlavor(
"ffn10kv",
"ftpcdVDriftdP");
476 SetFlavor(
"ffn10kv",
"ftpcDeflection");
477 SetFlavor(
"ffn10kv",
"ftpcdDeflectiondP");
478 LOG_DEBUG <<
"Ftpc drift map flavor set to ffn10kv"<<endm;
485 double freq = dbclock->getCurrentFrequency()/1000000.0;
487 microsecondsPerTimebin = 1./(freq/2.);
489 microsecondsPerTimebin = 0.;
493 St_DataSet *ftpc_geometry_db = GetDataBase(
"Geometry/ftpc");
494 if ( !ftpc_geometry_db ){
495 LOG_ERROR <<
"InitRun - error Getting FTPC offline database Geometry/ftpc"<<endm;
501 m_dimensions = (St_ftpcDimensions *)dblocal_geometry(
"ftpcDimensions");
502 m_padrow_z = (St_ftpcPadrowZ *)dblocal_geometry(
"ftpcPadrowZ");
503 m_asicmap = (St_ftpcAsicMap *)dblocal_geometry(
"ftpcAsicMap");
504 m_clustergeo = (St_ftpcClusterGeom *)dblocal_geometry(
"ftpcClusterGeom");
505 m_cathode = (St_ftpcInnerCathode *)dblocal_geometry(
"ftpcInnerCathode");
509 St_DataSet *ftpc_calibrations_db = GetDataBase(
"Calibrations/ftpc");
510 if ( !ftpc_calibrations_db ){
511 LOG_ERROR <<
"InitRun - error getting FTPC offline database Calibrations/ftpc"<<endm;
517 m_efield = (St_ftpcEField *)dblocal_calibrations(
"ftpcEField" );
524 m_vdrift = (St_ftpcVDrift *)dblocal_calibrations(
"ftpcVDrift" );
525 m_deflection = (St_ftpcDeflection *)dblocal_calibrations(
"ftpcDeflection" );
526 m_dvdriftdp = (St_ftpcdVDriftdP *)dblocal_calibrations(
"ftpcdVDriftdP" );
527 m_ddeflectiondp = (St_ftpcdDeflectiondP *)dblocal_calibrations(
"ftpcdDeflectiondP" );
529 m_ampslope = (St_ftpcAmpSlope *)dblocal_calibrations(
"ftpcAmpSlope" );
530 m_ampoffset = (St_ftpcAmpOffset *)dblocal_calibrations(
"ftpcAmpOffset");
531 m_timeoffset = (St_ftpcTimeOffset *)dblocal_calibrations(
"ftpcTimeOffset");
532 m_driftfield = (St_ftpcDriftField *)dblocal_calibrations(
"ftpcDriftField");
533 m_gas = (St_ftpcGas *)dblocal_calibrations(
"ftpcGas");
534 m_electronics = (St_ftpcElectronics *)dblocal_calibrations(
"ftpcElectronics");
535 m_temps = (St_ftpcTemps *)dblocal_calibrations(
"ftpcTemps");
540 Int_t StFtpcClusterMaker::Init(){
552 LOG_INFO <<
"StFtpcClusterMaker entered with m_Mode = "<<
m_Mode <<endm;
555 LOG_INFO <<
"StFtpcClusterMaker running with fdbg option selected"<<endm;
559 LOG_INFO <<
"StFtpcClusterMaker writing to DEBUGFILE (fdbg option selected) for laser run (flaser option selected)"<<endm;
562 else {laserRun = kFALSE;}
565 LOG_INFO <<
"StFtpcClusterMaker running with fgain option selected"<<endm;
570 LOG_ERROR <<
"StFtpcClusterMaker exiting - run parameter database StarDb/ftpc not found"<<endm;
575 m_clusterpars = (St_ftpcClusterPars *)local(
"ftpcClusterPars");
576 m_fastsimgas = (St_ftpcFastSimGas *)local(
"ftpcFastSimGas");
577 m_fastsimpars = (St_ftpcFastSimPars *)local(
"ftpcFastSimPars");
589 m_chargestep_West =
new TH1F(
"fcl_chargestepW",
"FTPC West chargestep",260, -0.5, 259.5);
591 m_chargestep_East =
new TH1F(
"fcl_chargestepE",
"FTPC East chargestep",260, -0.5, 259.5);
593 m_cluster_radial_West =
new TH1F(
"fcl_radialW",
"FTPCW cluster radial position",700,0.,35.);
594 m_cluster_radial_West->SetLineColor(kBlue);
602 if (IAttr(
".histos")) {
604 m_pnt_xyFW =
new TH2F(
"PointXYFtpcW",
"point: x-y distribution of hits, ftpcW",70,-35,35,70,-35,35);
605 m_pnt_xyFE =
new TH2F(
"PointXYFtpcE",
"point: x-y distribution of hits, ftpcE",70,-35,35,70,-35,35);
606 m_pnt_planeF =
new TH1F(
"PointPlaneF",
"point: plane distribution of hits, ftpc",20,0.5,20.5);
607 m_pnt_padtimeFW =
new TH2F(
"PointPadTimeFtpcW",
"point: #pads vs #timebins of hits, ftpcW",12,0.5,12.5,10,0.5,10.5);
610 m_pnt_padtimeFE =
new TH2F(
"PointPadTimeFtpcE",
"point: #pads vs #timebins of hits, ftpcE",12,0.5,12.5,10,0.5,10.5);
614 m_maxadc_West =
new TH1F(
"fcl_maxadcW",
"FTPCW MaxAdc",50,0.5,50.5);
615 m_maxadc_East =
new TH1F(
"fcl_maxadcE",
"FTPCE MaxAdc",50,0.5,50.5);
616 m_charge_West =
new TH1F(
"fcl_chargeW",
"FTPCW charge",50,0.5,500.5);
617 m_charge_East =
new TH1F(
"fcl_chargeE",
"FTPCE charge",50,0.5,500.5);
619 m_flags =
new TH1F(
"fcl_flags" ,
"FTPC cluster finder flags" ,8,0.,8.);
620 m_row =
new TH1F(
"fcl_row" ,
"FTPC rows" ,20,1.,21.);
621 m_sector =
new TH1F(
"fcl_sector" ,
"FTPC sectors" ,6,1.,7.);
622 m_row_sector =
new TH2F(
"fcl_row_sector",
"FTPC(fcl) row vs. sector" ,20,1.,21.,6,1.,7.);
627 m_hitsvspad =
new TH2F(
"fcl_hitsvspad",
"#hits vs. padlength",10,0.5,10.5,11,0.5,11.5);
628 m_hitsvstime =
new TH2F(
"fcl_hitsvstime",
"#hits vs. timelength",12,0.5,12.5,11,0.5,11.5);
632 return StMaker::Init();
638 int using_FTPC_slow_simulator = 0;
640 mCurrentEvent = (
StEvent*) GetInputDS(
"StEvent");
642 if (!(mFtpcHitColl = mCurrentEvent->ftpcHitCollection())) {
644 mCurrentEvent->setFtpcHitCollection(mFtpcHitColl);
646 }
else mFtpcHitColl = 0;
651 if ( paramReader.returnCode !=
kStOK ) {
652 LOG_ERROR <<
"Exiting - error constructing StFtpcParamReader (paramReader.returnCode = "<<paramReader.returnCode<<
")"<<endm;
674 if ( dbReader.returnCode !=
kStOK ) {
675 LOG_ERROR <<
"Exiting - error constructing StFtpcDbReader (dbReader.returnCode = "<<dbReader.returnCode<<
")"<<endm;
679 if ( paramReader.gasTemperatureWest() == 0 && paramReader.gasTemperatureEast() == 0) {
680 dbReader.setLaserRun(laserRun);
681 LOG_INFO<<
"Using the following values from database:"<<endm;
682 if (microsecondsPerTimebin > 0.0 ) {
683 dbReader.setMicrosecondsPerTimebin(microsecondsPerTimebin);
684 LOG_INFO<<
" microsecondsPerTimebin = "<<dbReader.microsecondsPerTimebin()<<
" (calculated from RHIC Clock Frequency)"<<endm;
686 LOG_INFO<<
" microsecondsPerTimebin = "<<dbReader.microsecondsPerTimebin()<<
" (default value from database)"<<endm;
688 LOG_INFO<<
" SwapRDO6RDO7East = "<<dbReader.SwapRDO6RDO7East()<<endm;
689 LOG_INFO<<
" EastIsInverted = "<<dbReader.EastIsInverted()<<endm;
690 LOG_INFO<<
" Asic2EastNotInverted = "<<dbReader.Asic2EastNotInverted()<<endm;
691 LOG_INFO<<
" tzero = "<<dbReader.tZero()<<endm;
692 LOG_INFO<<
" temperatureDifference = "<<dbReader.temperatureDifference()<<endm;
693 LOG_INFO<<
" defaultTemperatureWest = "<<dbReader.defaultTemperatureWest()<<endm;
694 LOG_INFO<<
" defaultTemperatureEast = "<<dbReader.defaultTemperatureEast()<<endm;
695 LOG_INFO<<
" adjustAverageWest = "<<dbReader.adjustAverageWest()<<endm;
696 LOG_INFO<<
" adjustAverageEast = "<<dbReader.adjustAverageEast()<<endm;
697 LOG_INFO<<
" magboltzVDrift(0,0) = "<<dbReader.magboltzVDrift(0,0)<<endm;
698 LOG_INFO<<
" magboltzDeflection(0,0) = "<<dbReader.magboltzDeflection(0,0)<<endm;
699 LOG_INFO<<
" offsetCathodeWest = "<<dbReader.offsetCathodeWest()<<endm;
700 LOG_INFO<<
" offsetCathodeEast = "<<dbReader.offsetCathodeEast()<<endm;
701 LOG_INFO<<
" angleOffsetWest = "<<dbReader.angleOffsetWest()<<endm;
702 LOG_INFO<<
" angleOffsetEast = "<<dbReader.angleOffsetEast()<<endm;
703 LOG_INFO<<
" minChargeWindow = "<<dbReader.minChargeWindow()<<endm;
704 LOG_INFO <<
" using gain table: amplitudeSlope(1,0) = "<<dbReader.amplitudeSlope(1,0)<<
", amplitudeSlope(1,1) = "<<dbReader.amplitudeSlope(1,1)<< endm;
706 LOG_DEBUG<<
" Using microsecondsPerTimebin = "<<dbReader.microsecondsPerTimebin()<<
" for this event"<<endm;
713 daqDataset=GetDataSet(
"StDAQReader");
716 LOG_DEBUG <<
"Using StDAQReader to get StFTPCReader" << endm;
718 LOG_ERROR <<
"Exiting - daqDataset not found" << endm;
723 LOG_ERROR <<
"Exiting - daqReader not found" << endm;
726 ftpcReader=daqReader->getFTPCReader();
728 if (!ftpcReader || !ftpcReader->checkForData()) {
729 LOG_WARN <<
"No FTPC data available!" << endm;
737 LOG_ERROR <<
"Error getting FTPC Offline database: Calibrations_ftpc/ftpcGasOut"<<endm;
751 returnCode = gasUtils.barometricPressure();
756 Int_t dbDate = mDbMaker->GetDateTime().GetDate();
760 returnCode = gasUtils.averageTemperatureWest(dbDate,
GetRunNumber());
763 if (paramReader.gasTemperatureWest() == 0) {
769 LOG_DEBUG <<
"daqReader->SVTPresent() = " << daqReader->SVTPresent() << endm;
770 returnCode = gasUtils.defaultTemperatureWest(dbDate,daqReader->SVTPresent());
775 returnCode = gasUtils.averageTemperatureEast(dbDate,
GetRunNumber());
778 if (paramReader.gasTemperatureEast() == 0 ) {
784 LOG_DEBUG <<
"daqReader->SVTPresent() = " << daqReader->SVTPresent() << endm;
785 returnCode = gasUtils.defaultTemperatureEast(dbDate,daqReader->SVTPresent());
792 paramReader.setAdjustedAirPressureWest(paramReader.normalizedNowPressure()*((dbReader.baseTemperature()+STP_Temperature)/(paramReader.gasTemperatureWest()+STP_Temperature)));
797 paramReader.setAdjustedAirPressureEast(paramReader.normalizedNowPressure()*((dbReader.baseTemperature()+STP_Temperature)/(paramReader.gasTemperatureEast()+STP_Temperature)));
799 LOG_INFO <<
" Using normalizedNowPressure = "<<paramReader.normalizedNowPressure()<<
" gasTemperatureWest = "<<paramReader.gasTemperatureWest()<<
" gasTemperatureEast = "<<paramReader.gasTemperatureEast()<<
" to calculate and set adjustedAirPressureWest = "<<paramReader.adjustedAirPressureWest()<<
" and adjustedAirPressureEast = "<<paramReader.adjustedAirPressureEast()<<endm;
803 mHitArray =
new TObjArray(10000);
804 mHitArray->SetOwner(kTRUE);
808 TObjArray ghitarray(10000);
809 ghitarray.SetOwner();
814 mix = GetDataSet(
"FtpcMixer");
816 LOG_INFO <<
" DataSet FtpcMixer found" << endm;
823 St_fcl_ftpcadc *adc = (St_fcl_ftpcadc *) ftpc_raw.
Find(
"fcl_ftpcadc");
824 St_fcl_ftpcsqndx *sqndx = (St_fcl_ftpcsqndx *) ftpc_raw.
Find(
"fcl_ftpcsqndx");
827 ftpcReader=
new StFTPCReader((
short unsigned int *) sqndx->GetTable(),
829 (
char *) adc->GetTable(),
832 LOG_INFO <<
"Created StFTPCReader from StFtpcMixerMaker(Embedding) tables #fcl_ftpcsqndx rows = "<<sqndx->GetNRows()<<
" #fcl_ftpcadc rows = "<<adc->GetNRows() << endm;
833 using_FTPC_slow_simulator = 1;
836 paramReader.setGasTemperatureWest(dbReader.defaultTemperatureWest());
837 paramReader.setGasTemperatureEast(dbReader.defaultTemperatureEast());
838 LOG_INFO <<
"Found StFtpcMixerMaker sequences with #fcl_ftpcsqndx rows = "<<sqndx->GetNRows()<<
" #fcl_ftpcadc rows = "<<adc->GetNRows() <<endm;
841 LOG_WARN <<
"FTPC Embedding Tables are not found:"
842 <<
" fcl_ftpcsqndx = " << sqndx
843 <<
" fcl_ftpcadc = " << adc << endm;
855 St_fcl_ftpcsqndx *fcl_ftpcsqndx = (St_fcl_ftpcsqndx*)
get(
"fcl_ftpcsqndx");
856 St_fcl_ftpcadc *fcl_ftpcadc = (St_fcl_ftpcadc* )
get(
"fcl_ftpcadc");
858 if (fcl_ftpcsqndx&&fcl_ftpcadc) {
860 ftpcReader=
new StFTPCReader((
short unsigned int *) fcl_ftpcsqndx->GetTable(),
861 fcl_ftpcsqndx->GetNRows(),
862 (
char *) fcl_ftpcadc->GetTable(),
863 fcl_ftpcadc->GetNRows());
865 LOG_INFO <<
"Created StFTPCReader from FTPC Slow Simulator tables #fcl_ftpcsqndx rows = "<<fcl_ftpcsqndx->GetNRows()<<
" #fcl_ftpcadc rows = "<<fcl_ftpcadc->GetNRows() << endm;
866 using_FTPC_slow_simulator = 1;
869 paramReader.setGasTemperatureWest(dbReader.defaultTemperatureWest());
870 paramReader.setGasTemperatureEast(dbReader.defaultTemperatureEast());
873 LOG_WARN <<
"FTPC Slow Simulator Tables are not found:"
874 <<
" fcl_ftpcsqndx = " << fcl_ftpcsqndx
875 <<
" fcl_ftpcadc = " << fcl_ftpcadc << endm;
883 LOG_DEBUG <<
"start running StFtpcClusterFinder" << endm;
886 Int_t searchResult =
kStOK;
890 cldebug.fillRun((
int)
GetRunNumber(), (
int) mDbMaker->GetDateTime().GetDate(), (int) mDbMaker->GetDateTime().GetTime(), dbReader.microsecondsPerTimebin(), paramReader.normalizedNowPressure(), paramReader.standardPressure(),dbReader.baseTemperature(), paramReader.gasTemperatureWest(), paramReader.gasTemperatureEast(),paramReader.adjustedAirPressureWest()-paramReader.standardPressure(), paramReader.adjustedAirPressureEast()-paramReader.standardPressure());
902 if (Debug()) fcl.DebugOn=kTRUE;
903 else fcl.DebugOn=kFALSE;
904 searchResult = fcl.search();
917 if (Debug()) fcl.DebugOn=kTRUE;
918 else fcl.DebugOn=kFALSE;
919 searchResult = fcl.search();
924 if (using_FTPC_slow_simulator)
delete ftpcReader;
930 St_g2t_vertex *g2t_vertex = (St_g2t_vertex *) geant(
"g2t_vertex");
931 St_g2t_track *g2t_track = (St_g2t_track *) geant(
"g2t_track");
932 St_g2t_ftp_hit *g2t_ftp_hit = (St_g2t_ftp_hit *) geant(
"g2t_ftp_hit");
933 if (g2t_vertex && g2t_track && g2t_ftp_hit){
939 LOG_DEBUG <<
"NO RAW DATA AVAILABLE - start running StFtpcFastSimu" << endm;
948 LOG_DEBUG <<
"finished running StFtpcFastSimu" << endm;
953 Int_t num_points = mHitArray->GetEntriesFast();
954 if(num_points>0 && mFtpcHitColl) {
958 for (Int_t i=0; i<num_points; i++) {
960 point->ToStEvent(mFtpcHitColl);
966 if ( !voltageStatus) {
967 LOG_ERROR <<
"Error getting FTPC Offline database: Calibrations_ftpc/ftpcVoltageStatus"<<endm;
972 if (voltageStatus && mCurrentEvent) {
973 mCurrentEvent->addDetectorState(
new StDetectorState(kFtpcEastId,voltageStatus->getStatusFTPCEast()));
974 mCurrentEvent->addDetectorState(
new StDetectorState(kFtpcWestId,voltageStatus->getStatusFTPCWest()));
978 Int_t num_gpoints = ghitarray.GetEntriesFast();
981 St_ffs_gepoint *ffs_gepoint =
new St_ffs_gepoint(
"ffs_fgepoint",num_gpoints);
984 ffs_gepoint_st *gpointTable= ffs_gepoint->GetTable();
988 for (Int_t i=0; i<num_gpoints; i++)
991 gpoint->ToTable(&(gpointTable[i]));
994 ffs_gepoint->SetNRows(num_gpoints);
1008 void StFtpcClusterMaker::MakeHistograms()
1010 if (!mHitArray)
return;
1014 for (Int_t i=0; i<mHitArray->GetEntriesFast();i++) {
1019 Float_t rpos = ::sqrt(hit->GetX()*hit->GetX() + hit->GetY()*hit->GetY());
1020 if (hit->GetPadRow() <=10 ) {
1021 m_cluster_radial_West->Fill(rpos);
1022 if (IAttr(
".histos")) {
1028 m_charge_West->Fill(hit->GetCharge());
1031 else if (hit->GetPadRow() >=11 ) {
1033 if (IAttr(
".histos")) {
1038 m_maxadc_East->Fill(hit->GetMaxADC());
1039 m_charge_East->Fill(hit->GetCharge());
1043 if (IAttr(
".histos") && Debug()) {
1044 Int_t flag = hit->GetFlags();
1047 for (Int_t twofac=128; twofac>0; twofac=twofac/2,bin--) {
1048 Int_t nbit = flag/twofac;
1049 if (nbit != 1)
continue;
1051 flag = flag - nbit*twofac;
1055 Float_t nrow = hit->GetPadRow();
1057 Float_t nsec = hit->GetSector();
TH1F * m_flags
FTPC East charge step.
virtual void AddData(TDataSet *data, const char *dir=".data")
User methods.
TH1F * m_cluster_radial_East
radial position of clusters in FTPC West
TH2F * m_pnt_xyFE
xy dist. of hits, ftpcW
TH2F * m_hitsvspad
charge step by (6*row)+sector
TH1F * m_pnt_planeF
padlength vs timelength of hits, ftpcW
TH1F * m_chargestep_East
FTPC West charge step.
TH2F * m_csteps
row vs. sector
TH1F * m_row
quality control flags
TH2F * m_pnt_padtimeFW
xy dist. of hits, ftpcE
TH1F * m_maxadc_West
number of found hits over cluster timelength
TH2F * m_pnt_padtimeFE
plane dist. of hits, ftpc
virtual TObject * GetObject() const
The depricated method (left here for the sake of the backward compatibility)
TH1F * m_chargestep_West
radial position of clusters in FTPC East
virtual Int_t GetRunNumber() const
Returns the current RunNumber.
virtual TDataSet * Find(const Char_t *path, TDataSet *rootset=0, Bool_t mkdir=kFALSE, Bool_t titleFlag=kFALSE)
TH2F * m_row_sector
padlength vs timelength of hits, ftpcE
TH2F * m_hitsvstime
number of found hits over cluster padlength