BRAT 2.4.5
Class index
Full class index
brahmlib
BRAHMS
ROOT page
//
// $Id: BrZdcRdoModule.cxx,v 1.14 2002/06/20 06:44:20 makeev_a Exp $
//

#ifndef BRAT_BrZdcRdoModule
#include "BrZdcRdoModule.h"
#endif

#ifndef BRAT_BrZdcDig
#include "BrZdcDig.h"
#endif

#ifndef BRAT_BrZdcRdo
#include "BrZdcRdo.h"
#endif

#ifndef BRAT_BrEventNode
#include "BrEventNode.h"
#endif

#ifndef BRAT_BrTableNames
#include "BrTableNames.h"
#endif

#ifndef BRAT_BrDetectorList
#include "BrDetectorList.h"
#endif

#ifndef BRAT_BrUnits
#include "BrUnits.h"
#endif

#ifndef ROOT_TDirectory
#include "TDirectory.h"
#endif

#ifndef WIN32
#include <iostream>
#else
#include <iostream.h>
#endif

#include "BrCalibrationManager.h"
#include "BrCalibration.h"

ClassImp (BrZdcRdoModule)

 BrZdcRdoModule::BrZdcRdoModule ()
{

}



 BrZdcRdoModule::BrZdcRdoModule (const Char_t *name, const Char_t *title):BrModule (name, title)
{
    SetDefaultParameters ();
}



 BrZdcRdoModule::~BrZdcRdoModule ()
{

}



 void BrZdcRdoModule::DefineHistograms ()
{
    if (GetState ()!= kInit)
    {
        Stop ("DefineHistograms", "Must be called after Init");
        return;
    }

    TDirectory *saveDir= gDirectory;
    TDirectory *histDir= gDirectory->mkdir (GetName ());
    histDir->cd ();

    fEnergyHisto= new TH2F ("Energy", "Right vs left energy", 1000, 0., 1000., 1000, 0., 1000.);
    fEnergyHisto->SetXTitle ("left energy, GeV");
    fEnergyHisto->SetYTitle ("right energy, GeV");
    fEnergyHisto->SetZTitle ("events");

    fTimeHisto= new TH2F ("Time", "Right vs left time", 100, 0., 100., 100, 0., 100.);
    fTimeHisto->SetXTitle ("left time, ns");
    fTimeHisto->SetYTitle ("right time, ns");
    fTimeHisto->SetZTitle ("events");

    fVertexZHisto= new TH1F ("Vertex", "Vertex z-coordinate", 400, -200., 200.);
    fVertexZHisto->SetXTitle ("z-vertex, cm");
    fVertexZHisto->SetYTitle ("events");

    fVertexZCfdHisto= new TH1F ("CfdVertex", "Vertex z-coodinate", 400, -200., 200.);
    fVertexZCfdHisto->SetXTitle ("z-vertex, cm");
    fVertexZCfdHisto->SetYTitle ("events");

    gDirectory= saveDir;
}



 void BrZdcRdoModule::SetDefaultParameters ()
{
    fZOffset= 0.0;
    fZCfdOffset= 50.0;

    SetUseSlewing ();
    SetUseOffset ();
}



 void BrZdcRdoModule::Init ()
{
    SetState (kInit);

    Int_t iLR;
    fDataBase= kTRUE;

    if (fDataBase)
    {
        BrCalibrationManager *manager= BrCalibrationManager::Instance ();

        fCalibration [0]= static_cast <BrZdcCalibration*> (manager->Register ("BrZdcCalibration", "ZDCLeft"));
        fCalibration [1]= static_cast <BrZdcCalibration*> (manager->Register ("BrZdcCalibration", "ZDCRight"));

        fVtxCalib= static_cast <BrVertexCalibration*> (manager->Register ("BrVertexCalibration", "Vertex"));

	for (iLR= 0;  iLR < 2; iLR++)
        {
            fCalibration [iLR]->Use ("TdcGain");

            if (fUseSlewing)
            {
                fCalibration [iLR]->Use ("Slewpar1");
                fCalibration [iLR]->Use ("Slewpar2");
                fCalibration [iLR]->Use ("Slewpar3");
                fCalibration [iLR]->Use ("Slewpar4");
                fCalibration [iLR]->Use ("Slewpar5");
            }

            fCalibration [iLR]->Use ("PedHi");
            fCalibration [iLR]->Use ("PedWidthHi");
            //fCalibration [iLR]->Use ("AdcGainHi"); // not in the DB yet...
            fCalibration [iLR]->Use ("PedLo");
            fCalibration [iLR]->Use ("PedWidthLo");
            //fCalibration [iLR]->Use ("AdcGainLo"); // not in the DB yet...
        }

	if (fUseOffset) fVtxCalib->Use ("zdcVertexOffset");
    }
}



 void BrZdcRdoModule::Event (BrEventNode *InputTable, BrEventNode *rdoevent)
{
    SetState (kEvent);

    if (fDataBase)
    {
        //----- TDC gains

        if (fCalibration [0]->RevisionExists ("TdcGain") && fCalibration [1]->RevisionExists ("TdcGain"))
	{
	    fLeftTdc1Gain= fCalibration [0]->GetTdcGain (1);
	    fLeftTdc2Gain= fCalibration [0]->GetTdcGain (2);
            fLeftTdc3Gain= fCalibration [0]->GetTdcGain (3);
            fLeftTdcSumGain= fCalibration [0]->GetTdcGain (4);

            fRightTdc1Gain= fCalibration [1]->GetTdcGain (1);
            fRightTdc2Gain= fCalibration [1]->GetTdcGain (2);
            fRightTdc3Gain= fCalibration [1]->GetTdcGain (3);
            fRightTdcSumGain= fCalibration [1]->GetTdcGain (4);
        }

        //----- slew correction parameters

        if (fCalibration [0]->RevisionExists ("Slewpar1") && fCalibration [1]->RevisionExists ("Slewpar1") &&
	    fCalibration [0]->RevisionExists ("Slewpar2") && fCalibration [1]->RevisionExists ("Slewpar2") &&
	    fCalibration [0]->RevisionExists ("Slewpar3") && fCalibration [1]->RevisionExists ("Slewpar3") &&
	    fCalibration [0]->RevisionExists ("Slewpar4") && fCalibration [1]->RevisionExists ("Slewpar4") &&
	    fCalibration [0]->RevisionExists ("Slewpar5") && fCalibration [1]->RevisionExists ("Slewpar5")
	   )
	{
            fLeft1P0= fCalibration [0]->GetSlewpar1 (1);
            fLeft1P1= fCalibration [0]->GetSlewpar2 (1);
            fLeft1P2= fCalibration [0]->GetSlewpar3 (1);
            fLeft1P3= fCalibration [0]->GetSlewpar4 (1);
            fLeft1P4= fCalibration [0]->GetSlewpar5 (1);

            fLeft2P0= fCalibration [0]->GetSlewpar1 (2);
            fLeft2P1= fCalibration [0]->GetSlewpar2 (2);
            fLeft2P2= fCalibration [0]->GetSlewpar3 (2);
            fLeft2P3= fCalibration [0]->GetSlewpar4 (2);
            fLeft2P4= fCalibration [0]->GetSlewpar5 (2);

            fLeft3P0= fCalibration [0]->GetSlewpar1 (3);
            fLeft3P1= fCalibration [0]->GetSlewpar2 (3);
            fLeft3P2= fCalibration [0]->GetSlewpar3 (3);
            fLeft3P3= fCalibration [0]->GetSlewpar4 (3);
            fLeft3P4= fCalibration [0]->GetSlewpar5 (3);

            fRight1P0= fCalibration [1]->GetSlewpar1 (1);
            fRight1P1= fCalibration [1]->GetSlewpar2 (1);
            fRight1P2= fCalibration [1]->GetSlewpar3 (1);
            fRight1P3= fCalibration [1]->GetSlewpar4 (1);
            fRight1P4= fCalibration [1]->GetSlewpar5 (1);

            fRight2P0= fCalibration [1]->GetSlewpar1 (2);
            fRight2P1= fCalibration [1]->GetSlewpar2 (2);
            fRight2P2= fCalibration [1]->GetSlewpar3 (2);
            fRight2P3= fCalibration [1]->GetSlewpar4 (2);
            fRight2P4= fCalibration [1]->GetSlewpar5 (2);

            fRight3P0= fCalibration [1]->GetSlewpar1 (3);
            fRight3P1= fCalibration [1]->GetSlewpar2 (3);
            fRight3P2= fCalibration [1]->GetSlewpar3 (3);
            fRight3P3= fCalibration [1]->GetSlewpar4 (3);
            fRight3P4= fCalibration [1]->GetSlewpar5 (3);
        }

        //----- ADC pedestals

	if (fCalibration [0]->RevisionExists ("PedHi") && fCalibration [1]->RevisionExists ("PedHi"))
        {
            fLeftPed1= fCalibration [0]->GetPedHi (1);
            fLeftPed2= fCalibration [0]->GetPedHi (2);
            fLeftPed3= fCalibration [0]->GetPedHi (3);
            fLeftPedSum= fCalibration [0]->GetPedHi (4);

            fRightPed1= fCalibration [1]->GetPedHi (1);
            fRightPed2= fCalibration [1]->GetPedHi (2);
            fRightPed3= fCalibration [1]->GetPedHi (3);
            fRightPedSum= fCalibration [1]->GetPedHi (4);
        }

	if (fCalibration [0]->RevisionExists ("PedLo") && fCalibration [1]->RevisionExists ("PedLo"))
        {
            fLeftPed1Lo= fCalibration [0]->GetPedLo (1);
            fLeftPed2Lo= fCalibration [0]->GetPedLo (2);
            fLeftPed3Lo= fCalibration [0]->GetPedLo (3);
            fLeftPedSumLo= fCalibration [0]->GetPedLo (4);

            fRightPed1Lo= fCalibration [1]->GetPedLo (1);
            fRightPed2Lo= fCalibration [1]->GetPedLo (2);
            fRightPed3Lo= fCalibration [1]->GetPedLo (3);
            fRightPedSumLo= fCalibration [1]->GetPedLo (4);
        }

        //----- ADC gains (not in the DB yet...)

        /*if (fCalibration [0]->RevisionExists ("AdcGainHi") && fCalibration [1]->RevisionExists ("AdcGainHi"))
        {
	    fLeftAdcSumGain= fCalibration [0]->GetAdcGainHi (4);
            fRightAdcSumGain= fCalibration [1]->GetAdcGainHi (4);
        }

	if (fCalibration [0]->RevisionExists ("AdcGainLo") && fCalibration [1]->RevisionExists ("AdcGainLo"))
        {
            fLeftAdcSumGainLo= fCalibration [0]->GetAdcGainLo (4);
            fRightAdcSumGainLo= fCalibration [1]->GetAdcGainLo (4);
        }*/

        /*cout << "--- ZDC calibration parameters ---" << endl;

        cout << "fLeftTdc1Gain= " << fLeftTdc1Gain << endl;
        cout << "fLeftTdc2Gain= " << fLeftTdc2Gain << endl;
        cout << "fLeftTdc3Gain= " << fLeftTdc3Gain << endl;
        cout << "fLeftTdcSumGain= " << fLeftTdcSumGain << endl;
        cout << "---------------------------" << endl;
        cout << "fRightTdc1Gain= " << fRightTdc1Gain << endl;
        cout << "fRightTdc2Gain= " << fRightTdc2Gain << endl;
        cout << "fRightTdc3Gain= " << fRightTdc3Gain << endl;
        cout << "fRightTdcSumGain= " << fRightTdcSumGain << endl;
        cout << "---------------------------" << endl;
        cout << "fLeft1P0= " << fLeft1P0 << endl;
        cout << "fLeft1P1= " << fLeft1P1 << endl;
        cout << "fLeft1P2= " << fLeft1P2 << endl;
        cout << "fLeft1P3= " << fLeft1P3 << endl;
        cout << "fLeft1P4= " << fLeft1P4 << endl;
        cout << "---------------------------" << endl;
        cout << "fLeft2P0= " << fLeft2P0 << endl;
        cout << "fLeft2P1= " << fLeft2P1 << endl;
        cout << "fLeft2P2= " << fLeft2P2 << endl;
        cout << "fLeft2P3= " << fLeft2P3 << endl;
        cout << "fLeft2P4= " << fLeft2P4 << endl;
        cout << "---------------------------" << endl;
        cout << "fLeft3P0= " << fLeft3P0 << endl;
        cout << "fLeft3P1= " << fLeft3P1 << endl;
        cout << "fLeft3P2= " << fLeft3P2 << endl;
        cout << "fLeft3P3= " << fLeft3P3 << endl;
        cout << "fLeft3P4= " << fLeft3P4 << endl;
        cout << "---------------------------" << endl;
        cout << "fRight1P0 " << fRight1P0 << endl;
        cout << "fRight1P1 " << fRight1P1 << endl;
        cout << "fRight1P2 " << fRight1P2 << endl;
        cout << "fRight1P3 " << fRight1P3 << endl;
        cout << "fRight1P4 " << fRight1P4 << endl;
        cout << "---------------------------" << endl;
        cout << "fRight2P0 " << fRight2P0 << endl;
        cout << "fRight2P1 " << fRight2P1 << endl;
        cout << "fRight2P2 " << fRight2P2 << endl;
        cout << "fRight2P3 " << fRight2P3 << endl;
        cout << "fRight2P4 " << fRight2P4 << endl;
        cout << "---------------------------" << endl;
        cout << "fRight3P0 " << fRight3P0 << endl;
        cout << "fRight3P1 " << fRight3P1 << endl;
        cout << "fRight3P2 " << fRight3P2 << endl;
        cout << "fRight3P3 " << fRight3P3 << endl;
        cout << "fRight3P4 " << fRight3P4 << endl;
        cout << "---------------------------" << endl;
        cout << "fLeftPed1 " << fLeftPed1 << endl;
        cout << "fLeftPed2 " << fLeftPed2 << endl;
        cout << "fLeftPed3 " << fLeftPed3 << endl;
        cout << "fLeftPedSum " << fLeftPedSum << endl;
        cout << "---------------------------" << endl;
        cout << "fLeftPed1Lo " << fLeftPed1Lo << endl;
        cout << "fLeftPed2Lo " << fLeftPed2Lo << endl;
        cout << "fLeftPed3Lo " << fLeftPed3Lo << endl;
        cout << "fLeftPedSumLo " << fLeftPedSumLo << endl;
        cout << "---------------------------" << endl;
        cout << "fRightPed1 " << fRightPed1 << endl;
        cout << "fRightPed2 " << fRightPed2 << endl;
        cout << "fRightPed3 " << fRightPed3 << endl;
        cout << "fRightPedSum " << fRightPedSum << endl;
        cout << "---------------------------" << endl;
        cout << "fRightPed1Lo " << fRightPed1Lo << endl;
        cout << "fRightPed2Lo " << fRightPed2Lo << endl;
        cout << "fRightPed3Lo " << fRightPed3Lo << endl;
        cout << "fRightPedSumLo " << fRightPedSumLo << endl;
        cout << "---------------------------" << endl;*/

	if (fVtxCalib->RevisionExists ("zdcVertexOffset")) fZOffset= fVtxCalib->GetZdcOffset ();
    }

    Float_t a1L, a2L, a3L, aSumL, aDigitalL, a1R, a2R, a3R, aSumR, aDigitalR, t1L, t2L, t3L, tSumL, t1R, t2R, t3R, tSumR;
    Float_t eL, eR, tL, tR, position;
    Float_t x= 0.0, NaN= 99999.0;

    Float_t a1L_Lo, a2L_Lo, a3L_Lo, aSumL_Lo, aDigitalL_Lo, a1R_Lo, a2R_Lo, a3R_Lo, aSumR_Lo, aDigitalR_Lo;
    Float_t tSumCfdL, tSumCfdR, positionCfd;
    Float_t eL_Lo, eR_Lo;

    BrZdcDig *digzdc_p;

    TString tableName ("");
    tableName= "Rdo";
    tableName+= BrDetectorList::GetDetectorName (kBrZDC);
    BrZdcRdo *rdodata= new BrZdcRdo ("RdoZDC", "RDO data");
    rdoevent->AddObject (rdodata);

    //----- read high-gain ADC data table

    if ((digzdc_p= (BrZdcDig*) InputTable->GetObject (BRTABLENAMES kDigZDC)))
    {
        rdodata->SetLeftAdc1 (a1L= digzdc_p->GetLeftAdc (0));
        rdodata->SetLeftAdc2 (a2L= digzdc_p->GetLeftAdc (1));
        rdodata->SetLeftAdc3 (a3L= digzdc_p->GetLeftAdc (2));
        rdodata->SetLeftAdcSum (aSumL= digzdc_p->GetLeftAdcSum ());
        rdodata->SetLeftDigitalSum (aDigitalL= (a1L+a2L+a3L));

        rdodata->SetRightAdc1 (a1R= digzdc_p->GetRightAdc (0));
        rdodata->SetRightAdc2 (a2R= digzdc_p->GetRightAdc (1));
        rdodata->SetRightAdc3 (a3R= digzdc_p->GetRightAdc (2));
        rdodata->SetRightAdcSum (aSumR= digzdc_p->GetRightAdcSum ());
        rdodata->SetRightDigitalSum (aDigitalR= (a1R+a2R+a3R));

        rdodata->SetLeftTdc1 (t1L= digzdc_p->GetLeftTdc (0));
        rdodata->SetLeftTdc2 (t2L= digzdc_p->GetLeftTdc (1));
        rdodata->SetLeftTdc3 (t3L= digzdc_p->GetLeftTdc (2));
        rdodata->SetLeftTdcSum (tSumL= digzdc_p->GetLeftTdcSum ());

        rdodata->SetRightTdc1 (t1R= digzdc_p->GetRightTdc (0));
        rdodata->SetRightTdc2 (t2R= digzdc_p->GetRightTdc (1));
        rdodata->SetRightTdc3 (t3R= digzdc_p->GetRightTdc (2));
        rdodata->SetRightTdcSum (tSumR= digzdc_p->GetRightTdcSum ());

        //----- energy in high-gain ADC

        //eL= (aSumL- fLeftPedSum)* fLeftAdcSumGain;
        //eR= (aSumR- fRightPedSum)* fRightAdcSumGain;

        //aDigitalL-= (fLeftPed1+fLeftPed2+fLeftPed3);
        //aDigitalR-= (fRightPed1+fRightPed2+fRightPed3);

        //eL= aDigitalL* fLeftDigitalSumGain;
        //eR= aDigitalR* fRightDigitalSumGain;

        //rdodata->SetLeftEnergy (eL);
        //rdodata->SetRightEnergy (eR);
    }

    //----- read low-gain ADC data table

    if ((digzdc_p= (BrZdcDig*) InputTable->GetObject (BRTABLENAMES kDigZDCLo)))
    {
        rdodata->SetLeftAdc1Lo (a1L_Lo= digzdc_p->GetLeftAdc (0));
        rdodata->SetLeftAdc2Lo (a2L_Lo= digzdc_p->GetLeftAdc (1));
        rdodata->SetLeftAdc3Lo (a3L_Lo= digzdc_p->GetLeftAdc (2));
        rdodata->SetLeftAdcSumLo (aSumL_Lo= digzdc_p->GetLeftAdcSum ());
        rdodata->SetLeftDigitalSumLo (aDigitalL_Lo= (a1L_Lo+a2L_Lo+a3L_Lo));

        rdodata->SetRightAdc1Lo (a1R_Lo= digzdc_p->GetRightAdc (0));
        rdodata->SetRightAdc2Lo (a2R_Lo= digzdc_p->GetRightAdc (1));
        rdodata->SetRightAdc3Lo (a3R_Lo= digzdc_p->GetRightAdc (2));
        rdodata->SetRightAdcSumLo (aSumR_Lo= digzdc_p->GetRightAdcSum ());
        rdodata->SetRightDigitalSumLo (aDigitalR_Lo= (a1R_Lo+a2R_Lo+a3R_Lo));

        rdodata->SetLeftCfdTdc1 (tSumCfdL=digzdc_p->GetLeftTdc (0));
        rdodata->SetLeftCfdTdc2 (digzdc_p->GetLeftTdc (1));
        rdodata->SetLeftCfdTdc3 (tSumCfdR=digzdc_p->GetLeftTdc (2));
        rdodata->SetLeftCfdTdcSum (digzdc_p->GetLeftTdcSum ());

        rdodata->SetRightCfdTdc1 (digzdc_p->GetRightTdc (0));
        rdodata->SetRightCfdTdc2 (digzdc_p->GetRightTdc (1));
        rdodata->SetRightCfdTdc3 (digzdc_p->GetRightTdc (2));
        rdodata->SetRightCfdTdcSum (digzdc_p->GetRightTdcSum ());

        //----- slew correction for left ZDC (now using low-gain ADC)

        if (a1L_Lo > 0 && t1L > 0 && t1L < 2047)
        {
	    if (fUseSlewing)
	    {
                x= 1/ sqrt (a1L_Lo);
                t1L= t1L*fLeftTdc1Gain- (fLeft1P1*x+ fLeft1P2*x*x+ fLeft1P3*x*x*x);
	    }
	    else t1L*= fLeftTdc1Gain;
        }
        else t1L= NaN;

        if (a2L_Lo > 0 && t2L > 0 && t2L < 2047)
        {
	    if (fUseSlewing)
	    {
                x= 1/ sqrt (a2L_Lo);
                t2L= t2L*fLeftTdc2Gain- (fLeft2P0- fLeft1P0+ fLeft2P1*x+ fLeft2P2*x*x+ fLeft2P3*x*x*x);
	    }
            else t2L*= fLeftTdc2Gain;
        }
        else t2L= NaN;

        if (a3L_Lo > 0 && t3L > 0 && t3L < 2047)
        {
	    if (fUseSlewing)
	    {
                x= 1/ sqrt (a3L_Lo);
                t3L= t3L*fLeftTdc3Gain- (fLeft3P0- fLeft1P0+ fLeft3P1*x+ fLeft3P2*x*x+ fLeft3P3*x*x*x);
	    }
	    else t3L*= fLeftTdc3Gain;
        }
        else t3L= NaN;

        //----- slew correction for right ZDC (now using low-gain ADC)

        if (a1R_Lo > 0 && t1R > 0 && t1R < 2047)
        {
	    if (fUseSlewing)
	    {
                x= 1/ sqrt (a1R_Lo);
                t1R= t1R*fRightTdc1Gain- (fRight1P1*x+ fRight1P2*x*x+ fRight1P3*x*x*x);
	    }
	    else t1R*= fRightTdc1Gain;

	    // correction (at least) for the runs 4640 - 5368: 1st module of the right ZDC seems to have no signal
            // -> no time from that module for z-vertex calculation. I put all slew parameters for the module
            // #1 to be 0.00 for the runs where there is no signal in that module (AM)

            if (fRight1P1== 0.00 && fRight1P2== 0.00 && fRight1P3== 0.00) t1R= NaN;
        }
        else t1R= NaN;

        if (a2R_Lo > 0 && t2R > 0 && t2R < 2047)
        {
	    if (fUseSlewing)
	    {
                x= 1/ sqrt (a2R_Lo);
                t2R= t2R*fRightTdc2Gain- (fRight2P0- fRight1P0+ fRight2P1*x+ fRight2P2*x*x+ fRight2P3*x*x*x);
	    }
	    else t2R*= fRightTdc2Gain;
        }
        else t2R= NaN;

        if (a3R_Lo > 0 && t3R > 0 && t3R < 2047)
        {
	    if (fUseSlewing)
	    {
                x= 1/ sqrt (a3R_Lo);
                t3R= t3R*fRightTdc3Gain- (fRight3P0- fRight1P0+ fRight3P1*x+ fRight3P2*x*x+ fRight3P3*x*x*x);
	    }
	    else t3R*= fRightTdc3Gain;
        }
        else t3R= NaN;

        //----- time from left ZDC

        if (t1L!= NaN && t2L!= NaN)
        {
            if (t3L!= NaN)
            {
                tL= (t1L+ t2L+ t3L)/ 3;
            }
            else
            {
                tL= (t1L+ t2L)/ 2;
            }
        }
        else tL= NaN;

        //----- time from right ZDC

        if (t1R!= NaN && t2R!= NaN)
        {
            if (t3R!= NaN)
            {
                tR= (t1R+ t2R+ t3R)/ 3;
            }
            else
            {
                tR= (t1R+ t2R)/ 2;
            }
        }
        else
        {
            // modified to handle problem with module #1 in right ZDC (at least) for the runs 4640 - 5368

            if (t2R!= NaN && t3R!= NaN) tR= (t2R+ t3R)/ 2;
            else tR= NaN;
        }

        //----- calculate z-vertex

        if (tL== NaN || tR== NaN) position= NaN;
        else
	{
	   if (fUseOffset)	position= ((tL- tR) /2)*BrUnits::c_light- fZOffset;
	   else			position= ((tL- tR) /2)*BrUnits::c_light;
	}       
        
	//cout << fZOffset << endl;
	
	//----- set reconstructed data

        rdodata->SetLeftTime1 (t1L);
        rdodata->SetLeftTime2 (t2L);
        rdodata->SetLeftTime3 (t3L);
        rdodata->SetLeftTime (tL);

        rdodata->SetRightTime1 (t1R);
        rdodata->SetRightTime2 (t2R);
        rdodata->SetRightTime3 (t3R);
        rdodata->SetRightTime (tR);

        rdodata->SetZ (position);

        //----- time from CFD TDC

        if ((tSumCfdL > 50 && tSumCfdL < 4000) && (tSumCfdR > 50 && tSumCfdR < 4000))
        {
            positionCfd= ((Float_t) (tSumCfdL- tSumCfdR)/ 2.0)* 30.0*.1- fZCfdOffset;
        }
        else
        {
            positionCfd= NaN;
        }

        rdodata->SetZCfd (positionCfd);

        //----- energy in low-gain ADC

        //eL_Lo= (aSumL_Lo- fLeftPedSumLo)* fLeftAdcSumGainLo;
        //eR_Lo= (aSumR_Lo- fRightPedSumLo)* fRightAdcSumGainLo;

        //aDigitalL_Lo-= (fLeftPed1Lo+fLeftPed2Lo+fLeftPed3Lo);
        //aDigitalR_Lo-= (fRightPed1Lo+fRightPed2Lo+fRightPed3Lo);

        //eL_Lo= aDigitalL_Lo* fLeftDigitalSumGainLo;
        //eR_Lo= aDigitalR_Lo* fRightDigitalSumGainLo;

        //rdodata->SetLeftEnergyLo (eL_Lo);
        //rdodata->SetRightEnergyLo (eR_Lo);
    }

    if (HistOn ())
    {
        fEnergyHisto->Fill (rdodata->GetLeftEnergy (), rdodata->GetRightEnergy ());
        fTimeHisto->Fill (rdodata->GetLeftTime (), rdodata->GetRightTime ());
        fVertexZHisto->Fill (position);
        fVertexZCfdHisto->Fill (positionCfd);
    }
}

//
// $Log: BrZdcRdoModule.cxx,v $
// Revision 1.14  2002/06/20 06:44:20  makeev_a
// ZdcRdoModule has been changed to work with data where there is no signal in 1st module of right ZDC
//
// Revision 1.13  2002/06/18 20:18:34  videbaek
// Add conditions to if appling slewing corrections or not. As code was written
// it did could pick up random values of the corrections (elements not guarentied to be zero)
//
// Revision 1.12  2002/06/12 19:10:13  makeev_a
// commented irritating warning messages :)
//
// Revision 1.11  2002/06/12 07:13:58  makeev_a
// bug causing crash of BrZdcRdoModule if there is no a revision in a database fixed
//
// Revision 1.10  2002/05/07 17:31:32  zdc
// zdc rdo module returns vertex aligned with TPM1, using a database
//
// Revision 1.9  2002/05/03 21:20:57  zdc
// Modified zdc rdo to use database calibration
//
// Revision 1.8  2002/01/03 19:52:44  cholm
// Prepared to use BrTableNames class (or perhaps BrDetectorList) for table names
//
// Revision 1.7  2001/11/12 14:55:46  sanders
// Added modifications for 200 GeV multiplicity/centrality calibrations.
// Added cfs method to BrZdcRdoModule since this is needed to obtain
// reliable position for low amplitude signals (avoids strong slewing
// correction)
//
// Revision 1.6  2001/10/08 11:29:36  cholm
// Changed to use new DB access classes
//
// Revision 1.5  2001/08/29 20:00:29  zdc
// CFD TDC raw data added to BrZdcRdoModule
//
// Revision 1.14  2001/08/14 19:12:21  zdc
// ZDC calibration class has been renamed to BrZdcCalibration
//
// Revision 1.13  2001/08/03 21:36:32  zdc
// The methods to read low-gain ZDC ADC have been added to BrZdcRdoModule
//
// Revision 1.12  2001/04/24 02:54:02  makeev_a
// Slewing correction has been refined for all 6 ZDC modules, Reconstructed Data Object returns calibrated energy, times and vertex
//
// Revision 1.11  2001/02/07 11:03:46  bjornhs
// Removed silly bug in position calculation
//
// Revision 1.10  2001/02/06 16:56:19  bjornhs
// Set default offset to 27.6 cm
// Changed TdcCount to ns internally
//
// Revision 1.9  2001/02/06 13:06:48  bjornhs
// Fixed RDO-module to remove event selection bias.
// Removed z-offset, use void SetPosOffset(const Float_t value)
// (defualt is 0)
//
// Revision 1.4  2000/08/05 16:50:37  videbaek
// add cvs id
//

This page automatically generated by script docBrat by Christian Holm

Copyright ; 2002 BRAHMS Collaboration <brahmlib@rcf.rhic.bnl.gov>
Last Update on by

Validate HTML
Validate CSS