25 RegisterInputCollection(
"InputCollection",
"rawdata object returned by TRIDFEventStore",
28 RegisterOutputCollection(
"OutputCollection",
"output collection name",
30 &
fPlastic,
"TClonesArray",
"art::TTimingChargeData");
31 RegisterProcessorParameter(
"CatID",
"Category ID of plastic",
fCatID, 21);
32 RegisterProcessorParameter(
"ChargeType",
"0: V1190 width (default), 1: QDC (V792 etc.), 2: paired time and charge (hinp)",
34 RegisterProcessorParameter(
"ChargeTypeID",
"data type id for charge information (valid when ChargeType != (0 or 2) , default: 2)",
36 RegisterProcessorParameter(
"TimingTypeID",
"data type id for timing information (default: 1)",
38 RegisterProcessorParameter(
"TrailingComesFirst",
"0: Leading->Trailing (default), 1: Trailing->Leading (for QTC etc.)",
40 RegisterProcessorParameter(
"Sparse",
"hit will be inserted at the index corresponding to its id if sparse is 0, otherwize hit will be added ordinaly (default: 1)",
99 if (!tArray || tArray->IsEmpty())
102 TTimingChargeData *data =
nullptr;
103 for (Int_t iHit = 0, nHit = tArray->GetEntriesFast(); iHit != nHit; ++iHit) {
104 const TRawTimingWithEdge *
const hit =
static_cast<TRawTimingWithEdge *
>(tArray->At(iHit));
109 const Int_t detID = hit->GetDetID();
111 data =
static_cast<TTimingChargeData *
>(
fPlastic->ConstructedAt(idx));
112 if (IsValid(data->GetDetID()))
115 data->SetDetID(detID);
116 const Double_t tLeading = hit->GetTiming();
117 data->SetTiming(tLeading);
120 const Double_t tLeading = data->GetTiming();
121 const Double_t tTrailing = hit->GetTiming();
122 const Double_t charge = tTrailing - tLeading;
124 data->SetCharge(charge);
134 if ((!tArray || tArray->IsEmpty()) && (!qArray || qArray->IsEmpty()))
137 TTimingChargeData *data;
139 Bool_t data_flag =
false;
140 if (tArray && !(tArray->IsEmpty())) {
141 const TRawDataObject *
const tHit =
static_cast<TRawDataObject *
>(tArray->At(0));
143 const Int_t detID = tHit->GetDetID();
144 if (IsValid(detID)) {
146 data =
static_cast<TTimingChargeData *
>(
fPlastic->ConstructedAt(idx));
148 if (IsValid(data->GetDetID()))
150 data->SetDetID(detID);
151 data->SetTiming(tHit->GetValue());
156 if (qArray && !(qArray->IsEmpty())) {
157 const TRawTiming *
const qHit =
static_cast<TRawTiming *
>(qArray->At(0));
159 const Int_t detID = qHit->GetDetID();
161 data =
static_cast<TTimingChargeData *
>(
fPlastic->ConstructedAt(idx));
163 if (IsValid(data->GetDetID()))
165 data->SetDetID(detID);
166 data->SetCharge(qHit->GetValue());
170 data->SetCharge(qHit->GetValue());
176 if (!tArray || tArray->IsEmpty())
179 TTimingChargeData *data =
nullptr;
180 for (Int_t iHit = 0, nHit = tArray->GetEntriesFast(); iHit != nHit; ++iHit) {
181 const TRawDataTimingCharge *
const hit =
static_cast<TRawDataTimingCharge *
>(tArray->At(iHit));
183 const Int_t detID = hit->GetDetID();
185 data =
static_cast<TTimingChargeData *
>(
fPlastic->ConstructedAt(idx));
186 if (IsValid(data->GetDetID()))
189 data->SetDetID(detID);
190 const Double_t timing = hit->GetTiming();
191 const Double_t charge = hit->GetCharge();
192 data->SetTiming(timing);
193 data->SetCharge(charge);