ROOT logo
#include "hparticletool.h"
#include "htool.h"
#include "hphysicsconstants.h"
#include "hcategorymanager.h"
#include "hgeomvector.h"
#include "hmdcdedx2.h"
#include "henergylosscorrpar.h"
#include "htofwalkpar.h"


#include "hlinearcategory.h"



//--------category definitions---------
#include "hparticledef.h"
#include "haddef.h"
#include "hmdcdef.h"
#include "hmdctrackddef.h"
#include "hmdctrackgdef.h"
#include "richdef.h"
#include "rpcdef.h"
#include "showerdef.h"
#include "emcdef.h"
#include "tofdef.h"
#include "walldef.h"
#include "hstartdef.h"
//-------------------------------------

//-------objects-----------------------
#include "hmdcgeomobj.h"
#include "hgeantkine.h"
#include "hgeanttof.h"
#include "hgeantshower.h"
#include "hgeantrpc.h"

#include "hvirtualcand.h"
#include "hparticlecand.h"
#include "hparticlecandsim.h"
#include "hparticlepairmaker.h"
#include "hmetamatch2.h"
#include "hrichhit.h"
#include "hrichhitsim.h"
#include "htofhit.h"
#include "htofhitsim.h"
#include "htofcluster.h"
#include "htofclustersim.h"
#include "hrpccluster.h"
#include "hrpcclustersim.h"
#include "hrpchit.h"
#include "hshowerhit.h"
#include "hshowerhitsim.h"
#include "hemccluster.h"
#include "hemcclustersim.h"
#include "hstart2hit.h"
#include "hstart2cal.h"


#include "hmdctrkcand.h"
#include "hmdcseg.h"
#include "hmdcsegsim.h"
#include "hmdchit.h"
#include "hmdcclusinf.h"
#include "hmdcclusfit.h"
#include "hmdcwirefit.h"
#include "hmdccal1.h"
#include "hmdcclus.h"
#include "hmdclayer.h"
//-------------------------------------


#include  "TMath.h"
#include  "TAxis.h"
#include  "TVector3.h"
#include  "TLatex.h"
#include  "TSystem.h"

#include <string>

//_HADES_CLASS_DESCRIPTION
///////////////////////////////////////////////////////////
// HParticleTool
//
// library of static functions
// look here for auxiliary functions for:
// physics analysis, simulation analysis, ...
///////////////////////////////////////////////////////////

ClassImp(HParticleTool)

Float_t HParticleTool::rpcCellHalfWidth[192]={
    11,11,11,11,11,11,11,11,11,11,11,11,11,13.5,13.5,13.5,13.5,13.5,16,16,16,16,16,18.5,18.5,18.5,18.5,21,21,21,21,0,
    11,11,11,11,11,11,11,11,11,11,11,11,11,13.5,13.5,13.5,13.5,13.5,16,16,16,16,16,18.5,18.5,18.5,18.5,21,21,21,21,0,
    11,11,11,11,11,11,11,11,11,11,11,11,11,13.5,13.5,13.5,13.5,13.5,16,16,16,16,16,18.5,18.5,18.5,18.5,21,21,21,21,0,
    11,11,11,11,11,11,11,11,11,11,11,11,11,13.5,13.5,13.5,13.5,13.5,16,16,16,16,16,18.5,18.5,18.5,18.5,21,21,21,21,21,
    11,11,11,11,11,11,11,11,11,11,11,11,11,13.5,13.5,13.5,13.5,13.5,16,16,16,16,16,18.5,18.5,18.5,18.5,21,21,21,21,0,
    11,11,11,11,11,11,11,11,11,11,11,11,11,13.5,13.5,13.5,13.5,13.5,16,16,16,16,16,18.5,18.5,18.5,18.5,21,21,21,21,0
};

Float_t HParticleTool::tofCellHalfWidth[64]={
    15,15,15,15,15,15,15,15,
    15,15,15,15,15,15,15,15,
    15,15,15,15,15,15,15,15,
    15,15,15,15,15,15,15,15,
    10,10,10,10,10,10,10,10,
    10,10,10,10,10,10,10,10,
    10,10,10,10,10,10,10,10,
    10,10,10,10,10,10,10,10
};

Double_t HParticleTool::parsSX_apr12[6][8][8][3] = { { { { 11.261, 21.546, -1.48157} ,
    { 9.12987, 20.0815, -0.90077} ,
    { 4.9937, 25.1566, -0.676999} ,
    { -16.9104, 45.4421, -0.266398} ,
    { 9.32513, 20.5801, -0.898808} ,
    { -4.59022, 34.1841, -0.37284} ,
    { -2.35385, 27.8868, -0.403455} ,
    { -11.9264, 42.6951, -0.303151} ,
    },{ { 4.60186, 19.8076, -0.587582} ,
    { 9.14158, 14.3592, -0.894415} ,
    { 9.90876, 16.0818, -0.991311} ,
    { 8.46396, 16.5918, -0.843654} ,
    { 6.32363, 17.3507, -0.664158} ,
    { 0.0934424, 23.3906, -0.404736} ,
    { 1.643, 21.44, -0.460577} ,
    { 5.25953, 20.5083, -0.603152} ,
    },{ { 2.85999, 24.5743, -0.508187} ,
    { -10.151, 37.5395, -0.303762} ,
    { 10.8058, 28.3838, -0.825003} ,
    { 1.08081, 27.8462, -0.494962} ,
    { -34.9677, 67.8661, -0.184961} ,
    { 1.79947, 22.2413, -0.462287} ,
    { -5.1119, 30.06, -0.374308} ,
    { 3.37927, 22.1526, -0.557025} ,
    },{ { 10.0322, 17.8041, -0.999337} ,
    { 9.86126, 21.3776, -0.942591} ,
    { 11.0032, 19.0596, -1.0397} ,
    { 6.19078, 20.1642, -0.711014} ,
    { 8.83717, 23.2468, -0.812281} ,
    { -1.56601, 32.505, -0.44904} ,
    { 9.53384, 23.7915, -0.879889} ,
    { 8.59978, 28.9993, -0.687787} ,
    },{ { 11.994, 14.8531, -1.20943} ,
    { 10.7492, 13.6447, -1.1457} ,
    { 10.95, 13.0478, -1.25738} ,
    { 11.0514, 12.4287, -1.20815} ,
    { 10.8234, 11.8793, -1.34116} ,
    { 5.68873, 16.8206, -0.587501} ,
    { 6.5672, 15.4772, -0.658939} ,
    { 2.446, 23.0305, -0.485263} ,
    },{ { 9.88012, 13.4981, -1.07661} ,
    { 7.19276, 15.9658, -0.780948} ,
    { 6.96557, 12.8213, -0.734747} ,
    { 9.55223, 12.1896, -1.12011} ,
    { 10.1804, 14.1742, -1.15649} ,
    { 10.6219, 12.8026, -1.21674} ,
    { 5.85022, 15.4349, -0.706955} ,
    { 7.40654, 15.201, -0.767572} ,
    },{ { 4.81399, 14.6362, -0.565544} ,
    { 5.74664, 14.6309, -0.690463} ,
    { 7.36668, 11.378, -0.821489} ,
    { 5.95364, 12.972, -0.672093} ,
    { 4.95611, 14.3107, -0.595363} ,
    { 6.2104, 11.389, -0.724624} ,
    { 6.66659, 11.0339, -0.727737} ,
    { 7.63816, 13.211, -0.848946} ,
    },{ { 8.1091, 13.0805, -0.774877} ,
    { -25.7058, 47.7744, -0.159777} ,
    { 5.62307, 13.9438, -0.661224} ,
    { 12.7875, 10.2908, -1.666} ,
    { 24.7024, 0.941701, -1.34615} ,
    { 7.12599, 11.7903, -0.649831} ,
    { 26.0491, 2.63838, -1.35853} ,
    { 7.11186, 16.2064, -0.733903} ,
    },},{ { { -69.7927, 95.6621, -0.102507} ,
    { 11.5704, 14.7575, -0.956814} ,
    { -3.81425, 30.7898, -0.590318} ,
    { 3.11458, 28.9265, -0.729786} ,
    { 1.47892, 24.3838, -0.515407} ,
    { 6.23517, 21.564, -0.736383} ,
    { -116.654, 145.583, -0.0751373} ,
    { 9.90404, 15.9537, -0.938642} ,
    },{ { -4.6888, 28.832, -0.357614} ,
    { 2.77237, 21.3925, -0.473694} ,
    { -59.4308, 86.4436, -0.128484} ,
    { 2.34314, 21.0521, -0.488452} ,
    { -2.55563, 25.2159, -0.412345} ,
    { -7.02359, 28.9398, -0.286315} ,
    { -4.03711, 28.8341, -0.332087} ,
    { 1.05908, 21.9342, -0.453614} ,
    },{ { 5.84976, 16.2704, -0.653181} ,
    { 3.4281, 20.2133, -0.480097} ,
    { 10.8675, 11.5562, -1.29586} ,
    { 3.65647, 20.3825, -0.545005} ,
    { -1.37892, 27.5623, -0.397713} ,
    { -0.469378, 23.1732, -0.379255} ,
    { -606.651, 633.04, -0.00706821} ,
    { 3.69831, 19.8863, -0.55673} ,
    },{ { 0.485102, 32.7648, -0.461632} ,
    { 3.86282, 23.4211, -0.565574} ,
    { 5.88116, 18.9384, -0.615225} ,
    { 1.52918, 28.3805, -0.480573} ,
    { -4.33597, 35.8219, -0.399291} ,
    { -5.21571, 33.7346, -0.356766} ,
    { -45.0971, 76.8997, -0.141939} ,
    { -15.6641, 49.4951, -0.269886} ,
    },{ { 3.00747, 19.6862, -0.508539} ,
    { 8.16869, 13.8697, -0.946434} ,
    { 4.23195, 17.045, -0.498318} ,
    { 3.67526, 16.7018, -0.581303} ,
    { 7.3296, 13.6046, -0.743481} ,
    { 1.49252, 16.9971, -0.383766} ,
    { 1.84125, 17.1814, -0.440954} ,
    { 1.36042, 18.9722, -0.489417} ,
    },{ { 3.65921, 17.4074, -0.485612} ,
    { -36.2335, 61.5436, -0.133392} ,
    { 6.7341, 12.3367, -0.740652} ,
    { 5.87101, 13.6511, -0.624764} ,
    { 8.08495, 17.5246, -0.94347} ,
    { -3.47221, 21.5962, -0.305992} ,
    { 4.49662, 15.0783, -0.515978} ,
    { 5.63727, 14.7944, -0.675401} ,
    },{ { -7.49479, 29.1283, -0.279881} ,
    { 6.41769, 12.9197, -0.712292} ,
    { 5.62732, 12.4936, -0.641615} ,
    { 8.86575, 12.378, -1.0114} ,
    { 8.14724, 14.0978, -0.957321} ,
    { 4.60103, 13.3806, -0.563378} ,
    { -0.0265961, 21.8219, -0.383856} ,
    { 6.2296, 13.0373, -0.657273} ,
    },{ { 5.38258, 12.5581, -0.562009} ,
    { 5.87885, 11.5268, -0.621051} ,
    { 3.30387, 14.705, -0.493612} ,
    { 8.07418, 11.9762, -0.705153} ,
    { 5.85592, 14.1069, -0.629922} ,
    { 0.723188, 18.8489, -0.395128} ,
    { 4.77045, 12.5237, -0.536745} ,
    { 5.11269, 12.8383, -0.576576} ,
    },},{ { { 7.06766, 23.2525, -1.3624} ,
    { -7.29368, 30.838, -0.271138} ,
    { -15772.8, 15794.3, -0.000257984} ,
    { -1561.64, 1586.64, -0.00550739} ,
    { -15.3113, 37.2987, -0.230762} ,
    { -7.91799, 29.923, -0.284048} ,
    { -10.5158, 35.6801, -0.292342} ,
    { -10.177, 33.9929, -0.266036} ,
    },{ { 4.65883, 19.136, -0.519569} ,
    { 4.49183, 15.3622, -0.535768} ,
    { 1.86781, 20.7151, -0.412712} ,
    { -1.88466, 23.1346, -0.338045} ,
    { 1.01231, 18.2131, -0.404546} ,
    { -6.47853, 26.9981, -0.25901} ,
    { -6.04414, 27.2149, -0.266319} ,
    { 0.794279, 21.7028, -0.421218} ,
    },{ { 2.91705, 16.7499, -0.434655} ,
    { 2.08053, 19.5917, -0.470595} ,
    { -0.313242, 20.801, -0.364572} ,
    { -3.93203, 24.5866, -0.318383} ,
    { 1.40376, 18.326, -0.397523} ,
    { 4.10617, 14.9937, -0.49698} ,
    { -4.71358, 25.8243, -0.270482} ,
    { 2.95265, 17.8282, -0.469449} ,
    },{ { 2.87899, 21.4919, -0.41543} ,
    { 7.10942, 13.0378, -0.644465} ,
    { 2.63346, 17.655, -0.422695} ,
    { -6.40921, 25.2705, -0.243451} ,
    { -0.299593, 20.9094, -0.357914} ,
    { -4.76231, 25.0262, -0.251614} ,
    { -2.91885, 22.3792, -0.275383} ,
    { -802.56, 822.202, -0.00557972} ,
    },{ { -4.72067, 26.1644, -0.308245} ,
    { 4.63827, 15.6288, -0.530875} ,
    { 5.60232, 13.44, -0.662811} ,
    { 3.65147, 16.5079, -0.540377} ,
    { 3.05993, 16.5204, -0.490319} ,
    { 0.487647, 19.3321, -0.377115} ,
    { 3.55346, 14.9829, -0.480615} ,
    { 0.832636, 18.7244, -0.408394} ,
    },{ { 4.41073, 19.1973, -0.54619} ,
    { 5.21161, 12.3759, -0.579481} ,
    { 2.98157, 17.1684, -0.468315} ,
    { 5.10093, 14.2564, -0.646358} ,
    { 0.531921, 19.6236, -0.387677} ,
    { -1.36747, 19.3473, -0.36012} ,
    { -13.6473, 32.9218, -0.201639} ,
    { 5.62505, 14.0285, -0.632473} ,
    },{ { 3.42427, 16.3945, -0.476595} ,
    { 1.82528, 17.9768, -0.41833} ,
    { 2.40902, 18.6981, -0.482663} ,
    { 2.06014, 14.2975, -0.394341} ,
    { 1.16583, 17.3155, -0.364563} ,
    { -5.31619, 22.6872, -0.262787} ,
    { -0.783183, 19.091, -0.349918} ,
    { 0.493681, 19.4715, -0.394497} ,
    },{ { 5.62189, 12.7088, -0.533233} ,
    { 7.92305, 8.88519, -0.82643} ,
    { 3.45005, 14.1677, -0.450129} ,
    { 5.75466, 10.4253, -0.528091} ,
    { 3.95846, 12.1817, -0.464105} ,
    { 1.5955, 15.6129, -0.392609} ,
    { 0.166719, 17.4955, -0.351714} ,
    { -1.92506, 21.6318, -0.265856} ,
    },},{ { { 1.43956, 26.7983, -0.492115} ,
    { -2339.9, 2368.57, -0.00366577} ,
    { 12.1958, 15.2955, -1.05854} ,
    { -8046.9, 8071.73, -0.000838187} ,
    { -929.556, 956.805, -0.00907381} ,
    { -38.1838, 66.5739, -0.144491} ,
    { 3.44004, 26.5457, -0.530688} ,
    { 4.71503, 30.6348, -0.615336} ,
    },{ { -3.8713, 29.9232, -0.302782} ,
    { -7.35686, 34.1268, -0.27733} ,
    { 0.446663, 25.004, -0.405858} ,
    { -9.75136, 36.1941, -0.27054} ,
    { -28.8047, 55.0941, -0.156446} ,
    { -38.287, 61.6422, -0.119819} ,
    { -26.1488, 52.2433, -0.169803} ,
    { -5.7388, 32.843, -0.325859} ,
    },{ { 9.19104, 23.7934, -0.737198} ,
    { -3.12504, 32.7559, -0.341762} ,
    { 2.5841, 25.1687, -0.464504} ,
    { -7.36488, 31.8188, -0.277568} ,
    { -0.410703, 30.0252, -0.390252} ,
    { -211.625, 241.44, -0.0417897} ,
    { -5.65592, 28.4593, -0.284852} ,
    { -4.17497, 36.532, -0.352869} ,
    },{ { 5.50154, 33.0517, -0.585692} ,
    { -2589.69, 2626.15, -0.00384649} ,
    { -81.1282, 113.464, -0.095054} ,
    { -0.112543, 24.0797, -0.404193} ,
    { -48.1776, 79.2123, -0.124522} ,
    { -75.1676, 112.116, -0.107471} ,
    { 0.663637, 28.9076, -0.431043} ,
    { 13.5495, 16.1299, -1.18324} ,
    },{ { 9.55522, 14.2548, -1.03044} ,
    { 3.12998, 20.8461, -0.47705} ,
    { 2.4138, 19.8442, -0.432118} ,
    { 5.76255, 15.6726, -0.573903} ,
    { -1.80161, 27.3056, -0.452487} ,
    { 2.83756, 19.8876, -0.44414} ,
    { -38.5196, 64.3885, -0.136232} ,
    { 0.453318, 23.9972, -0.445565} ,
    },{ { 3.56884, 16.7016, -0.496302} ,
    { 1.19605, 19.3966, -0.394533} ,
    { 2.42802, 17.5546, -0.461305} ,
    { 0.933455, 19.8235, -0.422565} ,
    { -5.68463, 26.1569, -0.27655} ,
    { -7.81786, 27.0238, -0.228276} ,
    { 0.594207, 17.9316, -0.379158} ,
    { 0.576988, 23.8147, -0.428638} ,
    },{ { 3.3247, 19.0785, -0.505158} ,
    { 5.35341, 14.9904, -0.555266} ,
    { 0.23718, 20.9901, -0.382014} ,
    { -2.78917, 24.1714, -0.318399} ,
    { -23.812, 45.2813, -0.158132} ,
    { -15.5804, 35.4139, -0.181462} ,
    { -6.73986, 29.8659, -0.283512} ,
    { 3.76645, 18.1942, -0.510962} ,
    },{ { -4.17168, 26.4299, -0.326553} ,
    { 1.9555, 18.0714, -0.447893} ,
    { -28.6188, 53.3752, -0.172926} ,
    { 4.644, 13.2118, -0.481685} ,
    { 3.10493, 15.9649, -0.400782} ,
    { -10.9767, 29.9608, -0.200803} ,
    { 6.14032, 12.3813, -0.678371} ,
    { 1.56021, 24.1464, -0.440946} ,
    },},{ { { -53.6498, 82.6205, -0.151528} ,
    { -7280.12, 7308.77, -0.00109971} ,
    { -79.589, 103.137, -0.0657872} ,
    { -3615.35, 3639.8, -0.00171557} ,
    { 2.04346, 24.3134, -0.513194} ,
    { -29.0943, 52.6841, -0.147897} ,
    { -48.391, 71.2173, -0.104596} ,
    { 0.975112, 22.1828, -0.464883} ,
    },{ { 5.11937, 18.5229, -0.587031} ,
    { 0.873546, 22.131, -0.415451} ,
    { 5.05525, 19.354, -0.568744} ,
    { 0.576507, 21.7937, -0.432836} ,
    { -0.965728, 26.9736, -0.403267} ,
    { -1.87335, 26.9608, -0.366372} ,
    { -30.1053, 53.8164, -0.146013} ,
    { 1.51544, 21.5872, -0.426627} ,
    },{ { 5.84296, 19.0005, -0.630305} ,
    { 1.88012, 22.4686, -0.460473} ,
    { 1.44526, 22.5326, -0.443196} ,
    { 0.846063, 22.4518, -0.401213} ,
    { -0.225704, 22.425, -0.376266} ,
    { -12.8648, 35.6489, -0.212786} ,
    { -13.6876, 37.7449, -0.22641} ,
    { -1.07116, 26.6534, -0.407683} ,
    },{ { 11.7363, 18.71, -1.03604} ,
    { 12.6628, 17.9114, -1.0479} ,
    { -26.412, 56.2696, -0.19631} ,
    { -14.0258, 42.7386, -0.259523} ,
    { -0.149337, 22.5381, -0.382891} ,
    { 2.88327, 22.6719, -0.481628} ,
    { -542.257, 568.36, -0.0125465} ,
    { 2.34131, 25.2539, -0.469079} ,
    },{ { 5.55453, 15.637, -0.643536} ,
    { 9.83068, 13.4938, -0.978839} ,
    { 5.46824, 14.2818, -0.584398} ,
    { 4.74097, 15.3457, -0.530127} ,
    { 2.16351, 17.9984, -0.421261} ,
    { 2.33149, 20.3425, -0.427444} ,
    { -14.1156, 33.5424, -0.18668} ,
    { 5.09611, 14.8257, -0.578273} ,
    },{ { 8.50185, 13.9784, -0.87673} ,
    { 4.5894, 15.2899, -0.618536} ,
    { 6.53476, 12.8178, -0.757674} ,
    { 5.71812, 14.9796, -0.65994} ,
    { 3.89662, 14.7227, -0.519097} ,
    { -7.14286, 27.7149, -0.270248} ,
    { -1.11071, 19.0059, -0.341487} ,
    { 6.88412, 13.9039, -0.702333} ,
    },{ { 4.67483, 19.968, -0.558962} ,
    { 6.1507, 12.6341, -0.671295} ,
    { 5.50661, 13.9816, -0.606162} ,
    { 0.0819361, 19.2904, -0.363735} ,
    { -15.24, 35.2309, -0.181496} ,
    { -3.12056, 21.0821, -0.28179} ,
    { 7.15185, 14.3027, -0.741551} ,
    { 5.13274, 17.5356, -0.586885} ,
    },{ { 7.19215, 19.2935, -0.653361} ,
    { 6.0808, 12.9599, -0.603578} ,
    { 4.79917, 14.1376, -0.538371} ,
    { 0.423177, 19.1295, -0.336841} ,
    { 0.067527, 18.973, -0.380874} ,
    { 3.62671, 13.5247, -0.470833} ,
    { 0.159459, 18.2868, -0.415175} ,
    { 3.23734, 22.4018, -0.516815} ,
    },},{ { { -2.64086, 30.3344, -0.388795} ,
    { -70.2968, 96.8009, -0.0876698} ,
    { -3.2801, 31.1341, -0.394103} ,
    { 9.59078, 18.1993, -1.11694} ,
    { -126.997, 156.889, -0.0700956} ,
    { 8.36986, 17.0035, -0.83462} ,
    { -86.5983, 111.436, -0.0733982} ,
    { -0.0524577, 22.6739, -0.391376} ,
    },{ { 3.40223, 21.093, -0.474667} ,
    { -2.03144, 24.62, -0.341968} ,
    { 0.862482, 22.8745, -0.418965} ,
    { 0.791488, 21.5494, -0.4124} ,
    { 0.280344, 23.738, -0.427894} ,
    { 3.66928, 17.663, -0.475018} ,
    { -117.203, 142.196, -0.0536026} ,
    { 3.66428, 22.5867, -0.519825} ,
    },{ { 4.24259, 18.5831, -0.579052} ,
    { -37.8992, 66.7055, -0.16185} ,
    { 5.50227, 18.3669, -0.625435} ,
    { 1.13764, 24.0236, -0.450364} ,
    { 2.28567, 23.682, -0.468582} ,
    { -4.34919, 29.2843, -0.326804} ,
    { 0.635503, 25.9999, -0.425968} ,
    { 4.16994, 24.5464, -0.519652} ,
    },{ { -7.18749, 44.0448, -0.326292} ,
    { -2087.5, 2116.64, -0.00373747} ,
    { 5.28862, 19.9115, -0.535791} ,
    { 9.34527, 19.0638, -0.807227} ,
    { -37.1736, 79.3995, -0.176507} ,
    { -3004.48, 3039.29, -0.00308339} ,
    { 1.80121, 22.637, -0.434125} ,
    { -5.15794, 36.9021, -0.332757} ,
    },{ { 6.67746, 14.1903, -0.624485} ,
    { 1.06665, 25.411, -0.44613} ,
    { 10.0152, 12.8435, -0.923435} ,
    { 4.70145, 19.2999, -0.478278} ,
    { 6.73914, 14.0263, -0.596819} ,
    { -3.2595, 27.2935, -0.306938} ,
    { 6.55423, 14.2493, -0.621017} ,
    { -4.50553, 30.4827, -0.326369} ,
    },{ { -0.09777, 22.8166, -0.382884} ,
    { 4.04781, 17.7808, -0.518584} ,
    { 3.39938, 17.0308, -0.482232} ,
    { 4.70489, 16.0417, -0.509594} ,
    { 4.51307, 15.1738, -0.527934} ,
    { 4.42407, 19.2094, -0.543449} ,
    { 4.13092, 15.6092, -0.483003} ,
    { 8.44791, 13.39, -0.812214} ,
    },{ { 4.34057, 15.0788, -0.484728} ,
    { 7.99248, 12.2559, -0.769648} ,
    { 5.69102, 14.4769, -0.54235} ,
    { 5.68315, 12.1356, -0.589213} ,
    { 5.64111, 14.2835, -0.56883} ,
    { 3.99089, 14.8788, -0.473002} ,
    { 5.82762, 14.3199, -0.576086} ,
    { 6.38442, 12.7365, -0.607505} ,
    },{ { 7.1873, 10.5268, -0.560181} ,
    { 6.40901, 13.2542, -0.632216} ,
    { 4.62558, 13.2388, -0.482767} ,
    { 7.41846, 12.0526, -0.649268} ,
    { 7.73648, 8.9868, -0.725813} ,
    { 5.81736, 11.039, -0.538824} ,
    { 5.29344, 14.8121, -0.576218} ,
    { 0, 21.3775, -1} } } };

Double_t HParticleTool::parsDX_apr12[6][8][8][5]  = { { { { 10920.9, 7171.75, -0.0313439, -18088.8, -0.0120764} ,
    { 2.71171, 235.054, -1.77338, -220.224, -1.55159} ,
    { -9.94265, 32.8533, -0.757599, -4624.23, -10.4416} ,
    { 9.68661, 215.009, -0.740932, -219.353, -0.648516} ,
    { -4.86145, 3837.65, -2.4015, -4002.42, -2.49823} ,
    { 1.79808, 227.414, -1.94192, -235.719, -1.69912} ,
    { -1.71727, 219.095, -1.24102, -232.967, -1.415} ,
    { 8.58188, 695.584, -0.823929, -687.008, -0.768741} ,
    },{ { -0.986019, 216.25, -1.41077, -235.953, -1.62675} ,
    { 1.32734, 245.964, -1.90624, -211.215, -1.59206} ,
    { -0.311783, 215.94, -1.76782, -237.264, -2.10211} ,
    { 2.77371, 69.5248, -4.29675, -14.9962, -0.505348} ,
    { -0.57256, 945.669, -1.89666, -998.262, -2.00341} ,
    { 1.66184, 228.319, -1.11781, -219.528, -1.00249} ,
    { -0.685493, 936.95, -1.34718, -960.371, -1.39163} ,
    { 1.28074, 229.156, -1.52934, -222.772, -1.36138} ,
    },{ { -1.02279, 219.049, -1.36623, -232.778, -1.55078} ,
    { 3.08136, 225.49, -1.15489, -222.76, -1.02584} ,
    { -1.0673, 215.692, -1.29038, -237.907, -1.52339} ,
    { 2.00514, 225.484, -1.41274, -226.264, -1.26091} ,
    { -2.18165, 220.251, -0.942219, -231.956, -1.07898} ,
    { 1.67957, 230.437, -1.60522, -222.362, -1.41469} ,
    { -1.28441, 224.655, -1.36395, -226.346, -1.5141} ,
    { 1.68699, 224.33, -1.52287, -228.399, -1.39004} ,
    },{ { -1.46029, 224.81, -1.5051, -225.629, -1.68358} ,
    { 3.14972, 74.6959, -3.85783, -23.1424, -0.628695} ,
    { -1.37198, 217.295, -1.43446, -235.908, -1.69286} ,
    { 3.06381, 228.795, -1.18894, -219.068, -1.0392} ,
    { -2.16669, 218.338, -1.03162, -234.838, -1.18886} ,
    { 2.74879, 227.513, -1.25878, -221.606, -1.09226} ,
    { -1.47411, 810.673, -1.35115, -858.131, -1.43631} ,
    { 3.23649, 108.004, -4.32615, -16.6157, -0.333292} ,
    },{ { -2.18632, 31.8301, -0.830277, -77.8629, -3.16749} ,
    { 2.80897, 61.1916, -3.14552, -22.5214, -0.652499} ,
    { -3.5874, 20.4244, -0.579296, -53.6017, -3.08114} ,
    { 2.2418, 117.976, -6.46199, -22.3293, -0.812699} ,
    { -2.92012, 228.168, -0.965634, -221.532, -1.03461} ,
    { 3.5483, 220.469, -0.944079, -227.371, -0.878963} ,
    { -2.30826, 225.146, -0.981039, -226.005, -1.06817} ,
    { 0.55031, 238.486, -1.80503, -214.753, -1.5673} ,
    },{ { -2.88945, 228.839, -0.633475, -221.168, -0.658604} ,
    { 0.284656, 217.545, -0.713614, -229.584, -0.713618} ,
    { -1.06009, 222.895, -1.48747, -228.253, -1.6655} ,
    { 2.10625, 225.522, -1.31835, -224.402, -1.18313} ,
    { -2.53569, 223.334, -1.23904, -227.876, -1.4077} ,
    { 3.59289, 221.396, -1.19902, -227.218, -1.0755} ,
    { -1.5093, 219.213, -1.46938, -232.768, -1.70781} ,
    { 1.31633, 232.4, -1.59572, -220.125, -1.39481} ,
    },{ { -4.75799, 229.485, -0.73053, -220.909, -0.775424} ,
    { 0.851585, 233.927, -1.95458, -221.449, -1.72433} ,
    { -1.82094, 216.286, -1.46719, -235.762, -1.68484} ,
    { 1.69405, 233.323, -1.50538, -217.69, -1.3235} ,
    { -3.59226, 226.806, -0.903884, -224.022, -0.980582} ,
    { 0.533236, 232.435, -1.85137, -221.457, -1.66725} ,
    { -3.84553, 226.842, -0.866162, -224.053, -0.935188} ,
    { -0.0263842, 242.365, -2.8499, -220.695, -2.43401} ,
    },{ { -3.65854, 231.156, -0.473427, -218.71, -0.473425} ,
    { -1.9784, 200.818, -0.678202, -233.381, -0.75485} ,
    { -1.85405, 223.92, -1.45522, -226.941, -1.59028} ,
    { 1.16225, 2.86458e+06, -31.6864, -71.8657, -1.97501} ,
    { -1.54566, 222.344, -0.574528, -229.534, -0.620804} ,
    { -0.932238, 228.97, -1.43971, -221.729, -1.33378} ,
    { 1.64126, 215.226, -0.860271, -239.002, -1.05921} ,
    { -6.26831, 225.314, -0.999892, -225.144, -1.02107} ,
    },},{ { { -10.4473, 227.013, -0.532973, -224.03, -0.620964} ,
    { 4.67294, 614.782, -2.60042, -586.688, -2.42656} ,
    { -12.4126, 234.484, -0.415001, -213.329, -0.423724} ,
    { 9.15935, 208.143, -0.889162, -217.364, -0.79372} ,
    { -2.13442, 225.391, -1.52115, -224.547, -1.66195} ,
    { 1.35066, 210.301, -0.979296, -238.081, -0.979296} ,
    { -2.94905, 226.009, -0.954106, -224.96, -1.07309} ,
    { 3.19836, 214.178, -0.405672, -226.744, -0.40569} ,
    },{ { -2.01271, 222.754, -1.21713, -228.789, -1.37872} ,
    { 0.599154, 232.054, -2.26889, -228.043, -1.94019} ,
    { -1.05033, 233.296, -1.14872, -216.318, -1.22295} ,
    { 0.333085, 234.126, -2.10192, -223.668, -1.81978} ,
    { -2.28501, 225.336, -1.08421, -225.777, -1.19676} ,
    { 1.13348, 228.366, -1.42978, -222.506, -1.29695} ,
    { -1.77459, 219.108, -1.23285, -232.884, -1.38633} ,
    { 1.2362, 223.722, -1.36396, -227.373, -1.26952} ,
    },{ { -1.61868, 222.681, -1.53835, -228.37, -1.71795} ,
    { 0.611119, 233.602, -1.5256, -217.253, -1.36006} ,
    { -0.949581, 239.526, -1.48911, -206.231, -1.4891} ,
    { 1.34715, 231.475, -1.4224, -218.944, -1.25371} ,
    { -2.23595, 222.866, -1.24788, -228.583, -1.40806} ,
    { 1.03861, 229.623, -1.49628, -221.66, -1.35017} ,
    { -52.8245, 354.19, -0.0597355, -298.221, -0.0701339} ,
    { 0.724048, 216.49, -0.998519, -234.382, -0.998519} ,
    },{ { -0.43587, 232.25, -1.41266, -217.382, -1.51609} ,
    { 1.2369, 229.373, -1.80808, -226.521, -1.58574} ,
    { -1.64354, 220.6, -1.46512, -230.951, -1.66619} ,
    { 1.95451, 227.407, -1.23184, -221.474, -1.09191} ,
    { -6.19229, 223.152, -0.656164, -228.888, -0.761577} ,
    { 1.01131, 225.896, -1.45941, -226.009, -1.31353} ,
    { -2.28266, 227.674, -1.01339, -222.97, -1.11923} ,
    { 1.83593, 230.506, -1.00472, -215.04, -0.865223} ,
    },{ { -5.1215, 232.464, -0.638398, -217.432, -0.673103} ,
    { 2.51892, 220.587, -1.17021, -227.986, -1.08289} ,
    { -2.21838, 226.778, -1.18125, -223.877, -1.27081} ,
    { 2.22758, 233.719, -1.41466, -216.074, -1.24209} ,
    { -1.62378, 223.635, -1.23193, -227.54, -1.35362} ,
    { 1.50002, 226.48, -1.19521, -222.886, -1.11066} ,
    { -1.47489, 222.337, -1.1975, -229.085, -1.31802} ,
    { 1.25824, 228.564, -1.88099, -227.411, -1.66533} ,
    },{ { -2.09495, 226.021, -0.939606, -224.858, -0.999927} ,
    { 1.45802, 207.794, -0.737266, -235.595, -0.737246} ,
    { -1.85307, 220.844, -1.22236, -230.86, -1.37705} ,
    { 2.31434, 230.209, -1.30215, -218.935, -1.13823} ,
    { -5.18055, 223.277, -0.782532, -228.253, -0.899783} ,
    { 1.44913, 227.946, -1.4466, -223.509, -1.30223} ,
    { -2.74655, 222.665, -1.02146, -228.868, -1.13569} ,
    { 2.38244, 216.923, -0.530133, -230.352, -0.530128} ,
    },{ { -0.720597, 225.748, -1.73087, -209.107, -1.86377} ,
    { 2.69673, 31.9755, -5.7496, -16.0353, -0.643836} ,
    { -1.85448, 224.647, -1.11725, -226.394, -1.2018} ,
    { 2.66561, 225.911, -1.32037, -223.997, -1.18346} ,
    { -2.47568, 222.438, -1.16156, -228.949, -1.31596} ,
    { 2.45744, 223.025, -1.06233, -225.945, -0.996281} ,
    { -2.10636, 223.816, -1.22747, -227.462, -1.38016} ,
    { 1.25296, 228.646, -1.58755, -223.518, -1.44642} ,
    },{ { -2.52517, 225.324, -0.766246, -225.641, -0.811065} ,
    { 1.88428, 224.48, -1.21219, -225.335, -1.12897} ,
    { -9.11946, 232.979, -0.196329, -217.519, -0.196325} ,
    { 1.12817, 226.246, -1.68022, -226.849, -1.54266} ,
    { -1.88053, 224.684, -1.32809, -226.24, -1.46415} ,
    { -1.29301, 226.564, -1.62115, -226.147, -1.49219} ,
    { -0.700307, 221.558, -1.04414, -230.238, -1.18143} ,
    { -2.01262, 232.922, -1.89831, -221.227, -1.70886} ,
    },},{ { { 36.0114, 215.343, -0.414381, -224.78, -0.25242} ,
    { 1.40997, 221.245, -2.14814, -218.551, -2.01684} ,
    { -3.18016, 222.195, -1.07673, -229.398, -1.19871} ,
    { 3.16919, 226.919, -1.89574, -227.336, -1.71048} ,
    { -2.0229, 224.427, -1.17125, -226.655, -1.2839} ,
    { 1.13062, 232.596, -2.16113, -223.326, -1.91358} ,
    { -4.68687, 226.861, -0.741107, -224.246, -0.82604} ,
    { 0.370807, 1406.52, -1.93987, -1402.99, -1.89538} ,
    },{ { -8.06559, 229.297, -0.404653, -221.627, -0.442481} ,
    { 0.467499, 229.862, -1.59129, -221.659, -1.46439} ,
    { -0.887441, 214.619, -1.53342, -237.737, -1.79901} ,
    { 1.18556, 230.697, -1.52264, -220.778, -1.36317} ,
    { -1.23127, 226.99, -1.07728, -223.585, -1.13402} ,
    { 0.570031, 227.716, -1.57323, -224.296, -1.44624} ,
    { -1.49978, 221.51, -1.20526, -229.963, -1.30823} ,
    { 1.39225, 224.127, -1.16791, -225.443, -1.09216} ,
    },{ { -1.75068, 227.97, -0.802415, -222.3, -0.822587} ,
    { 1.86597, 222.78, -1.25983, -227.698, -1.17544} ,
    { -1.22247, 225.547, -1.18896, -225.232, -1.2697} ,
    { 0.905307, 231.798, -1.84648, -222.723, -1.64062} ,
    { -1.61408, 223.087, -1.23557, -228.167, -1.35528} ,
    { 1.81932, 230.876, -1.28493, -218.107, -1.1465} ,
    { -1.2994, 221.118, -1.12898, -230.591, -1.24158} ,
    { 0.834589, 229.104, -1.79668, -224.277, -1.64008} ,
    },{ { -1.41685, 218.538, -1.17526, -233.494, -1.29993} ,
    { 4.1474, 228.146, -1.03187, -218.015, -0.901792} ,
    { -0.571046, 222.008, -1.58215, -228.876, -1.6868} ,
    { 0.440803, 231.64, -1.9311, -223.047, -1.7469} ,
    { -1.47342, 221.95, -1.2046, -229.492, -1.31578} ,
    { 0.776127, 228.154, -1.28967, -221.585, -1.1923} ,
    { -1.48807, 221.107, -0.930545, -230.687, -1.01058} ,
    { 4.91245, 116.914, -0.5439, -113.288, -0.443251} ,
    },{ { -2.33914, 225.006, -0.950831, -226.332, -1.07074} ,
    { 2.04328, 229.168, -1.43416, -221.963, -1.26802} ,
    { -1.10915, 218.579, -1.37418, -233.345, -1.56215} ,
    { 4.41073, 215.668, -0.491442, -230.354, -0.485419} ,
    { -1.97165, 225.543, -1.28877, -225.229, -1.43124} ,
    { 4.58842, 221.214, -0.522259, -225.686, -0.491307} ,
    { -1.93997, 226.822, -1.13034, -223.766, -1.19798} ,
    { 1.06229, 228.909, -1.79156, -225.277, -1.60886} ,
    },{ { -0.517388, 224.521, -1.06864, -226.548, -1.14829} ,
    { 3.80313, 221.204, -0.747589, -225.525, -0.697573} ,
    { -1.87407, 225.686, -1.14818, -225.227, -1.25697} ,
    { 4.27869, 222.188, -1.00387, -224.917, -0.90519} ,
    { -0.996095, 228.195, -1.49673, -222.063, -1.63367} ,
    { 1.76876, 225.422, -1.38877, -225.784, -1.26448} ,
    { -9.98939, 234.889, -0.201789, -214.941, -0.201785} ,
    { 1.13816, 224.789, -1.47993, -227.066, -1.37058} ,
    },{ { -3.51978, 227.015, -0.735545, -223.883, -0.78877} ,
    { 4.72942, 216.201, -0.774231, -230.062, -0.73111} ,
    { -1.52378, 227.659, -1.4186, -222.814, -1.57858} ,
    { 2.35644, 222.933, -0.896181, -225.289, -0.848523} ,
    { -2.05752, 220.605, -1.13326, -231.214, -1.26643} ,
    { 2.10405, 227.23, -1.1852, -221.644, -1.08166} ,
    { -2.32703, 221.448, -1.1386, -230.226, -1.27063} ,
    { 2.7436, 221.386, -0.906814, -226.765, -0.856607} ,
    },{ { -0.718245, 226.186, -1.62612, -224.102, -1.73488} ,
    { 1.12092, 228.83, -1.60574, -223.34, -1.4713} ,
    { -1.63837, 224.758, -1.51789, -226.059, -1.68171} ,
    { 1.83744, 223.307, -0.847296, -224.865, -0.805671} ,
    { -1.61927, 223.579, -1.31641, -227.435, -1.42734} ,
    { -1.067, 229.256, -1.27755, -220.08, -1.16674} ,
    { 0.537486, 222.114, -1.22994, -229.436, -1.38141} ,
    { -4.53293, 225.898, -1.21759, -224.177, -1.18394} ,
    },},{ { { -3.00772, 214.28, -1.12287, -239.244, -1.29978} ,
    { 5.03654, 220.856, -0.904892, -227.372, -0.852899} ,
    { -3.22487, 213.465, -1.75347, -239.431, -2.04766} ,
    { 0.357594, 229.604, -1.74044, -222.539, -1.61584} ,
    { -2.57441, 226.16, -0.828441, -224.822, -0.891781} ,
    { 0.803157, 227.245, -1.37067, -223.422, -1.23329} ,
    { -2.21335, 216.415, -0.97004, -237.74, -1.12985} ,
    { 0.634854, 245.146, -1.64219, -209.002, -1.32961} ,
    },{ { -0.148042, 218.098, -1.52822, -233.698, -1.74907} ,
    { 1.01958, 228.447, -1.32885, -221.454, -1.20501} ,
    { -1.6397, 225.586, -0.934409, -225.475, -1.00694} ,
    { 2.16687, 227.346, -1.0831, -220.075, -0.966315} ,
    { -2.10292, 222.329, -0.880475, -229.528, -0.981649} ,
    { 1.84788, 229.12, -1.19207, -218.907, -1.05185} ,
    { -1.71528, 221.896, -1.04156, -229.876, -1.15934} ,
    { 2.45984, 221.969, -0.893445, -225.821, -0.8366} ,
    },{ { -0.877447, 216.227, -1.47452, -236.799, -1.72739} ,
    { 1.98016, 233.233, -1.35281, -215.872, -1.16591} ,
    { -6.41604, 20.7859, -0.336873, -30.4858, -3.91354} ,
    { 1.54771, 232.957, -1.50604, -217.851, -1.3395} ,
    { -1.51259, 222.065, -1.14936, -229.574, -1.28781} ,
    { 3.40055, 224.18, -1.03741, -222.456, -0.913622} ,
    { -1.63225, 225.215, -0.999986, -225.851, -1.07509} ,
    { 2.48454, 43.2347, -3.4756, -18.3881, -0.586504} ,
    },{ { -1.2843, 224.327, -1.07725, -226.805, -1.20716} ,
    { 1.47831, 221.97, -1.09833, -226.866, -1.00742} ,
    { -0.283995, 230.324, -1.35231, -219.601, -1.44109} ,
    { 1.33297, 227.696, -1.87024, -228.073, -1.66535} ,
    { -1.79685, 226.028, -0.912218, -224.972, -1.00956} ,
    { 1.01842, 220.494, -0.881847, -227.339, -0.831313} ,
    { -0.944663, 222.72, -1.1096, -228.778, -1.22537} ,
    { 1.91399, 211.912, -0.983501, -238.675, -0.983499} ,
    },{ { -0.870527, 234.163, -1.03176, -213.368, -1.03179} ,
    { 3.03388, 219.245, -0.778025, -227.8, -0.733838} ,
    { -4.00202, 227.276, -0.903705, -223.503, -0.996956} ,
    { 2.46834, 222.22, -1.15519, -227.336, -1.06796} ,
    { -4.50313, 33.9416, -0.723327, -42.9443, -7.3419} ,
    { 2.63743, 227.237, -1.18535, -221.098, -1.05015} ,
    { -1.54816, 222.745, -1.19183, -228.807, -1.34699} ,
    { 2.01112, 220.532, -1.29186, -230.918, -1.19223} ,
    },{ { -1.1443, 233.343, -0.86568, -215.883, -0.865688} ,
    { 2.49983, 219.954, -0.98023, -228.964, -0.930655} ,
    { -1.50991, 224.53, -1.22854, -226.543, -1.35897} ,
    { 3.8495, 220.498, -0.74719, -225.807, -0.695145} ,
    { -1.56131, 224.288, -1.28148, -226.852, -1.4324} ,
    { 3.95265, 224.609, -0.963532, -222.152, -0.867026} ,
    { -1.08217, 222.321, -1.24567, -228.983, -1.35381} ,
    { 2.88146, 223.974, -1.04178, -223.887, -0.949107} ,
    },{ { -3.65294, 228.075, -0.760829, -222.675, -0.814312} ,
    { 1.76451, 231.991, -1.74816, -222.527, -1.53091} ,
    { -1.61955, 223.499, -1.2995, -227.657, -1.44353} ,
    { 2.48414, 226.186, -1.3322, -224.275, -1.19757} ,
    { -1.19691, 226.765, -0.93687, -224.006, -0.997821} ,
    { 4.3695, 221.036, -0.870861, -225.079, -0.792701} ,
    { -4.66407, 227.312, -0.92848, -223.216, -1.04667} ,
    { 5.47802, 214.74, -0.345547, -230.004, -0.345546} ,
    },{ { -3.52474, 226.816, -0.96626, -224.003, -1.05543} ,
    { 2.6898, 215.686, -0.658691, -232.478, -0.65869} ,
    { -2.61111, 228.671, -1.38904, -221.746, -1.53506} ,
    { 0.795911, 228.856, -1.975, -225.925, -1.80148} ,
    { -0.222993, 219.339, -1.33694, -232.208, -1.44088} ,
    { -0.093059, 226.935, -0.96251, -219.306, -0.855086} ,
    { -1.66524, 220.611, -0.822399, -231.671, -0.942479} ,
    { -2.78885, 235.605, -1.7154, -219.443, -1.43742} ,
    },},{ { { -6.38707, 1765.66, -1.41963, -1844.26, -1.48181} ,
    { 3.86115, 226.102, -1.19586, -222.923, -1.08131} ,
    { -2.62574, 222.278, -1.30912, -228.914, -1.44272} ,
    { 0.51772, 225.42, -1.28017, -224.911, -1.22406} ,
    { -1.66358, 17.6336, -0.755425, -90.6772, -4.03838} ,
    { 0.97403, 222.8, -0.97259, -225.976, -0.924671} ,
    { -2.61598, 222.897, -0.938596, -228.823, -1.04103} ,
    { 2.3216, 226.557, -1.28542, -223.212, -1.15403} ,
    },{ { -0.911372, 216.444, -1.27195, -235.862, -1.45053} ,
    { 1.71743, 224.443, -1.30787, -226.019, -1.19722} ,
    { -0.76583, 942.44, -1.58182, -970.88, -1.64645} ,
    { 1.31991, 227.685, -1.286, -221.983, -1.16763} ,
    { -1.24747, 221.074, -1.18634, -230.757, -1.34534} ,
    { 1.75494, 231.54, -1.20668, -216.303, -1.05761} ,
    { -1.41044, 220.812, -1.02474, -231.069, -1.16368} ,
    { 1.14971, 233.018, -1.44677, -217.41, -1.26758} ,
    },{ { -1.75279, 225.448, -1.18655, -225.457, -1.288} ,
    { 2.01222, 226.703, -1.27171, -222.979, -1.15314} ,
    { -1.21371, 222.837, -1.35124, -228.366, -1.4912} ,
    { 1.56716, 233.265, -1.48757, -217.389, -1.31098} ,
    { -2.54646, 225.489, -0.867887, -225.64, -0.932951} ,
    { 1.56691, 228.123, -1.21412, -220.794, -1.09921} ,
    { -1.10247, 219.798, -1.57581, -231.688, -1.79849} ,
    { 2.54603, 221.048, -0.989239, -227.641, -0.931508} ,
    },{ { -1.10405, 210.139, -1.46343, -244.742, -1.77612} ,
    { 2.43748, 72.3865, -3.41681, -18.2317, -0.605751} ,
    { -1.51491, 221.023, -0.911438, -230.844, -0.998382} ,
    { 2.89559, 223.893, -0.968145, -223.439, -0.883261} ,
    { -1.64823, 221.214, -1.04409, -230.602, -1.15149} ,
    { 2.93871, 225.82, -0.99061, -221.258, -0.893091} ,
    { -0.504367, 232.028, -1.20221, -217.671, -1.2757} ,
    { 2.90495, 230.003, -0.836523, -215.954, -0.731784} ,
    },{ { -2.31114, 227.365, -1.03861, -223.445, -1.15036} ,
    { 2.41984, 95.1153, -5.33189, -17.4685, -0.651637} ,
    { -1.15241, 223.574, -1.20649, -227.582, -1.31184} ,
    { 2.6873, 226.03, -1.20268, -223.114, -1.09255} ,
    { -1.32145, 225.181, -1.05767, -225.785, -1.13715} ,
    { 2.31298, 229.352, -1.32908, -220.372, -1.19266} ,
    { -2.29236, 222.202, -1.00063, -229.509, -1.10926} ,
    { 2.36424, 224.747, -1.0769, -223.613, -0.988918} ,
    },{ { -3.5282, 224.829, -0.90383, -226.311, -1.00002} ,
    { 1.51094, 228.767, -1.54412, -223.383, -1.38829} ,
    { -2.97202, 228.868, -0.771996, -221.577, -0.812049} ,
    { 2.7179, 223.67, -1.23998, -226.367, -1.12342} ,
    { -1.54891, 226.316, -1.37658, -224.212, -1.46898} ,
    { 3.72693, 225.031, -0.995584, -221.612, -0.889084} ,
    { -2.30539, 224.619, -1.03874, -226.503, -1.13078} ,
    { 1.35313, 226.725, -1.7173, -227.109, -1.55898} ,
    },{ { -4.14499, 227.603, -0.786357, -223.21, -0.858873} ,
    { 2.20772, 18.5647, -2.60532, -15.4385, -0.617832} ,
    { -3.46711, 227.511, -0.75865, -223.32, -0.811921} ,
    { 3.07143, 224.618, -0.939503, -222.645, -0.861271} ,
    { -3.49119, 222.955, -0.946961, -228.711, -1.06722} ,
    { 3.01431, 223.415, -0.742329, -223.581, -0.690361} ,
    { -2.95303, 218.398, -0.982271, -234.933, -1.12773} ,
    { 1.35309, 228.375, -1.83753, -227.243, -1.6317} ,
    },{ { -1.93029, 222.904, -1.03861, -228.336, -1.17836} ,
    { 1.12709, 228.064, -1.60167, -223.989, -1.47961} ,
    { -1.13442, 227.451, -1.00077, -222.918, -1.03516} ,
    { 1.75555, 224.143, -0.720701, -224.291, -0.692396} ,
    { -2.46369, 225.85, -1.0022, -225.075, -1.08274} ,
    { -0.345161, 226.132, -1.02001, -222.404, -0.956868} ,
    { 0.715912, 219.442, -1.14306, -232.537, -1.29185} ,
    { -2.78633, 225.085, -1.42037, -227.496, -1.26018} ,
    },},{ { { -2.60883, 224.337, -1.40492, -226.22, -1.55519} ,
    { 3.79, 230.121, -1.195, -215.123, -1.05065} ,
    { -3.08331, 213.405, -1.46472, -240.512, -1.77481} ,
    { 5.2067, 804.357, -1.93539, -747.094, -1.78387} ,
    { -8.1654, 229.798, -0.616982, -220.543, -0.686652} ,
    { 2.81701, 123.265, -7.26523, -16.2166, -0.600496} ,
    { -1.25038, 221.961, -1.23158, -229.61, -1.37728} ,
    { 2.01475, 225.412, -1.17729, -223.646, -1.07379} ,
    },{ { -2.2573, 229.225, -0.104209, -221.146, -0.09786} ,
    { 1.95414, 224.589, -1.03249, -223.963, -0.963318} ,
    { -1.55058, 224.821, -1.21195, -226.135, -1.304} ,
    { 0.545925, 228.086, -1.59981, -224.03, -1.46542} ,
    { -1.86003, 222.378, -1.11678, -229.21, -1.23853} ,
    { 0.86565, 226.971, -1.35563, -223.471, -1.25287} ,
    { -1.6233, 218.868, -1.33382, -232.989, -1.50545} ,
    { 1.55372, 225.489, -1.15507, -223.726, -1.07383} ,
    },{ { -1.47817, 222.635, -1.42412, -228.55, -1.58439} ,
    { 3.4981, 215.491, -0.7928, -232.282, -0.765305} ,
    { -1.31446, 221.612, -1.56164, -229.651, -1.77362} ,
    { 1.98797, 224.311, -1.12318, -224.505, -1.03147} ,
    { -1.63099, 224.736, -1.29825, -226.307, -1.4419} ,
    { 1.91809, 227.038, -1.14538, -221.404, -1.0375} ,
    { -1.6853, 217.266, -1.17385, -235.196, -1.34853} ,
    { 0.458547, 228.541, -1.38702, -221.874, -1.25286} ,
    },{ { -1.60793, 225.065, -0.916617, -226.171, -1.00749} ,
    { 3.67834, 215.68, -0.41411, -229.937, -0.414109} ,
    { -1.61574, 220.023, -1.36279, -231.829, -1.55359} ,
    { 2.74604, 218.749, -0.817824, -224.709, -0.772087} ,
    { 0.627665, 221.874, -1.01069, -229.893, -1.13153} ,
    { 0.574993, 222.28, -1.14939, -227.349, -1.07312} ,
    { -1.82642, 220.726, -1.17751, -231.045, -1.31374} ,
    { 1.1534, 227.215, -1.18954, -221.316, -1.06212} ,
    },{ { -1.73329, 225.856, -1.29913, -225.076, -1.45511} ,
    { 4.7482, 220.367, -0.791581, -224.681, -0.713808} ,
    { -1.86862, 224.315, -1.10141, -226.545, -1.21285} ,
    { 1.79336, 227.373, -1.28845, -222.296, -1.15971} ,
    { -1.5334, 223.473, -1.21047, -227.726, -1.32373} ,
    { 2.54803, 223.067, -1.09194, -225.815, -1.01134} ,
    { -2.05748, 222.812, -1.0907, -228.658, -1.20159} ,
    { 3.39996, 221.31, -0.871281, -225.865, -0.80859} ,
    },{ { -3.27812, 225.19, -0.823215, -226.047, -0.905632} ,
    { 2.33084, 224.514, -1.52432, -228.412, -1.38237} ,
    { -0.764462, 224.552, -1.46616, -226.189, -1.58402} ,
    { 2.31699, 224.681, -1.14854, -224.431, -1.05986} ,
    { -2.39156, 226.856, -0.951984, -223.911, -1.0227} ,
    { 2.74236, 224.936, -1.27121, -225.143, -1.12766} ,
    { -1.60253, 224.285, -1.20597, -226.764, -1.31316} ,
    { 2.07611, 224.481, -1.27114, -225.707, -1.16843} ,
    },{ { -1.98271, 224.732, -0.920454, -226.41, -0.986612} ,
    { 6.63079, 35.7484, -3.2716, -16.0726, -0.286612} ,
    { -1.54135, 220.974, -1.35441, -230.556, -1.5239} ,
    { 2.1892, 225.265, -1.12724, -223.738, -1.04704} ,
    { -1.80035, 224.594, -1.17088, -226.43, -1.27457} ,
    { 1.80205, 228.707, -1.5126, -222.966, -1.37015} ,
    { -1.25572, 220.873, -1.30921, -230.63, -1.45686} ,
    { 5.52119, 217.076, -0.510687, -228.267, -0.487367} ,
    },{ { -0.597878, 223.911, -1.00885, -227.014, -1.05396} ,
    { 4.27705, 219.588, -0.942211, -228.063, -0.874841} ,
    { -1.55622, 223.107, -1.15155, -228.132, -1.24101} ,
    { 1.86067, 225.516, -1.16795, -223.917, -1.09481} ,
    { -0.968742, 223.498, -1.48328, -227.336, -1.59333} ,
    { 1.06456, 228.122, -1.57557, -224.001, -1.43923} ,
    { 2.2248, 221.768, -1.42353, -229.433, -1.56903} ,
    { 0, 222.746, -1.21728, -228.784, -1.37889} } } };

Double_t HParticleTool::parsSX[6][8][8][3];
Double_t HParticleTool::parsDX[6][8][8][5];


TString  HParticleTool::beamtime_tof="";
TF1* HParticleTool::gf1 = 0;
TF1* HParticleTool::gf2 = 0;
TF1* HParticleTool::gfsum = 0;
TF1* HParticleTool::gScaledy=0;
TF1* HParticleTool::fdxoffset=0;
TF1* HParticleTool::fdxsigma =0;

Double_t HParticleTool::scaleDyPars[4] = {3.5,35./20.,9.,2.}; // a + slope + part2 + gain

HParticleTool::HParticleTool()
{
}

HParticleTool::~HParticleTool()
{

}

Float_t HParticleTool::phiSecToLabDeg(Int_t sec, Float_t phiRad)
{
    // Convert phi (rad) angle from sec to Lab phi in deg

    phiRad *= TMath::RadToDeg();

    if(sec < 5)  return phiRad += 60.0f * sec;
    else         return phiRad -= 60.0f;
}


Float_t HParticleTool::thetaToLabDeg(Float_t thetaRad)
{
    // Convert theta angle (rad) to the coordinate lab system

    return  TMath::RadToDeg() * thetaRad;
}

Float_t HParticleTool::phiLabToPhiSecDeg(Float_t phiLabDeg)
{
    // Convert phi angle (deg,lab: 0-360) to the coordinate sector system (60,120)
    return fmod(phiLabDeg,60.F) + 60;
}

Int_t HParticleTool::phiLabToSec(Float_t phiLabDeg)
{   // Convert phi angle (deg,lab: 0-360) to the sector number
    Int_t sec;
    if(phiLabDeg >= 60) sec = ((Int_t) phiLabDeg/60) - 1;
    else                sec = 5;
    return sec;
}

Float_t  HParticleTool::calcRichQA(HMdcSeg* seg, HRichHit* richHit)
{
    // return -1 if fails.

    if(!seg || ! richHit) return -1;
    Float_t rphi = fmod(richHit->getPhi(),60.F) + 60;
    Float_t dTheta = richHit->getTheta() - seg->getTheta()*TMath::RadToDeg();
    Float_t dPhi   = ( rphi - seg->getPhi()*TMath::RadToDeg() ) * TMath::Sin(seg->getTheta());
    return sqrt(dPhi*dPhi + dTheta*dTheta);
}

Float_t  HParticleTool::calcRichQA(HMdcSeg* seg,Float_t richTheta,Float_t richPhi)
{
    // return -1 if fails. richTheta and richPhi in deg in lab system
    //

    if(!seg ) return -1;
    Float_t rphi = fmod(richPhi,60.F) + 60;
    Float_t dTheta = richTheta - seg->getTheta()*TMath::RadToDeg();
    Float_t dPhi   = ( rphi - seg->getPhi()*TMath::RadToDeg() ) * TMath::Sin(seg->getTheta());
    return sqrt(dPhi*dPhi + dTheta*dTheta);
}


Float_t HParticleTool::getOpeningAngle(Float_t phi1,Float_t theta1,Float_t phi2,Float_t theta2)
{
    // phi and theta angles of particle 1 and 2 in lab coordinates [deg]
    // returns opening angle [deg]

  //Temporary vector objects for scalar product computation
  TVector3 vec1;
  TVector3 vec2;

  // convert angles to radians
  phi1   *= TMath::DegToRad() ;
  theta1 *= TMath::DegToRad() ;
  phi2   *= TMath::DegToRad() ;
  theta2 *= TMath::DegToRad() ;


  //Above all angles are in degree! We need them in radians!
  vec1.SetMagThetaPhi(1.0,theta1,phi1);
  vec2.SetMagThetaPhi(1.0,theta2,phi2);
  
  return TMath::RadToDeg() * vec1.Angle(vec2);
}

Float_t HParticleTool::getOpeningAngle(TLorentzVector& vec1,TLorentzVector& vec2)
{
    // returns opening angle [deg]
    return vec1.Angle(vec2.Vect())*TMath::RadToDeg();
}

Float_t HParticleTool::getOpeningAngle(HParticleCand* cand1,HParticleCand* cand2)
{
    // returns opening angle [deg]
    return HParticleTool::getOpeningAngle(cand1->getPhi(),cand1->getTheta(),cand2->getPhi(),cand2->getTheta());
}

Float_t HParticleTool::getOpeningAngle(HGeantKine* kine1,HGeantKine* kine2)
{
    // returns opening angle [deg]

    Float_t theta1,theta2,phi1,phi2;
    kine1->getPhiThetaDeg(theta1,phi1);
    kine2->getPhiThetaDeg(theta2,phi2);

    return HParticleTool::getOpeningAngle(phi1,theta1,phi2,theta2);
}

Bool_t HParticleTool::setCloseCandidates(Float_t oACut, Bool_t sameSector, Bool_t skipSameSeg)
{
    // loops over HParticleCand category and finds the closest partners of each candidate. set
    // setAngleToNearbyFittedInner() and setAngleToNearbyUnfittedInner() of the candidates
    // convention :  oAngle is positive if the closest partner had a ring match otherwise negative.
    // Only opening Angles smaller oACut [Deg] are taken into account. Default opening Angles
    // are set to -99. if sameSector = kTRUE (default) closest partners are searched in the
    // same sector only. if skipSameSeg = kTRUE (default) candidates which share the same
    // inner segment are ignored.

    HCategory* catCand = HCategoryManager::getCategory(catParticleCand);
    if(catCand){

	UInt_t  size = catCand->getEntries();

	if(size < 2) return kTRUE;

	Float_t oAngle          = -1;
	Float_t oAngleSel       = -1;
	Float_t oASmallFitted   = -99;
	Float_t oASmallUnfitted = -99;
	HParticleCand* cand     = 0;
	HParticleCand* cand2    = 0;
	//----------------------------------------------------------
	for(UInt_t i = 0; i < size ; i ++){                   // outer loop

	    oASmallFitted   = -99;
	    oASmallUnfitted = -99;

	    cand = HCategoryManager::getObject(cand,catCand,i);

	    cand->setAngleToNearbyFittedInner  (oASmallFitted);
	    cand->setAngleToNearbyUnfittedInner(oASmallUnfitted);

	    //----------------------------------------------------------
	    for(UInt_t j = 0 ; j < size; j ++){              // inner loop

		if(i==j) continue;

		cand2 = HCategoryManager::getObject(cand2,catCand,j);

		if(sameSector  && cand->getSector()      != cand2->getSector())      continue;   // only in same sector
                if(skipSameSeg && cand->getInnerSegInd() == cand2->getInnerSegInd()) continue;   // don't  take into account tracks which share same inner seg

		oAngle = HParticleTool::getOpeningAngle(cand,cand2);  // opening angle beteween candiates without sign
		if(oAngle < oACut){                      // only for small angle
		    if(cand2->getInnerSegmentChi2()<=0){ // no fitted inner segment
			oAngleSel = oAngle < fabs(oASmallUnfitted) ? oAngle: fabs(oASmallUnfitted);
			if(cand2->getRingCorr()!=0) { // ring match seg or rk
                            oASmallUnfitted =  oAngleSel;
			} else {
			    oASmallUnfitted = -oAngleSel;
			}

		    } else {   // fitted  inner segment
			oAngleSel = oAngle < fabs(oASmallFitted) ? oAngle: fabs(oASmallFitted);
			if(cand2->getRingCorr()!=0) { // ring match seg or rk
			    oASmallFitted =  oAngleSel;
			} else {
			    oASmallFitted =  -oAngleSel;
			}
		    }
		} // oACut
	    } // end inner loop

	    cand->setAngleToNearbyFittedInner  (oASmallFitted);
	    cand->setAngleToNearbyUnfittedInner(oASmallUnfitted);
	} // end outer loop

        return kTRUE;
    }

    return kFALSE;
}

Int_t HParticleTool::getCloseCandidates(HParticleCand* cand,
					vector<HParticleCand*>& vcand,
					vector<Float_t >& vopeninAngle,
					Float_t oACut,
					Bool_t sameSector, Bool_t skipSameSeg)
{
    // loops over HParticleCand category and finds the closest partners of cand
    // and fill them to vcand. the opening angles are filled in same order to vopeningAngles.
    // Only opening Angles smaller oACut [Deg] are taken into account.
    // if sameSector = kTRUE (default) closest partners are searched in the
    // same sector only. if skipSameSeg = kTRUE (default) candidates which share the same
    // inner segment are ignored. The candidates are sorted by inreasing opening angle.

    vcand       .clear();
    vopeninAngle.clear();


    if(!cand) return 0;

    HCategory* catCand = HCategoryManager::getCategory(catParticleCand);
    if(catCand){

	UInt_t  size = catCand->getEntries();

	if(size < 2) return 0;

	vector<Int_t >          vindex;
	vector<Float_t >        vtmpOA;
	vector<HParticleCand* > vtmpC;
        Float_t oAngle       = -1;
	HParticleCand* cand2 = 0;

	//----------------------------------------------------------
	for(UInt_t j = 0 ; j < size; j ++){

	    cand2 = HCategoryManager::getObject(cand2,catCand,j);
            if(cand == cand2)                                                    continue;   // skip same cand
	    if(sameSector  && cand->getSector()      != cand2->getSector())      continue;   // only in same sector
	    if(skipSameSeg && cand->getInnerSegInd() == cand2->getInnerSegInd()) continue;   // don't  take into account tracks which share same inner seg

	    oAngle = HParticleTool::getOpeningAngle(cand,cand2);  // opening angle beteween candiates without sign
	    if(oAngle < oACut){                      // only for small angle
		vtmpC       .push_back(cand2);
		vopeninAngle.push_back(oAngle);
	    } // oACut
	} // end loop
	//----------------------------------------------------------
        vindex.assign(vtmpC.size(),0);

	HTool::sort(vopeninAngle.size(),vopeninAngle.data(),vindex.data(),kFALSE,kTRUE); //sort increasing by OA , overwrite the vopeningAngle

	vcand.assign(vtmpC.size(),0);

	for(UInt_t i=0;i<vindex.size();i++){   // now copy the candidates in same order as opening angles
	    vcand[i]=vtmpC[vindex[i]];
	}

        return vcand.size();
    }

    return 0;
}

Int_t HParticleTool::getCloseCandidatesSegInd(HParticleCand* cand, vector<Int_t>& vSeg,Float_t oACut,
					      Bool_t sameSector, Bool_t skipSameSeg)
{
    // loops over HParticleCand category and finds the closest partners of cand
    // and fill the inner seg Ind to vSeg.
    // Only opening Angles smaller oACut [Deg] are taken into account.
    // if sameSector = kTRUE (default) closest partners are searched in the
    // same sector only. if skipSameSeg = kTRUE (default) candidates which share the same
    // inner segment are ignored.
    // The seg ind are sorted by inreasing opening angle.

    vSeg.clear();
    if(!cand) return 0;

    vector<Float_t>       vopeninAngle;
    vector<HParticleCand*>vcand;

    HParticleTool::getCloseCandidates(cand,vcand,vopeninAngle,oACut,sameSector,skipSameSeg);

    for(UInt_t i=0;i<vcand.size();i++){
	if(find(vSeg.begin(),vSeg.end(),vcand[i]->getInnerSegInd())==vSeg.end()) vSeg.push_back(vcand[i]->getInnerSegInd());
    }

    return vSeg.size();
}

void  HParticleTool::getTLorentzVector(HGeantKine* kine, TLorentzVector& vec,Int_t pid)
{
    // fills TLorentzVector vec from HGeantKine (if no id is provide id from
    // kine will be used).
    // CAUTION : vec.Phi() will be -pi to  pi  (-180 to +180 deg)
    //           To be compatibel with the HADES lab system phi (0-360 deg)
    //           one has to use
    //           HParticleTool::getLabPhiDeg(TLorentzVector& vec)


    if(kine == NULL) { vec.SetXYZM(-1000,-1000,-1000,-1); return; }
    Int_t id = ( pid != -1 ) ? pid : kine->getID();
    Float_t mass = HPhysicsConstants::mass(id);
    Float_t xmom,ymom,zmom;
    kine->getMomentum(xmom,ymom,zmom);
    vec.SetPxPyPzE(xmom,ymom,zmom,TMath::Sqrt(mass*mass + xmom*xmom + ymom*ymom + zmom*zmom));
}

void  HParticleTool::fillTLorentzVector(TLorentzVector& v,HVirtualCand* cand,Float_t mass)
{
    // fill v from cand. cand will be unmodified.
    // user has to provide the mass. if the candidate has
    // no reconstructed momentum the vector will be filled
    // by angles only (enough for opening angle calculation, but invMass
    // for such vectors will be wrong). FOR PARTICLES WITH CHARGE != 1
    // USE fillTLorentzVector(TLorentzVector& v,HParticleCand* cand,Int_t pid,Bool_t correctMom=kTRUE)

    if(cand->getMomentum() != -1){
	v.SetXYZM( cand->getMomentum() * TMath::Sin( TMath::DegToRad() * cand->getTheta())
		  * TMath::Cos( TMath::DegToRad() * cand->getPhi()),
		  cand->getMomentum() * TMath::Sin( TMath::DegToRad() * cand->getTheta() )
		  * TMath::Sin( TMath::DegToRad() * cand->getPhi() ),
		  cand->getMomentum() * TMath::Cos( TMath::DegToRad() * cand->getTheta() ),
		  mass );
    } else {

        TVector3 v1;
	v1.SetMagThetaPhi(1.0,cand->getTheta() * TMath::DegToRad(),cand->getPhi() * TMath::DegToRad());
	v.SetVect(v1);
    }

}

void  HParticleTool::fillTLorentzVector(TLorentzVector& v,HVirtualCand* cand,Int_t pid,Bool_t correctMom)
{
    // fill v from cand. cand will be unmodified.
    // user has to provide the PID. if the candidate has
    // no reconstructed momentum the vector will be filled
    // by angles only (enough for opening angle calculation, but invMass
    // for such vectors will be wrong). correctMom will
    // switch to correction of momentum (HEnergylossCorrPar needed)
    // The function takes care about particle charge != 1 when
    // fill the momenta.

    Float_t mass = HPhysicsConstants::mass(pid);
    Float_t mom  = cand->getMomentumPID(pid);

    HParticleCand * pcand = dynamic_cast<HParticleCand*>(cand);
    if(pcand && correctMom && cand) mom = pcand->getCorrectedMomentumPID(pid);

    if(mom != -1){
	v.SetXYZM( mom * TMath::Sin( TMath::DegToRad() * cand->getTheta())
		  * TMath::Cos( TMath::DegToRad() * cand->getPhi()),
		  mom * TMath::Sin( TMath::DegToRad() * cand->getTheta() )
		  * TMath::Sin( TMath::DegToRad() * cand->getPhi() ),
		  mom * TMath::Cos( TMath::DegToRad() * cand->getTheta() ),
		  mass );
    } else {

        TVector3 v1;
	v1.SetMagThetaPhi(1.0,cand->getTheta() * TMath::DegToRad(),cand->getPhi() * TMath::DegToRad());
	v.SetVect(v1);
    }

}



Float_t  HParticleTool::getLabPhiDeg(TLorentzVector& vec)
{
    // CAUTION : vec.Phi() will be -pi to  pi  (-180 to +180 deg)
    //           To be compatibel with the HADES lab system phi (0-360 deg)
    //           one has to use shift negative values by 360deg

    return  vec.Phi() < 0 ? vec.Phi()*TMath::RadToDeg()+360 : vec.Phi()*TMath::RadToDeg();
}

HGeomVector HParticleTool::getGlobalVertex(Int_t v,Bool_t warn)
{
    //  return the global vertex position
    //  v can be Particle::kVertexCluster, Particle::kVertexSegment,
    //  Particle::kVertexParticle. In case of Particle::kVertexSegment
    //  and Particle::kVertexParticle the chi2 of the vertex fit is
    //  checked. If the the fit Particle::kVertexSegment failed the position of
    //  Particle::kVertexCluster is returned instead. If Particle::kVertexParticle
    //  fails Particle::kVertexSegment is used if possible otherwise fallback
    //  is Particle::kVertexCluster.

    if(!gHades) {
	HGeomVector vec;
	cout<<"HParticleTool::getGlobalVertex() : No Hades object found !"<<endl;
	return vec;
    }
    if(!gHades->getCurrentEvent()) {
	HGeomVector vec;
	cout<<"HParticleTool::getGlobalVertex() : No Event structure found !"<<endl;
	return vec;
    }
    if(v == Particle::kVertexCluster){
	return gHades->getCurrentEvent()->getHeader()->getVertexCluster().getPos();
    } else if (v == Particle::kVertexSegment){

	if(gHades->getCurrentEvent()->getHeader()->getVertex().getChi2() < 0){

	    if(warn) cout<<"HParticleTool::getGlobalVertex() : Vertex option v = "<<Particle::kVertexSegment<<"failed, return Particle::kVertexCluster !"<<endl;
	    return gHades->getCurrentEvent()->getHeader()->getVertexCluster().getPos();
	}

	return gHades->getCurrentEvent()->getHeader()->getVertex().getPos();
    } else if (v == Particle::kVertexParticle ){

	if(gHades->getCurrentEvent()->getHeader()->getVertexReco().getChi2() < 0){

	    if(gHades->getCurrentEvent()->getHeader()->getVertex().getChi2() < 0){
		if(warn) cout<<"HParticleTool::getGlobalVertex() : Vertex option v = "<<Particle::kVertexParticle<<"failed, return Particle::kVertexCluster !"<<endl;
		return gHades->getCurrentEvent()->getHeader()->getVertexCluster().getPos();
	    }
	    if(warn) cout<<"HParticleTool::getGlobalVertex() : Vertex option v = "<<Particle::kVertexParticle<<"failed, return Particle::kVertexSegment !"<<endl;
	    return gHades->getCurrentEvent()->getHeader()->getVertex().getPos();
	}

	return gHades->getCurrentEvent()->getHeader()->getVertexReco().getPos();

    } else {
	cout<<"HParticleTool::getGlobalVertex() : Vertex option v = "<<v<<"  unknow, return Particle::kVertexSegment !"<<endl;
	return gHades->getCurrentEvent()->getHeader()->getVertex().getPos();
    }

};


Double_t   HParticleTool:: getMinimumDistToVertex(HParticleCand* cand,HGeomVector& vertex)
{
    // returns distance of closest approach to vertex

    if(!cand) return -1;
    HGeomVector base, dir;
    HParticleTool::calcSegVector(cand->getZ(),cand->getR(),cand->getPhi()*TMath::DegToRad(),cand->getTheta()*TMath::DegToRad(),base,dir);
    return HParticleTool::calculateMinimumDistanceStraightToPoint(base,dir,vertex);
}

HGeomVector   HParticleTool:: getPointOfClosestApproachToVertex(HParticleCand* cand,HGeomVector& vertex)
{
    // returns distance of closest approach to vertex

    HGeomVector base, dir;
    HParticleTool::calcSegVector(cand->getZ(),cand->getR(),cand->getPhi()*TMath::DegToRad(),cand->getTheta()*TMath::DegToRad(),base,dir);
    return HParticleTool::calculatePointOfClosestApproachStraightToPoint(base,dir,vertex);
}

Double_t HParticleTool::scaledy (Double_t* x, Double_t* par)
{
    // scaling function for dy METAMATCH cut with 1/p  [GeV/c]
    // par[0] a : dy at 1/p=0;
    // par[1] slope per 1/p unit
    // par[2] part2 : open window for very slow particles
    // par[3] gain  : slope = slope*gain for 1/p > part2

    Double_t one_over_p = x[0];
    Double_t a     = par[0];
    Double_t slope = par[1];
    Double_t part2 = par[2];
    Double_t gain  = par[3];
    Double_t dy;
    if(one_over_p<part2) dy = a + slope * one_over_p;
    else                 dy = a + part2*slope + gain*slope * (one_over_p-part2);
    return dy;
}

Double_t HParticleTool::getScaledDy(HParticleCand* c,Double_t dyCut)
{
    // scaling function for dy METAMATCH cut with 1/p  [GeV/c]
    // par[0] a : dy at 1/p=0    [mm];
    // par[1] slope per 1/p unit
    // par[2] part2 : open window for very slow particles
    // par[3] gain  : slope = slope*gain for 1/p > part2
    // TF1 is created with initial parameters HParticleTool::scaleDyPars[4] at
    // first call of the function, dyCut [mm] will be used instead of scaleDyPars[0]
    // if dyCut is positive.

    Double_t dy = (dyCut>0) ? dyCut : scaleDyPars[0];

    if(gScaledy == NULL){
	gScaledy = new TF1("scaleDY",scaledy,0,100,4);
	gScaledy->SetParameter(0,dy);
	gScaledy->SetParameter(1,scaleDyPars[1]);
	gScaledy->SetParameter(2,scaleDyPars[2]);
	gScaledy->SetParameter(3,scaleDyPars[3]);
    } else {
       gScaledy->SetParameter(0,dy);
    }

    if(!c)                 return dy;
    if(c->getMomentum()<0) return dy;

    Double_t mom = c->getMomentum() * 0.001; // GeV/c
    if(mom < 0.01) mom = 0.01;
    if(mom > 1000) mom = 1000;

    return gScaledy->Eval(1./mom);

}
Float_t HParticleTool::getRpcCellHalfWidth(Int_t col,Int_t cell)
{
    // returns the half cell width for rpc cell in column col
    // return -1 if out of bounds (col 0-5,cell 0-31)

    if(col<0 || cell < 0) return -1;
    if(col<6 && cell < 32){
	return rpcCellHalfWidth[col*32+cell];
    } else {
	return -1;
    }
}

Float_t HParticleTool::getTofCellHalfWidth(Int_t mod,Int_t cell)
{
    // returns the half cell width for tof cell in module mod (addressing like data, not geom!)
    // return -1 if out of bounds (mod 0-7, cell 0-7)
    if(mod<0 || cell < 0) return -1;
    if(mod<8 && cell < 8){
	return tofCellHalfWidth[mod*8+cell];
    } else {
	return -1;
    }
}

Bool_t  HParticleTool::isGoodMetaCell(HParticleCand* c,Double_t bound,Bool_t doScaling)
{
    // returns kTRUE is the candidate matches in dy to the meta cell.
    // returns kFALSE if the candidate has no meta. If the candidate has shower
    // only it returns alway kTRUE. If doScaling = kTRUE a scaling with 1/p
    // of bound is applied to account for multiple scattering of slow particles

    if(c==0) return kFALSE;
    if(bound<0) bound = 0;


    if(doScaling) bound = getScaledDy(c,bound);

    Int_t sys = c->getSystemUsed();
    if(sys < 0) return kFALSE;   // no meta hit
    if(c->isTofHitUsed()||c->isTofClstUsed()){ // TOF :if cluster has to different cell sizes take the bigger one
	Float_t w1 = getTofCellHalfWidth(c->getMetaModule(0),c->getMetaCell(0));
	Float_t w2 = getTofCellHalfWidth(c->getMetaModule(1),c->getMetaCell(1));
	Float_t dy = fabs(c->getRkMetaDy());
	if(w2<w1){
	    return (dy<=w1+bound);
	} else {
	    return (dy<=w2+bound);
	}

    } else if (c->isRpcClstUsed()) {  // RPC : if cluster has to different cell sizes take the bigger one
	Float_t w1 = getRpcCellHalfWidth(c->getMetaModule(0),c->getMetaCell(0));
	Float_t w2 = getRpcCellHalfWidth(c->getMetaModule(1),c->getMetaCell(1));
	Float_t dy = fabs(c->getRkMetaDy());
	if(w2<w1){
	    return (dy<=w1+bound);
	} else {
	    return (dy<=w2+bound);
	}
    } else if(c->isShowerUsed()) { // allways good
	return kTRUE;
    }

    return kFALSE;
}


Bool_t HParticleTool::normDX(HParticleCand* c,TString beamtime)
{
    // This function changes
    // c->setMetaMatchQuality(metaDxnorm) (quality for dx only, dx unchanged);
    // RK dx values will be normalized by correct width to alow
    // for general treatment of cuts (RPC (clustersize 1 and 2, TOF and SIM)).
    // supported beamtime = apr12 (default)

    //---------------------------------------------------------
    beamtime.ToLower();
    if(beamtime_tof!=beamtime){

	if(beamtime == "apr12") {
	    memcpy ( &parsSX[0][0][0][0], &parsSX_apr12[0][0][0][0], sizeof(Double_t)*384*3 );
	    memcpy ( &parsDX[0][0][0][0], &parsDX_apr12[0][0][0][0], sizeof(Double_t)*384*5 );
	    beamtime_tof="apr12";  }
	else {
	    ::Error("normDX()","Unknow beamtime %s! will use \"apr12\"",beamtime.Data());
	    memcpy ( &parsSX[0][0][0][0], &parsSX_apr12[0][0][0][0], sizeof(Double_t)*384*3 );
	    memcpy ( &parsDX[0][0][0][0], &parsDX_apr12[0][0][0][0], sizeof(Double_t)*384*5 );
	    beamtime_tof="apr12";  }
    }
    //---------------------------------------------------------


    if(!fdxoffset) fdxoffset = new TF1("fdxoffset","[0]+[1]*exp(x*[2])+[3]*exp(x*[4])",0,25);     // create only once
    if(!fdxsigma)  fdxsigma  = new TF1("fdxsigma" ,"[0]+[1]*x**[2]",0,25);                        // create only once


    if(!c) return kFALSE;
    if(c->getBeta()<0)   return kTRUE;   // no tof or rpc
    if(c->isEmcUsed())   return kTRUE;   // beta from EMC

    Float_t metaDxnorm =  c->getRkMetaDx();
    if(metaDxnorm<-999) return kTRUE;  // no RK

    Int_t sector = c->getSector();
    Int_t module = c->getMetaModule(0);
    Int_t cell   = c->getMetaCell(0);

    if(cell<0||module<0) { cout<<"module or cell ==-1, should not happen"<<endl; return kFALSE; }

    HParticleCandSim* csim = dynamic_cast<HParticleCandSim*> (c);
    if(c->isTofHitUsed()==1||c->isTofClstUsed()==1) {
	Bool_t isGeant= kFALSE;
	if(csim){ // we are in simulation
	    // now find out if it was embedding real hit or pure sim
	    for(Int_t i=0;i<4;i++){
		Int_t tr = csim->getGeantTrackMeta(i);
		if(tr==-1) continue;
		if(tr > 0) isGeant = kTRUE;
	    }
	}
	Float_t dedx =c->getTofdEdx();
	if(dedx>25) dedx = 25;
	if(dedx<0) { cout<<"dedx out of bounce "<<dedx<<endl; return kTRUE;}
	fdxoffset-> SetParameters( parsDX[sector][module][cell] );
	fdxsigma -> SetParameters( parsSX[sector][module][cell] );
	if(csim){
            if(!isGeant) metaDxnorm -= fdxoffset -> Eval(c->getTofdEdx()) ;  // real data hit in embedding
	    metaDxnorm /= fdxsigma  -> Eval(c->getTofdEdx()) ;
	}
	else{
	    metaDxnorm -= fdxoffset -> Eval(c->getTofdEdx()) ;
	    metaDxnorm /= fdxsigma  -> Eval(c->getTofdEdx()) ;
	}
    }
    else if(c->isRpcClstUsed()==1) {
	Float_t sigma = RPCSIG1;
	if(c->getMetaModule(1)!=-1) sigma = RPCSIG2 ; // clustersize 2 :  sigma/sqrt(2)
	if(csim){
	    Bool_t isGeant= kFALSE;
	    for(Int_t i=0;i<4;i++){
		Int_t tr = csim->getGeantTrackMeta(i);
		if(tr==-1) continue;
		if(tr > 0) isGeant = kTRUE;
	    }
	    if(isGeant){
		if(c->getMetaModule(1)!=-1) sigma = RPCSIG2SIM;
                else                        sigma = RPCSIG1SIM;
	    }
	}
	metaDxnorm /= sigma;
    }
    //c->setRkMetaDx(metaDxnorm);
    c->setMetaMatchQuality(fabs(metaDxnorm));
    return kTRUE;
}

Float_t HParticleTool::getNormDX(HParticleCand* c,TString beamtime)
{
    // This function does not change the candidate.
    // it returns normalized RK dx value (including sign) to alow
    // for general treatment of cuts (RPC (clustersize 1 and 2, TOF and SIM)).
    // supported beamtime = apr12 (default)

    //---------------------------------------------------------
    beamtime.ToLower();
    if(beamtime_tof!=beamtime){

	if(beamtime == "apr12") {
	    memcpy ( &parsSX[0][0][0][0], &parsSX_apr12[0][0][0][0], sizeof(Double_t)*384*3 );
	    memcpy ( &parsDX[0][0][0][0], &parsDX_apr12[0][0][0][0], sizeof(Double_t)*384*5 );
	    beamtime_tof="apr12";  }
	else {
	    ::Error("getNormDX()","Unknow beamtime %s! will use \"apr12\"",beamtime.Data());
	    memcpy ( &parsSX[0][0][0][0], &parsSX_apr12[0][0][0][0], sizeof(Double_t)*384*3 );
	    memcpy ( &parsDX[0][0][0][0], &parsDX_apr12[0][0][0][0], sizeof(Double_t)*384*5 );
	    beamtime_tof="apr12";  }
    }
    //---------------------------------------------------------

    if(!fdxoffset) fdxoffset = new TF1("fdxoffset","[0]+[1]*exp(x*[2])+[3]*exp(x*[4])",0,25);     // create only once
    if(!fdxsigma)  fdxsigma  = new TF1("fdxsigma" ,"[0]+[1]*x**[2]",0,25);                        // create only once


    if(!c) return kFALSE;
    if(c->getBeta()<0)   return kTRUE;   // no tof or rpc
    if(c->isEmcUsed())   return kTRUE;   // beta from EMC

    Float_t metaDxnorm =  c->getRkMetaDx();
    if(metaDxnorm<-999) return metaDxnorm;  // no RK

    Int_t sector = c->getSector();
    Int_t module = c->getMetaModule(0);
    Int_t cell   = c->getMetaCell(0);

    if(cell<0||module<0) { cout<<"module or cell ==-1, should not happen"<<endl; return metaDxnorm; }
    HParticleCandSim* csim = dynamic_cast<HParticleCandSim*> (c);

    if(c->isTofHitUsed()==1||c->isTofClstUsed()) {
	Bool_t isGeant= kFALSE;
	if(csim){ // we are in simulation
	    // now find out if it was embedding real hit or pure sim
	    for(Int_t i=0;i<4;i++){
		Int_t tr = csim->getGeantTrackMeta(i);
		if(tr==-1) continue;
		if(tr > 0) isGeant = kTRUE;
	    }
	}

	Float_t dedx =c->getTofdEdx();
	if(dedx>25) dedx = 25;
	if(dedx<0) { cout<<"dedx out of bounce "<<dedx<<endl; return metaDxnorm;}
	fdxoffset-> SetParameters( parsDX[sector][module][cell] );
	fdxsigma -> SetParameters( parsSX[sector][module][cell] );
	if(csim){
            if(!isGeant) metaDxnorm -= fdxoffset -> Eval(c->getTofdEdx()) ;  // real data hit in embedding
	    metaDxnorm /= fdxsigma  -> Eval(c->getTofdEdx()) ;
	} else {
	    metaDxnorm -= fdxoffset -> Eval(c->getTofdEdx()) ;
	    metaDxnorm /= fdxsigma  -> Eval(c->getTofdEdx()) ;
	}
    }
    else if(c->isRpcClstUsed()==1) {
	Float_t sigma = RPCSIG1;
	if(c->getMetaModule(1)!=-1) sigma = RPCSIG2 ; // clustersize 2 :  sigma/sqrt(2)
	if(csim){
	    Bool_t isGeant= kFALSE;
	    for(Int_t i=0;i<4;i++){
		Int_t tr = csim->getGeantTrackMeta(i);
		if(tr==-1) continue;
		if(tr > 0) isGeant = kTRUE;
	    }
	    if(isGeant){
		if(c->getMetaModule(1)!=-1) sigma = RPCSIG2SIM;
                else                        sigma = RPCSIG1SIM;
	    }
	}

	metaDxnorm /= sigma;

    }
    return metaDxnorm;
}

Float_t HParticleTool::getSigmaDX(HParticleCand* c,TString beamtime)
{
    // This function does not change the candidate.
    // it returns sigma RK dx value to alow
    // for general treatment of cuts (RPC (clustersize 1 and 2, TOF and SIM)).
    // supported beamtime = apr12 (default)

    //---------------------------------------------------------
    beamtime.ToLower();
    if(beamtime_tof!=beamtime){

	if(beamtime == "apr12") {
	    memcpy ( &parsSX[0][0][0][0], &parsSX_apr12[0][0][0][0], sizeof(Double_t)*384*3 );
	    memcpy ( &parsDX[0][0][0][0], &parsDX_apr12[0][0][0][0], sizeof(Double_t)*384*5 );
	    beamtime_tof="apr12";  }
	else {
	    //::Error("getSigmaDX()","Unknow beamtime %s! will use \"apr12\"",beamtime.Data());   // ????
	    memcpy ( &parsSX[0][0][0][0], &parsSX_apr12[0][0][0][0], sizeof(Double_t)*384*3 );
	    memcpy ( &parsDX[0][0][0][0], &parsDX_apr12[0][0][0][0], sizeof(Double_t)*384*5 );
	    beamtime_tof="apr12";
	}
    }
    //---------------------------------------------------------

    if(!fdxoffset) fdxoffset = new TF1("fdxoffset","[0]+[1]*exp(x*[2])+[3]*exp(x*[4])",0,25);     // create only once
    if(!fdxsigma)  fdxsigma  = new TF1("fdxsigma" ,"[0]+[1]*x**[2]",0,25);                        // create only once


    if(!c) return kFALSE;
    if(c->getBeta()<0)   return kTRUE;   // no tof or rpc
    if(c->isEmcUsed())   return kTRUE;   // beta from EMC

    Float_t sigma = -1;
    Float_t metaDxnorm =  c->getRkMetaDx();
    if(metaDxnorm<-999) return sigma;  // no RK

    Int_t sector = c->getSector();
    Int_t module = c->getMetaModule(0);
    Int_t cell   = c->getMetaCell(0);

    if(cell<0||module<0) { cout<<"module or cell ==-1, should not happen"<<endl; return sigma; }
    HParticleCandSim* csim = dynamic_cast<HParticleCandSim*> (c);
    if(c->isTofHitUsed()==1||c->isTofClstUsed()) {

	Float_t dedx =c->getTofdEdx();
	if(dedx>25) dedx = 25;
	if(dedx<0) { cout<<"dedx out of bounce "<<dedx<<endl; return sigma;}
	fdxsigma -> SetParameters( parsSX[sector][module][cell] );
	sigma = fdxsigma  -> Eval(c->getTofdEdx()) ;
    }
    else if(c->isRpcClstUsed()==1) {
	sigma = RPCSIG1;
	if(c->getMetaModule(1)!=-1) sigma = RPCSIG2 ; // clustersize 2 :  ~ sigma/sqrt(2)
	if(csim){
	    Bool_t isGeant= kFALSE;
	    for(Int_t i=0;i<4;i++){
		Int_t tr = csim->getGeantTrackMeta(i);
		if(tr==-1) continue;
		if(tr > 0) isGeant = kTRUE;
	    }
	    if(isGeant){
		if(c->getMetaModule(1)!=-1) sigma = RPCSIG2SIM;
                else                        sigma = RPCSIG1SIM;
	    }
	}
    }
    return sigma;
}



Bool_t HParticleTool::normDX(HParticleCand* c,HTofWalkPar* walkpar)
{
    // This function changes
    // c->setMetaMatchQuality(metaDxnorm) (quality for dx only, dx unchanged);
    // RK dx values will be normalized by correct width to alow
    // for general treatment of cuts (RPC (clustersize 1 and 2, TOF and SIM)).
    if(!walkpar) return kFALSE;
    if(!c) return kFALSE;
    if(c->getBeta()<0)   return kTRUE;   // no tof or rpc
    if(c->isEmcUsed())   return kTRUE;   // beta from EMC

    Float_t metaDxnorm =  c->getRkMetaDx();
    if(metaDxnorm<-999) return kTRUE;  // no RK

    Int_t sector = c->getSector();
    Int_t module = c->getMetaModule(0);
    Int_t cell   = c->getMetaCell(0);

    if(cell<0||module<0) { cout<<"module or cell ==-1, should not happen"<<endl; return kFALSE; }

    HParticleCandSim* csim = dynamic_cast<HParticleCandSim*> (c);
    if(c->isTofHitUsed()==1||c->isTofClstUsed()==1) {
	Bool_t isGeant= kFALSE;
	if(csim){ // we are in simulation
	    // now find out if it was embedding real hit or pure sim
	    for(Int_t i=0;i<4;i++){
		Int_t tr = csim->getGeantTrackMeta(i);
		if(tr==-1) continue;
		if(tr > 0) isGeant = kTRUE;
	    }
	}
	Float_t dedx =c->getTofdEdx();
	if(dedx>25) dedx = 25;
	if(dedx<0) { cout<<"dedx out of bounce "<<dedx<<endl; return kTRUE;}
	Double_t dxoffset = walkpar->getDxOffset(sector, module, cell,dedx);
	Double_t dxsigma  = walkpar->getDxSigma(sector, module, cell,dedx);
	if(csim){
            if(!isGeant) metaDxnorm -= dxoffset ;  // real data hit in embedding
	    metaDxnorm /= dxsigma ;
	}
	else{
	    metaDxnorm -= dxoffset ;
	    metaDxnorm /= dxsigma ;
	}
    }
    else if(c->isRpcClstUsed()==1) {
	Float_t sigma = RPCSIG1;
	if(c->getMetaModule(1)!=-1) sigma = RPCSIG2 ; // clustersize 2 :  sigma/sqrt(2)
	if(csim){
	    Bool_t isGeant= kFALSE;
	    for(Int_t i=0;i<4;i++){
		Int_t tr = csim->getGeantTrackMeta(i);
		if(tr==-1) continue;
		if(tr > 0) isGeant = kTRUE;
	    }
	    if(isGeant){
		if(c->getMetaModule(1)!=-1) sigma = RPCSIG2SIM;
                else                        sigma = RPCSIG1SIM;
	    }
	}
	metaDxnorm /= sigma;
    }
    //c->setRkMetaDx(metaDxnorm);
    c->setMetaMatchQuality(fabs(metaDxnorm));
    return kTRUE;
}

Float_t HParticleTool::getNormDX(HParticleCand* c,HTofWalkPar* walkpar)
{
    // This function does not change the candidate.
    // it returns normalized RK dx value (including sign) to alow
    // for general treatment of cuts (RPC (clustersize 1 and 2, TOF and SIM)).


    if(!walkpar) return kFALSE;
    if(!c) return kFALSE;
    if(c->getBeta()<0)   return kTRUE;   // no tof or rpc
    if(c->isEmcUsed())   return kTRUE;   // beta from EMC

    Float_t metaDxnorm =  c->getRkMetaDx();
    if(metaDxnorm<-999) return metaDxnorm;  // no RK

    Int_t sector = c->getSector();
    Int_t module = c->getMetaModule(0);
    Int_t cell   = c->getMetaCell(0);

    if(cell<0||module<0) { cout<<"module or cell ==-1, should not happen"<<endl; return metaDxnorm; }
    HParticleCandSim* csim = dynamic_cast<HParticleCandSim*> (c);

    if(c->isTofHitUsed()==1||c->isTofClstUsed()) {
	Bool_t isGeant= kFALSE;
	if(csim){ // we are in simulation
	    // now find out if it was embedding real hit or pure sim
	    for(Int_t i=0;i<4;i++){
		Int_t tr = csim->getGeantTrackMeta(i);
		if(tr==-1) continue;
		if(tr > 0) isGeant = kTRUE;
	    }
	}

	Float_t dedx =c->getTofdEdx();
	if(dedx>25) dedx = 25;
	if(dedx<0) { cout<<"dedx out of bounce "<<dedx<<endl; return metaDxnorm;}
	Double_t dxoffset = walkpar->getDxOffset(sector, module, cell,dedx);
	Double_t dxsigma  = walkpar->getDxSigma(sector, module, cell,dedx);
	if(csim){
            if(!isGeant) metaDxnorm -= dxoffset ;  // real data hit in embedding
	    metaDxnorm /= dxsigma ;
	} else {
	    metaDxnorm -= dxoffset ;
	    metaDxnorm /= dxsigma ;
	}
    }
    else if(c->isRpcClstUsed()==1) {
	Float_t sigma = RPCSIG1;
	if(c->getMetaModule(1)!=-1) sigma = RPCSIG2 ; // clustersize 2 :  sigma/sqrt(2)
	if(csim){
	    Bool_t isGeant= kFALSE;
	    for(Int_t i=0;i<4;i++){
		Int_t tr = csim->getGeantTrackMeta(i);
		if(tr==-1) continue;
		if(tr > 0) isGeant = kTRUE;
	    }
	    if(isGeant){
		if(c->getMetaModule(1)!=-1) sigma = RPCSIG2SIM;
                else                        sigma = RPCSIG1SIM;
	    }
	}

	metaDxnorm /= sigma;

    }
    return metaDxnorm;
}

Float_t HParticleTool::getSigmaDX(HParticleCand* c,HTofWalkPar* walkpar)
{
    // This function does not change the candidate.
    // it returns sigma RK dx value to alow
    // for general treatment of cuts (RPC (clustersize 1 and 2, TOF and SIM)).

    if(!walkpar) return kFALSE;
    if(!c) return kFALSE;
    if(c->getBeta()<0)   return kTRUE;   // no tof or rpc
    if(c->isEmcUsed())   return kTRUE;   // beta from EMC
    Float_t sigma = -1;
    Float_t metaDxnorm =  c->getRkMetaDx();
    if(metaDxnorm<-999) return sigma;  // no RK

    Int_t sector = c->getSector();
    Int_t module = c->getMetaModule(0);
    Int_t cell   = c->getMetaCell(0);

    if(cell<0||module<0) { cout<<"module or cell ==-1, should not happen"<<endl; return sigma; }
    HParticleCandSim* csim = dynamic_cast<HParticleCandSim*> (c);
    if(c->isTofHitUsed()==1||c->isTofClstUsed()) {

	Float_t dedx =c->getTofdEdx();
	if(dedx>25) dedx = 25;
	if(dedx<0) { cout<<"dedx out of bounce "<<dedx<<endl; return sigma;}
	sigma  = walkpar->getDxSigma(sector, module, cell,dedx);
    }
    else if(c->isRpcClstUsed()==1) {
	sigma = RPCSIG1;
	if(c->getMetaModule(1)!=-1) sigma = RPCSIG2 ; // clustersize 2 :  ~ sigma/sqrt(2)
	if(csim){
	    Bool_t isGeant= kFALSE;
	    for(Int_t i=0;i<4;i++){
		Int_t tr = csim->getGeantTrackMeta(i);
		if(tr==-1) continue;
		if(tr > 0) isGeant = kTRUE;
	    }
	    if(isGeant){
		if(c->getMetaModule(1)!=-1) sigma = RPCSIG2SIM;
                else                        sigma = RPCSIG1SIM;
	    }
	}
    }
    return sigma;
}

Float_t HParticleTool::getCorrectedMomentum(HParticleCand* c)
{
    // returns the corrected momenta (not changing the candidate)
    // corrections: 1. systematic deviation for high momenta (obtained
    // from simulation, applied for SIM+REAL) 2. correction for field map
    // (obtained from apr12 data applied for REAL only).
    // REMARK: NO ENERGYLOSS CORRECTION HERE!

    if(!c) return 0;
    Float_t dmom  = c->getMomentumOrg();
    if(dmom < 0) return dmom;

    Float_t theta = c->getTheta();

    //--------------------------------------------------
    // do correction for systematics in mom at high mom
    // (SIM + REAL DATA)
    static TF1* ftheta_mom_sys = 0;
    static TF1* fpot_mom_sys   = 0;
    if(!ftheta_mom_sys){
	ftheta_mom_sys = new TF1("ftheta_mom_sys","[0]/([1]-exp([2]*x+[3]))",0,90);
	ftheta_mom_sys -> SetParameters(3.33755e-02,-5.96582e+00,-7.78283e-02,5.42673e+00);
    }
    if(!fpot_mom_sys) {
	fpot_mom_sys = new TF1("fpot_mom_sys","[1]*x**[0]+[2]",0,100);
        fpot_mom_sys -> SetParameters(-3.,-0.003,0.001);
    }
    Float_t par   = ftheta_mom_sys -> Eval(theta);
    fpot_mom_sys -> SetParameter(1,par);
    Float_t dev = fpot_mom_sys -> Eval(1./dmom*1000.);
    //if(fabs(dev)>0.05)  return dmom;    // restrict to maximum correction of 5%
    dmom *= (1.+dev);
    //--------------------------------------------------

    HParticleCandSim* csim = dynamic_cast<HParticleCandSim*> (c);
    if(csim){ // we are in simulation
	Int_t tr =-1;
        Bool_t found=kFALSE;   // for embedding we check who creates the track
	for(Int_t i=0;i<2;i++){
	    tr = csim->getGeantTrackInnerMdc(i);
	    if(tr>0) {found = kTRUE; break;}
	    tr = csim->getGeantTrackOuterMdc(i);
	    if(tr>0) {found = kTRUE; break;}
	}

	if(found) return dmom;  // track  is from GEANT
    }


    //--------------------------------------------------
    // field scaling  (REAL DATA ONLY)
    Float_t moms = 0.954297   + theta* 0.00584318 + theta*theta * -0.000218986 +
	theta*theta*theta * 3.29399e-06  +
	theta*theta*theta*theta * -1.69156e-08;
    dmom *= moms;
    //--------------------------------------------------

    return dmom;
}

Float_t HParticleTool::setCorrectedMomentum(HParticleCand* c)
{
    // returns the corrected momenta (candidate is changed)
    // corrections: 1. systematic deviation for high momenta (obtained
    // from simulation, applied for SIM+REAL) 2. correction for field map
    // (obtained from apr12 data applied for REAL only).
    // REMARK: NO ENERGYLOSS CORRECTION HERE!
    if(!c) return 0;
    Float_t dmom = HParticleTool::getCorrectedMomentum(c);
    c->setMomentum(dmom);
    return dmom;
}

Bool_t HParticleTool::isParticledEdx(Int_t PID, HParticleCand* pCand, Float_t& deloss, Float_t& dsigma)
{
    // return the delta eloss and sigma of particle assuming PID from
    // the calibrated Mdc dedx vs beta curve. The functions takes
    // into account the dependency of beta from energyloss (as function
    // of theta .charge =1 and charge =2 are treated correct.
    // The function makes use of HEnergyLossPar. You have to init
    // the container before. Params are taken from apr12.

    if(!pCand) return kFALSE;
    if(pCand->getBeta()    <  0 ) return kFALSE;
    if(pCand->getMdcdEdx() <= 0 ) return kFALSE;
    if(HPhysicsConstants::charge(PID) == 0 )                  return kFALSE;
    if((HPhysicsConstants::charge(PID)/pCand->getCharge())<0) return kFALSE;

    static TF1* fdedx_vs_beta = 0;
    if(!fdedx_vs_beta) fdedx_vs_beta  =  new TF1("f_dedx_vs_beta",HParticleTool::dedxfunc,0.15,1.5,7);



  
    Float_t theta    = pCand->getTheta();
    Float_t distMeta = pCand->getDistanceToMetaHit();
    Float_t beta     = pCand->getBeta();
    Float_t dedx     = pCand->getMdcdEdx();


    fdedx_vs_beta    -> SetParameter(0,PID);
    fdedx_vs_beta    -> SetParameter(1,1.);
    fdedx_vs_beta    -> SetParameter(2,0.);
    fdedx_vs_beta    -> SetParameter(3,1.);
    fdedx_vs_beta    -> SetParameter(4,1);
    fdedx_vs_beta    -> SetParameter(5,theta);
    fdedx_vs_beta    -> SetParameter(6,(0.0783057+theta*0.00145768)*2100./distMeta);


    Float_t meandEdx = fdedx_vs_beta       -> Eval(beta);
    fdedx_vs_beta            -> SetParameter(1,0.4);
    Float_t mindEdx  = fdedx_vs_beta       -> Eval(beta);
    fdedx_vs_beta            -> SetParameter(1,2.05);
    Float_t maxdEdx  = fdedx_vs_beta       -> Eval(beta);


    if(dedx>mindEdx && dedx<maxdEdx) {
	deloss = meandEdx - dedx;
	dsigma = (meandEdx - dedx) <0. ? (maxdEdx - meandEdx) * 0.333333 : (meandEdx-mindEdx) * 0.333333 ;
	return kTRUE;
     }
     else return kFALSE;

}

Bool_t HParticleTool::isParticleBeta(Int_t PID, HParticleCand* pCand, Float_t nsigma,
				     Float_t momMin, Float_t momMax,
				     Float_t& dtime, Float_t& dsigma,TString beamtime)
{

    // return the delta time and sigma of particle assuming PID from
    // the calibrated mom vs beta curve (return true if inside nsigma band).
    // The functions takes into account the dependency of beta from
    // energyloss (as function of theta .charge =1 and charge =2 are
    //treated correct. The function makes use of HEnergyLossPar. You
    // have to init the container before. Params are taken from apr12.

    if(!pCand) return kFALSE;
    if(pCand->getCharge()== 0) return kFALSE;
    if(pCand->getBeta()  <  0) return kFALSE;
    Float_t chrg=HPhysicsConstants::charge(PID);
    if(chrg== 0) return kFALSE;
    Int_t   sys = pCand->getSystemUsed();
    if(sys < 0) return kFALSE;

    if((chrg/pCand->getCharge())<0) return kFALSE;


    Float_t momQscale = 1.;
    if( chrg == 2 ) momQscale = 2.;

    if(pCand->getCharge()>0 && (PID == 9)   ) {
	return kFALSE;
    }
    if(pCand->getCharge()<0 && (PID == 8 || PID == 14) ) {
	return kFALSE;
    }
    Float_t theta = pCand->getTheta();
    Float_t mom   = pCand->getMomentum();
    Float_t   b   = pCand->getBeta();
    Float_t maxbeta=-1.0;
    Float_t minbeta=-1.0;


    if(mom<momMin||mom>momMax) return kFALSE;

    static TF1* f_beta_mom = 0;

    if(!f_beta_mom) f_beta_mom =  new TF1("f_beta_mom",  HParticleTool::betaandgammafunc,0,10000,7);
    Float_t        m = HPhysicsConstants::mass(PID);  // mom/be*sqrt(1.-be*be);
    Float_t distMeta = pCand->getDistanceToMetaHit();

    f_beta_mom->SetParameter(0,PID);
    f_beta_mom->SetParameter(1,1.);
    f_beta_mom->SetParameter(2,0.);
    f_beta_mom->SetParameter(3,1.00*momQscale);
    f_beta_mom->SetParameter(4,0);
    f_beta_mom->SetParameter(5,theta);
    f_beta_mom->SetParameter(6,(0.0783057+theta*0.00145768)*2100./distMeta); // Will be set to a constant overall! 0.1

    Float_t be = f_beta_mom->Eval(mom);

    Float_t sT    = 0.15;
    if(sys == 0){
        sT    = 1./sqrt(2.)*(0.056+be*be*be*0.353-be*be*be*be*0.287);
	if(pCand->getMetaModule(0)>=0 && pCand->getMetaCell(1)>=0 )
	    sT /= sqrt(2.);   // cluster SYS0
    }
    if(sys==1) {
	sT = HParticleTool::getSigmaDX(pCand,beamtime)/144.;
    }
 

    Float_t sMom  = 0.01;      // sigma Mom 1%
    sMom  = 1.25978e-02 * pow(1./mom*1000.,-9.41923e-01) + 1.45266e-02;      // sigma Mom 1%

    Float_t mT    = pCand->getDistanceToMetaHit()/b/299.792458; // time of flight used for beta uncertanty calculation


    dtime  = distMeta/b/(TMath::C()*1e-6) - distMeta/be/(TMath::C()*1e-6);
    Float_t sigbeta2 = sqrt(  pow( m*m/mom/mom/mom*pow(m*m/mom/mom+1.,-3/2.) * sMom*mom,2)
			    + pow(distMeta/mT/mT/(TMath::C()*1e-6)*sT,2) );
    dsigma = distMeta/be/be/(TMath::C()*1e-6)*sigbeta2;

    if(PID==2 || PID==3) {
	dsigma = sT;  // for electrons no mom dependence
    }


    if(PID!=2 && PID!=3) {
	maxbeta = be + nsigma*sigbeta2;
	minbeta = be - nsigma*sigbeta2;
    } else {
	if(sys==0) {
	    minbeta = 0.97;
	    maxbeta = 1.04;
	}
	if(sys==1) {
	    minbeta = 0.95;
	    maxbeta = 1.1;
	}
    }
    if(b>minbeta && b< maxbeta) return kTRUE;
    else return kFALSE;
}




Bool_t HParticleTool::correctPathLength(HParticleCand* pCand,
					HGeomVector& vertex,
					const HMdcPlane* planes,
					const HGeomVector& targetMidPoint,
                                        Double_t beamEnergy
				       )
{
    if(!pCand)             return kFALSE;
    if(pCand->getBeta()>0) return kFALSE;
    if(pCand->getChi2()<0) return kFALSE;

    if(vertex.X()==-1000. && vertex.Y()==-1000. && vertex.Z()==-1000. ) return kFALSE;

    const Double_t c = 299.792458 ;

    Double_t beamVelocity = HParticleTool::beta(14,HParticleTool::kinEToMom(14,beamEnergy));

    Double_t xVm = targetMidPoint.getX();
    Double_t yVm = targetMidPoint.getY();
    Double_t zVm = targetMidPoint.getZ();

    Float_t mom     = pCand->getMomentum();
    Float_t newPath = pCand->getDistanceToMetaHit();
    Float_t newBeta = pCand->getBeta();
    Float_t tof     = newPath/newBeta/c; //in (ns)
    Double_t xP, yP, zP;
    planes[pCand->getSector()].calcSegIntersec(pCand->getZ(), pCand->getR(), pCand->getTheta()*TMath::DegToRad(), pCand->getPhi()*TMath::DegToRad(), xP, yP, zP );
    Float_t rktl = sqrt((xP-xVm)*(xP-xVm)+(yP-yVm)*(yP-yVm)+(zP-zVm)*(zP-zVm) );
    // And the real was:
    Float_t rktl_real = sqrt(  (xP-vertex.getX())*(xP-vertex.getX())
			     + (yP-vertex.getY())*(yP-vertex.getY())
			     + (zP-vertex.getZ())*(zP-vertex.getZ())   );
    // And the new PL is....:
    newPath -=  rktl ;
    newPath +=  rktl_real;

    tof += (zVm-vertex.getZ()) /beamVelocity/c;
    newBeta  =  newPath/tof/c;
    Float_t newMass2 =  mom*mom*(1.-newBeta*newBeta)/newBeta/newBeta;

    HParticleCandSim* csim = dynamic_cast<HParticleCandSim*> (pCand);
    if(csim){ // we are in simulation
	Int_t tr =-1;
        Bool_t found=kFALSE;   // for embedding we check who creates the track
	for(Int_t i=0;i<2;i++){
	    tr = csim->getGeantTrackInnerMdc(i);
	    if(tr>0) {found = kTRUE; break;}
	    tr = csim->getGeantTrackOuterMdc(i);
	    if(tr>0) {found = kTRUE; break;}
	}

	if(!found) { // sim , but real track from embedding
	    //Tof correction (ToF of the incident Ion to the center of the target.
	    pCand->setMass2(newMass2);
	    pCand->setBeta(newBeta);
	} else {   // simulation : here we do not correct the beam ion
	    tof = pCand->getTof();
	    newBeta  =  newPath/tof/c;
	    newMass2 =  mom*mom*(1.-newBeta*newBeta)/newBeta/newBeta;
	    pCand->setMass2(newMass2);
	    pCand->setBeta(newBeta);
	}
    } else {  // for real data we correct tof+beta+mass

	//Tof correction (ToF of the incident Ion to the center of the target.
	pCand->setMass2(newMass2);
	pCand->setBeta(newBeta);
    }

    pCand->setDistanceToMetaHit(newPath);


    return kTRUE;
}

Bool_t HParticleTool::checkCropedLayer(HGeantKine* kine,HMdcLayer* mdcLayer, Bool_t* croped,Bool_t checkHit)
{
    // this function checks for particle kine (and his decayed charged daughter it it exist)
    // if the track is in the croped area of the layer. if the track has a hit
    // but not in the layers to check (0 or 5, depending on first or last module in segment)
    // it will be counted as croped if checkHit=kFALSE(default = kTRUE) otherwise not.
    // The function returns true if any of the mdcs  was croped.
    // if an pointer to Bool_t croped[4] is provided the crop results
    // per module will be returned to the array.

    if(!kine)     return kFALSE;
    if(!mdcLayer) return kFALSE;


    HGeantKine* d = HGeantKine::getChargedDecayDaughter(kine);

    //-------------------------------------------------------
    // check layer hits of particle (and + decay daughter when it exist)
    vector<HGeantMdc*> v;
    kine->getMdcHits(v);

    Int_t mLay [4] ={0,5,0,5};  // first /last lay of module i
    Float_t ax, ay, atof, ptof;
    Int_t s,m,l;
    Bool_t isCroped  [4] = {kFALSE,kFALSE,kFALSE,kFALSE};  // is croped
    Bool_t isChecked [4] = {kFALSE,kFALSE,kFALSE,kFALSE};  // is in module
    TVector2 p;
    for(UInt_t i=0;i<v.size();i++){    // first on incomming particle
	HGeantMdc* mdc = v[i];
	s = mdc->getSector();
	m = mdc->getModule();
	l = mdc->getLayer();
	isChecked[m] = kTRUE;
	if(l==mLay[m]){
	    mdc->getHit(ax,ay,atof,ptof);
	    p.Set(ax,ay);
	    if(mdcLayer->isCroped(p,s,m,l)) {
		isCroped[m] = kTRUE;
	    } else {
		isCroped[m] = kFALSE;
	    }
	}
    }
    if(d){  // on daugher if exists
	d->getMdcHits(v);
	for(UInt_t i=0;i<v.size();i++){
	    HGeantMdc* mdc = v[i];
	    s = mdc->getSector();
	    m = mdc->getModule();
	    l = mdc->getLayer();
	    isChecked[m] = kTRUE;
	    if(l==mLay[m]){
		mdc->getHit(ax,ay,atof,ptof);
		p.Set(ax,ay);
		if(mdcLayer->isCroped(p,s,m,l)) {
		    isCroped[m] = kTRUE;
		} else {
		    isCroped[m] = kFALSE;
		}
	    }
	}
    }
    //-------------------------------------------------------


    //-------------------------------------------------------
    // evaluate the track
    Bool_t isCropedAll=kFALSE;
    if(checkHit) {
	for(Int_t i=0;i<4;i++ ){ // of MDC
	    if(isChecked[i] && isCroped[i])  { isCropedAll = kTRUE; }
	}

	if(croped) { // per MDC
	    for(Int_t i=0;i<4;i++ ){
		if(isChecked[i]) {  croped[i] = isCroped[i]; }
	    }
	} else {
	    for(Int_t i=0;i<4;i++ ){ // of MDC
		if(!isChecked[i] || isCroped[i])  { isCropedAll = kTRUE; }
	    }

	    if(croped) { // per MDC
		for(Int_t i=0;i<4;i++ ){
		    if(!isChecked[i] || isCroped[i]) {  croped[i] = kTRUE; }
		    else                             {  croped[i] = kFALSE; }
		}
	    }
	}
	//-------------------------------------------------------
    }

    return isCropedAll;

}

//--------------------------------------------------
// kinematic helper functions


Double_t HParticleTool::beta(Int_t id,Double_t p)
{
    // Id : see HPysicsConstants
    // p [MeV/c]
    // return beta
    Double_t mass   = HPhysicsConstants::mass(id);
    if(mass <= 0) return -1;
    return  sqrt(1. / (((mass*mass)/(p*p)) + 1.));
}

Double_t HParticleTool::betaToP(Int_t id,Double_t beta)
{
    // Id : see HPysicsConstants
    // return p [MeV/c]
    Double_t mass   = HPhysicsConstants::mass(id);
    if(mass <= 0) return -1;

    Double_t p = sqrt(  mass*mass / (1./(beta*beta)-1));
    return  p;
}

Double_t HParticleTool::gamma(Int_t id,Double_t p)
{
    // Id : see HPysicsConstants
    // p [MeV/c]
    // return gamma
    Double_t mass   = HPhysicsConstants::mass(id);
    if(mass <= 0) return -1;
    Double_t beta2 = 1. / (((mass*mass)/(p*p)) + 1.);
    return  sqrt(1./ (1 - beta2));
}

Double_t HParticleTool::gammaToBeta(Int_t id,Double_t gamma)
{
    // Id : see HPysicsConstants
    // return beta
   Double_t mass   = HPhysicsConstants::mass(id);
    if(mass <= 0) return -1;
    if(gamma*gamma<1) return 0;
    Double_t beta = sqrt( (-1./(gamma*gamma))+1) ;
    return  beta;
}

Double_t HParticleTool::gammaToP(Int_t id,Double_t gamma)
{
    // Id : see HPysicsConstants
    // return p [MeV/c]
    Double_t mass   = HPhysicsConstants::mass(id);
    if(mass <= 0) return -1;
    if(gamma*gamma<1) return 0;
    Double_t beta2 =  (1./(gamma*gamma))-1 ;

    Double_t p = sqrt(  mass*mass / (1./(beta2)-1));
    return  p;
}

Double_t HParticleTool::betagamma(Int_t id,Double_t p)
{
    // Id : see HPysicsConstants
    // p [MeV/c]
    // return beta*gamma
    Double_t mass   = HPhysicsConstants::mass(id);
    if(mass <= 0) return -1;
    return p/mass;
}

Double_t HParticleTool::betagammaToP(Int_t id,Double_t betagamma)
{
    // Id : see HPysicsConstants
    // return  p [MeV/c]
    Double_t mass   = HPhysicsConstants::mass(id);
    if(mass <= 0) return -1;
    Double_t p = betagamma*mass;

    return  p;
}

Double_t  HParticleTool::kinEToMom(Int_t id, Double_t Ekin){
    // Id : see HPysicsConstants input kinetic energy
    // return  p [MeV/c]
    Double_t m = HPhysicsConstants::mass(id);
    return sqrt( pow(Ekin+m,2) - pow(m,2));
}

Double_t  HParticleTool::momToKinE(Int_t id, Double_t p){
    // Id : see HPysicsConstants
    // return  kinetic energy [MeV]
    Double_t m = HPhysicsConstants::mass(id);
    return sqrt( pow(p,2)+pow(m,2) ) - m;
}


Double_t HParticleTool::dedxfunc(Double_t *x, Double_t *par)
{
    // function of MdcDedx used in TF1
    // par[0] Id : see HPysicsConstants
    // par[1] scale return val
    // par[2] shift x (after scaling)
    // par[3] scale x
    // par[4] option:   0:p,1:beta,2:gamma,3:betagamma
    // par[5] theta [deg]: do dedx corr for fixed theta .if <=0 don't do anything
    // par[6]; frac of dedx corr
    // return MDC dEdx

    Double_t p     = fabs(x  [0]);
    Int_t id       = par[0];
    Double_t scale = par[1];
    Double_t offset= par[2];
    Double_t scaleX= par[3];
    Int_t     opt  = par[4];
    Double_t theta = par[5];  // theta in deg : if <=0 don't do anything
    Double_t frac  = par[6];  // frac of dedx corr

    p*=scaleX;
    p+=offset;

    if       (opt==1){ // beta
	Double_t mass = HPhysicsConstants::mass(id);
	Double_t beta=p;
        if(beta>=1) beta=0.999999;
	p = sqrt( mass*mass / (1./(beta*beta)-1));
    } else if(opt==2){ // gamma
	Double_t mass = HPhysicsConstants::mass(id);
	Double_t gamma=p;
	if(gamma*gamma<1) return 0;
	Double_t beta2 =  (-1./(gamma*gamma))+1 ;
	p = sqrt( mass*mass / (1./(beta2)-1));
    } else if(opt==3){ // betagamma
	Double_t mass = HPhysicsConstants::mass(id);
	Double_t betagamma=p;
	p = betagamma*mass;
    }

    HEnergyLossCorrPar* corrpar = HEnergyLossCorrPar::getObject();
    Double_t dp=0;
    if(theta>0 && corrpar) {
	dp = corrpar->getDeltaMom(id,p,theta);
    }
    p+=frac*dp;
    Double_t  loss = HMdcDeDx2::energyLoss(id,p,0.6);

    return scale*loss;
}

Double_t HParticleTool::betaandgammafunc(Double_t *x, Double_t *par)
{
    // function of beta / gamma  used in TF1
    // par[0] Id : see HPysicsConstants
    // par[1] scale return val
    // par[2] shift x (after scaling)
    // par[3] scale x
    // par[4] option:   0:beta,1:gamma,2:betagamma
    // par[5] theta [deg]: do dedx corr for fixed theta .if <=0 don't do anything
    // par[6]; frac of dedx corr
    // return beta or gamma or betagamma

    Double_t p     = fabs(x  [0]);
    Int_t id       = par[0];
    Double_t scale = par[1];
    Double_t offset= par[2];
    Double_t scaleX= par[3];
    Int_t      opt = par[4];
    Double_t theta = par[5];  // theta in deg : if <=0 don't do anything
    Double_t frac  = par[6];  // frac of dedx corr




    Double_t mass = HPhysicsConstants::mass(id);

    p*=scaleX;
    HEnergyLossCorrPar* corrpar = HEnergyLossCorrPar::getObject();
    Double_t dp=0;
    if(theta>0 && corrpar) {
	dp = corrpar->getDeltaMom(id,p,theta);
    }
    p+=frac*dp;
    p+=offset;

    if     (opt==0){ // beta
	return scale*sqrt(1. / (((mass*mass)/(p*p)) + 1.));
    }
    else if(opt==1){ // gamma
	return scale*gamma(id,p);
    }
    else if(opt==2){ // betagamma
	return scale*betagamma(id,p);
    }
    return 0;
}

TCutG*  HParticleTool::makeCut(TF1* lower,TF1* upper,TString name,
			       Double_t xlow,Double_t xup,Double_t ymin,Double_t ymax,Int_t npoint,
			       Int_t linecolor,Int_t linestyle)
{
    // creates TCutG from upper and lower TF1 in range xlow to xup
    // the x interval is splitted into npoints. User has to delete
    // the TCutG objects


    if(!lower || !upper) return 0;
    TCutG* cut = new TCutG();
    cut->SetName(name.Data());
    if(npoint<2) npoint=50;


    Double_t x, y;
    Int_t ct = 0 ;
    for(Int_t i=0;i<npoint;i++){
	x = xlow + i* ((xup-xlow)/(npoint-1));
	y = lower->Eval(x);
        if(y>ymax || y<ymin)continue;
	cut->SetPoint(i,x,y);
        ct++;
    }
    for(Int_t i=0;i<npoint;i++){
	x = xup - i* ((xup-xlow)/(npoint-1));
	y = upper->Eval(x);
        if(y>ymax || y<ymin)continue;
	cut->SetPoint(i+npoint,x,y);
        ct++;
    }
    cut->GetPoint(0,x,y);
    cut->SetPoint(ct,x,y);

    cut->SetLineStyle(linestyle);
    cut->SetLineColor(linecolor);

    return cut;
}

Double_t HParticleTool::ptyfunc (Double_t* x, Double_t* par)
{
    // return pt as function of y
    // for fix theta or momenta of a particle

    Int_t id       = par[0];
    Double_t M     =HPhysicsConstants::mass(id);
    if(M<=0) return 100000;
    Double_t midRap= par[2];
    Int_t opt      = par[3];
    Double_t y     = x[0]-midRap;
    if(opt==0){// angles

	Double_t ThetaLab = par[1]*TMath::DegToRad();
	Double_t Part_A = 0.0;
	Double_t pt = 0.0;

	Part_A = pow(1/(tan(ThetaLab)*sinh(y)),2.0)-1.0;

	if(Part_A >= 0.0) {
	    pt = M*pow(Part_A,-0.5);
	}
	else return 1000000.0;

	if(pt > 0.0 && pt < 10000.0) {
	    return pt;
	} else	{
	    return 1000000.0;
	}

	return pt;


    } else if(opt==1){// momenta

	Double_t PLab     = par[1];
	Double_t pt = sqrt((pow(PLab,2)-pow(M*sinh(y),2))/(pow(sinh(y),2)+1.0));

	if(pt > 0.0 && pt < 10000.0){
	    return pt;
	} else {
	    return -1000000.0;
	}

	return pt;


    } else return 100000;

}

Double_t HParticleTool::fcross(Double_t* xin, Double_t* par){

     if(!gf1 || !gf2) return -1000;
     Double_t x = xin[0];
     return gf1->Eval(x) - gf2->Eval(x);
}


Bool_t HParticleTool::getIntersectionPoint(TF1* f1,TF1* f2,Double_t &xout,Double_t& yout,Double_t xlow,Double_t xup,Int_t n)
{
    // calculates the intersection point of f1 and f2 in interval xlow,xup
    // to vars xout, yout
    // return kFALSE if no intersection was found (xout=yout=-10000)
    // higher number of points n give better precision at the higher
    // calculation time

    if(!f1 || !f2) return kFALSE;

    xout=-10000;
    yout=-10000;

    if(gf1){ delete gf1;}
    gf1 = new TF1();
    gf1 ->SetName("cross_f1");
    f1->Copy(*gf1);

    if(gf2){ delete gf2 ;}
    gf2 = new TF1();
    gf2 ->SetName("cross_f2");
    f2->Copy(*gf2);


    if(!gfsum) {
	gfsum = new TF1("cross_f12",fcross);
    }
    gfsum->SetNpx(n);

    Double_t x = gfsum->GetX(0,xlow,xup); // Double_t epsilon = 1.E-10, Int_t maxiter = 100, Bool_t logx = false)

    if(x!=xup){
	xout=x;
	yout=gf1->Eval(x);

	return kTRUE;
    }
    ::Warning("HParticleTool::getIntersectionPoint()","No intersection of %s and %s in interval [%f,%f] found!",f1->GetName(),f2->GetName(),xlow,xup);

    return kFALSE;
}




TF1*   HParticleTool::energyLossTF1(Int_t id,
				    TString name,TString opt ,
				    Double_t scaleY,Double_t xoffset,Double_t scaleX,Double_t theta,Double_t frac,
				    Double_t xmin,Double_t xmax,
				    Int_t linecolor,Int_t linestyle,Int_t npoints)
{
    // MdcDedx TF1
    // name :  name of TF1 (default dedx, the id of the paricle will be appended)
    // opt  :  p beta gamma betagamma
    //
    // par[0] Id : see HPysicsConstants
    // par[1] scale return val
    // par[2] shift x (after scaling)
    // par[3] scale x
    // par[4] option:   0:p,1:beta,2:gamma,3:betagamma
    // par[5] theta [deg]: do dedx corr for fixed theta .if <=0 don't do anything
    // par[6] fraction of dedx corr
    // return TF1
    // The user has to delete the TF1 object

    if(HPhysicsConstants::mass(id)<=0) return 0;
    if(name.CompareTo("")==0) name="dedx";
    TF1* f = new TF1(Form("%s_%s",name.Data(),HPhysicsConstants::pid(id)),dedxfunc,xmin,xmax,7);
    f->SetNpx(npoints);
    f->SetParameter(0,id);
    f->SetParameter(1,scaleY);
    f->SetParameter(2,xoffset);
    f->SetParameter(3,scaleX);
    if     (opt.CompareTo("p")==0)         f->SetParameter(4,0);
    else if(opt.CompareTo("beta")==0)      f->SetParameter(4,1);
    else if(opt.CompareTo("gamma")==0)     f->SetParameter(4,2);
    else if(opt.CompareTo("betagamma")==0) f->SetParameter(4,3);
    else { f->SetParameter(4,0);}
    f->SetParameter(5,theta);
    f->SetParameter(6,frac);
    f->SetLineColor(linecolor);
    f->SetLineStyle(linestyle);
    return f;
}

TF1*   HParticleTool::betaAndGammaTF1(Int_t id,
				      TString name,TString opt,
				      Double_t scaleY,Double_t xoffset,Double_t scaleX,Double_t theta,Double_t frac,
				      Double_t xmin,Double_t xmax,
				      Int_t linecolor,Int_t linestyle,Int_t npoints)
{
    // beta  / gamma  TF1
    // name :  name of TF1 (default equals opt, the id of the paricle will be appended)
    // opt  :  beta gamma betagamma
    //
    // par[0] Id : see HPysicsConstants
    // par[1] scale return val
    // par[2] shift x (after scaling)
    // par[3] scale x
    // par[4] option:   0:p,1:beta,2:gamma,3:betagamma
    // par[5] theta [deg]: do dedx corr for fixed theta .if <=0 don't do anything
    // par[6] fraction of dedx corr
    // return TF1
    // The user has to delete the TF1 object

    if(HPhysicsConstants::mass(id)<=0) return 0;
    if(name.CompareTo("")==0) name=opt;

    TF1* f = new TF1(Form("%s_%s",name.Data(),HPhysicsConstants::pid(id)),betaandgammafunc,xmin,xmax,7);
    f->SetNpx(npoints);
    f->SetParameter(0,id);
    f->SetParameter(1,scaleY);
    f->SetParameter(2,xoffset);
    f->SetParameter(3,scaleX);
    if     (opt.CompareTo("beta")==0)      f->SetParameter(4,0);
    else if(opt.CompareTo("gamma")==0)     f->SetParameter(4,1);
    else if(opt.CompareTo("betagamma")==0) f->SetParameter(4,2);
    else { f->SetParameter(4,0);}
    f->SetParameter(5,theta);
    f->SetParameter(6,frac);
    f->SetLineColor(linecolor);
    f->SetLineStyle(linestyle);
    return f;
}


TF1* HParticleTool::ptyTF1(Int_t id,Double_t val,
			   TString name,
			   TString opt,
			   Double_t xmin,Double_t xmax,Double_t midRap,
			   Int_t linecolor,Int_t linestyle)
{
    // ptY TF1
    // name :  name of TF1 (default opt, the d of the paricle will be appended)
    // opt  :  theta momentum
    //
    // par[0] Id : see HPysicsConstants
    // par[1] val
    // par[2] midRap (default 0)
    // par[3] option:   0:theta,1:momentum
    // return TF1
    // The user has to delete the TF1 object
    opt.ToLower();

    if(HPhysicsConstants::mass(id)<=0) return 0;
    if(name.CompareTo("")==0) name=opt;

    TF1* f = new TF1(Form("prty_%s_%s_%5.2f",name.Data(),HPhysicsConstants::pid(id),val),ptyfunc,xmin,xmax,4);
    f->SetTitle(Form("%5.1f",val));
    f->SetNpx(500);
    f->SetParameter(0,id);
    f->SetParameter(1,val);
    f->SetParameter(2,midRap);
    if     (opt.CompareTo("theta")==0)     f->SetParameter(3,0);
    else if(opt.CompareTo("momentum")==0)  f->SetParameter(3,1);
    else { f->SetParameter(3,0);}
    f->SetLineColor(linecolor);
    f->SetLineStyle(linestyle);
    return f;

}

vector<TF1*> HParticleTool::ptyGrid(Int_t id,vector<Double_t>& vtheta,vector<Double_t>& vmom,
				    TString name,
				    TString opt,
				    Double_t xmin,Double_t xmax,Double_t midRap,
				    Int_t linecolorTheta,Int_t linestyleTheta,
				    Int_t linecolorMom,Int_t linestyleMom)
{
    // draws a pt -y grid for a give particle at given list of theta and momenta
    // opt : draw drawcopy
    // range xmin to xmax
    // The created TF1 objects are return in a vector. The use has to delet them.


    opt.ToLower();
    vector<TF1*> grid;
    for(UInt_t i=0;i<vtheta.size();i++){
	TF1* f = ptyTF1(id,vtheta[i],name,"theta",xmin,xmax,midRap,  linecolorTheta, linestyleTheta);
	grid.push_back(f);
	if(opt.CompareTo("draw")==0)    f->Draw("Lsame");
	if(opt.CompareTo("drawcopy")==0)f->DrawCopy("Lsame");
    }
    for(UInt_t i=1;i<vmom.size();i++){
	TF1* f = ptyTF1(id,vmom[i],name,"momentum",xmin,xmax,midRap,  linecolorMom, linestyleMom);
	grid.push_back(f);
	if(opt.CompareTo("draw")==0)    f->Draw("Lsame");
	if(opt.CompareTo("drawcopy")==0)f->DrawCopy("Lsame");
    }
    return grid;
}

vector<TF1*> HParticleTool::ptyGrid(Int_t id,TString setup,
				    TString name,
				    TString opt,
				    Double_t xmin,Double_t xmax,Double_t midRap,
				    Int_t linecolorTheta,Int_t linestyleTheta,
				    Int_t linecolorMom,Int_t linestyleMom,
				    TString labels)
{
    // Draw pt - y grid for particle id: lines for constant #theta and constant momentum
    //------------------------------------
    // setup:
    // theta     :  format string "@theta:8,0,10"              : draw 8 lines starting from 0 deg with stepsize 10 deg
    //                            "@theta:-1,10,20,45,60,75"   : draw lines at list values (first entry has to be -1)
    // momentum  :  format string "@momentum:8,100,200"        : draw 8 lines starting from 100 MeV/c with stepsize 200 MeV/c
    //                            "@momentum:-1,500,1000,1500" : draw lines at list values (first entry has to be -1)
    //------------------------------------
    // name      :  optional string for the name construction of TF1
    // opt       :  ""            no draw
    //              "draw"        draw in current canvas
    //              "drawcopy"    draw a copy in current canvas
    // xmin,xmax : rapidity range (default 0 - 2)
    // midRap    : midRapidity    (default 0)
    // linecolorTheta,lienstyleTheta : line attributes of theta    (default black,dashed)
    // linecolorMom  ,lienstyleMom   : line attributes of momentum (default black,dashed)
    //
    //------------------------------------
    // labels="@theta:draw=yes,format=%5.1f#circ,textsize=0.021,angle=0,align=-1@momentum:draw=yes,format=%5.1f MeV/c,textsize=0.023,angle=0,align=-1,yoff=0,02,xoff=0.01
    //      draw : yes (default)
    //     format: print format
    //   textsize: 0.021
    //     angle : 0
    //     align : -1(default: build in) sum of TTextAtributes:  kHAlignLeft   = 10, kHAlignCenter = 20, kHAlignRight = 30 ,kVAlignBottom = 1,  kVAlignCenter = 2,  kVAlignTop   = 3
    //      yoff : 0.02   offset from yaxis
    //      xoff : 0.01   offset from xaxis

    vector<TF1*> grid;
    setup.ToLower();
    opt.ToLower();

    TLatex latex;

    Int_t    nTh=0;
    Double_t strtTh=0;
    Double_t stepTh=0;
    Int_t    nMom=0;
    Double_t strtMom=0;
    Double_t stepMom=0;

    Bool_t   lab_theta      = kTRUE;
    TString  format_theta   = "%5.1f#circ";
    Double_t textsize_theta = 0.023;
    // Double_t angle_theta    = 0;
    Int_t    align_theta    =-1;
    Double_t yoffset_theta  =-0.02;
    Double_t xoffset_theta  =-0.01;




    Bool_t   lab_momentum     = kTRUE;
    TString  format_momentum  = "%5.1f MeV/c";
    Double_t textsize_momentum= 0.021;
    Double_t angle_momentum   = 0;
    Int_t    align_momentum   =-1;
    Double_t yoffset_momentum =0.01;
    Double_t xoffset_momentum =0.01;



    vector<Double_t> vtheta;
    vector<Double_t> vmom;


    Int_t nst = 500; // nsteps bounddary search

    TObjArray* ar = labels.Tokenize("@");
    if(ar)
    {

	//-----------------------------------------
	// extract labels first
	for(Int_t j=0;j<ar->GetEntries();j++){
	    TString token=((TObjString*)(ar->At(j)))->GetString();
	    if(token.Contains("theta:")){
		token.ReplaceAll("theta:","");
		TObjArray* ar1 = token.Tokenize(",");
		for(Int_t k=0;k<ar1->GetEntries();k++){
		    TString token1=((TObjString*)(ar1->At(k)))->GetString();
		    if(token1.Contains("draw=")){
			token1.ReplaceAll("draw=","");
			if(token1.CompareTo("yes")==0) lab_theta=kTRUE;
			else                           lab_theta=kFALSE;
		    } else if(token1.Contains("format=")){
			token1.ReplaceAll("format=","");
			format_theta=token1;
		    } else if(token1.Contains("textsize=")){
			token1.ReplaceAll("textsize=","");
			textsize_theta=token1.Atof();
		    } else if(token1.Contains("angle=")){
			token1.ReplaceAll("angle=","");
			//angle_theta=token1.Atof();
		    } else if(token1.Contains("align=")){
			token1.ReplaceAll("align=","");
			align_theta=token1.Atoi();
		    } else if(token1.Contains("yoff=")){
			token1.ReplaceAll("yoff=","");
			yoffset_theta=token1.Atof();
		    } else if(token1.Contains("xoff=")){
			token1.ReplaceAll("xoff=","");
			xoffset_theta=token1.Atof();
		    } else {
			cout<<"ptyGrid() : unknown token for theta label "<<token1<<endl;
		    }
		}

	    } // end thetalab
	    if(token.Contains("momentum:")){
		token.ReplaceAll("momentum:","");
		TObjArray* ar1 = token.Tokenize(",");
		for(Int_t k=0;k<ar1->GetEntries();k++){
		    TString token1=((TObjString*)(ar1->At(k)))->GetString();
		    if(token1.Contains("draw=")){
			token1.ReplaceAll("draw=","");
			if(token1.CompareTo("yes")==0) lab_momentum=kTRUE;
			else                           lab_momentum=kFALSE;
		    } else if(token1.Contains("format=")){
			token1.ReplaceAll("format=","");
			format_momentum=token1;
		    } else if(token1.Contains("textsize=")){
			token1.ReplaceAll("textsize=","");
			textsize_momentum=token1.Atof();
		    } else if(token1.Contains("angle=")){
			token1.ReplaceAll("angle=","");
			angle_momentum=token1.Atof();
		    } else if(token1.Contains("align=")){
			token1.ReplaceAll("align=","");
			align_momentum=token1.Atoi();
		    } else if(token1.Contains("yoff=")){
			token1.ReplaceAll("yoff=","");
			yoffset_momentum=token1.Atof();
		    } else if(token1.Contains("xoff=")){
			token1.ReplaceAll("xoff=","");
			xoffset_momentum=token1.Atof();
		    } else {
			cout<<"ptyGrid() : unknown token for momentum label "<<token1<<endl;
		    }
		}

	    } // end mometumlab
	}
	//-----------------------------------------
	if(ar) {
	    ar->Delete();
	    delete ar;
	    ar=NULL;
	}
    }


    ar = setup.Tokenize("@");
    if(ar)
    {



	for(Int_t j=0;j<ar->GetEntries();j++){
	    TString token=((TObjString*)(ar->At(j)))->GetString();
	    //-----------------------------------------
	    if(token.Contains("theta:")){
		token.ReplaceAll("theta:","");

		Bool_t doForLoop = kTRUE;

		TObjArray* ar1 = token.Tokenize(",");
		for(Int_t k=0;k<ar1->GetEntries();k++){
		    TString token1=((TObjString*)(ar1->At(k)))->GetString();
		    Int_t n = -1;
		    if(k==0){
			n = token1.Atoi();  // positve: forloop, -1: list of values
			if(n==-1){
			    doForLoop = kFALSE;
			    continue;
			}
		    }
		    if(doForLoop)
		    {
			if(k==0) nTh   =token1.Atoi();
			if(k==1) strtTh=token1.Atof();
			if(k==2) stepTh=token1.Atof();
		    } else {
			vtheta.push_back(token1.Atof());
		    }

		} // end token loop

		if(doForLoop){
		    for(Int_t i=0;i<nTh;i++){
			vtheta.push_back(strtTh+i*stepTh);
		    }
		}
		sort(vtheta.begin(),vtheta.end());
		UInt_t n = vtheta.size();


		if(doForLoop)cout<<"ptyGrid() : nTh  "<<setw(3)<<nTh<< " start "<<setw(5)<<strtTh            << " step "<<setw(3)<<stepTh <<endl;
		else         cout<<"ptyGrid() : nTh  "<<setw(3)<<n  << " start "<<setw(5)<<(n>0?vtheta[0]:-1)<< " end "<<setw(3)<<(n>0?vtheta[n-1]:-1)<<endl;

		if(ar1){
		    ar1->Delete();
		    delete ar1;
		}

	    } // end theta
	    //-----------------------------------------
	    else if(token.Contains("momentum:")){
		token.ReplaceAll("momentum:","");

		Bool_t doForLoop = kTRUE;

		TObjArray* ar1 = token.Tokenize(",");
		for(Int_t k=0;k<ar1->GetEntries();k++){
		    TString token1=((TObjString*)(ar1->At(k)))->GetString();
		    Int_t n = -1;
		    if(k==0){
			n = token1.Atoi();  // positve: forloop, -1: list of values
			if(n==-1){
			    doForLoop = kFALSE;
			    continue;
			}
		    }

		    if(doForLoop){
			if(k==0) nMom   =token1.Atoi();
			if(k==1) strtMom=token1.Atof();
			if(k==2) stepMom=token1.Atof();
		    } else {
			vmom.push_back(token1.Atof());
		    }


		}

		if(doForLoop){
		    for(Int_t i=0;i<nMom;i++){
			vmom.push_back(strtMom+i*stepMom);
		    }
		}

		sort(vmom.begin(),vmom.end());
		UInt_t n = vmom.size();

		if(doForLoop)cout<<"ptyGrid() : nMom "<<setw(3)<<nMom<< " start "<<setw(5)<<strtMom         << " step "<<setw(3)<<stepMom <<endl;
		else         cout<<"ptyGrid() : nMom "<<setw(3)<<n   << " start "<<setw(5)<<(n>0?vmom[0]:-1)<< " end "<<setw(3)<<(n>0?vmom[n-1]:-1)<<endl;

		if(ar1){
		    ar1->Delete();
		    delete ar1;
		}


	    } // end theta
	    else { cout<<"ptyGrid() : unknow token "<<token<<endl;}
	}
	ar->Delete();
	delete ar;


	if((opt.CompareTo("draw")==0||opt.CompareTo("drawcopy")==0) && lab_theta) {
	    gPad->Modified();
	    gPad->Update();
	    gSystem->ProcessEvents();

	}

	//-----------------------------------------
	// Now draw
	for(UInt_t i=0;i<vtheta.size();i++){
	    TF1* f = ptyTF1(id,vtheta[i],name,"theta",xmin,xmax,midRap,  linecolorTheta, linestyleTheta);
	    grid.push_back(f);
	    if(opt.CompareTo("draw")==0)    f->Draw("Lsame");
	    if(opt.CompareTo("drawcopy")==0)f->DrawCopy("Lsame");
	    if((opt.CompareTo("draw")==0||opt.CompareTo("drawcopy")==0) && lab_theta) {
		Double_t x1 = gPad->GetUxmin();
		Double_t x2 = gPad->GetUxmax();
		Double_t y1 = gPad->GetUymin();
		Double_t y2 = gPad->GetUymax();

		Double_t xmax = -1000;
		Double_t ymax = -1000;
		Bool_t Yout   = kFALSE;

		Double_t yoff = (y2-y1)*yoffset_theta;
		Double_t xoff = (x2-x1)*xoffset_theta;

		for(Int_t j=0;j<nst;j++){

		    Double_t x= x1+j*((x2-x1)/nst);
		    if(x<midRap)continue;
		    Double_t val=f->Eval(x);
		    if(val<y2&&val>y1){ xmax=x; ymax=val;}
		    if(x>midRap&&val>y2) Yout=kTRUE;
		}
		if(Yout)  ymax = y2  +yoff;
		else      xmax = xmax+xoff;

		if(align_theta<0){
		    if(!Yout) latex.SetTextAlign(30+1);// right 30, left 10 bottom 1 top 3 hcent 20 vcent 2
		    else      latex.SetTextAlign(10+3);// right 30, left 10 bottom 1 top 3 hcent 20 vcent 2
		} else {
		    latex.SetTextAlign(align_theta);
		}
		latex.SetTextSize(textsize_theta);
		TString var = f->GetTitle();
		Double_t mom = var.Atof();
		latex.DrawLatex(xmax,ymax,Form(format_theta,mom));
	    }
	}
	//-----------------------------------------
	for(UInt_t i=0;i<vmom.size();i++){
	    TF1* f = ptyTF1(id,vmom[i],name,"momentum",xmin,xmax,midRap,  linecolorTheta, linestyleTheta);
	    grid.push_back(f);
	    if(opt.CompareTo("draw")==0)    f->Draw("Lsame");
	    if(opt.CompareTo("drawcopy")==0)f->DrawCopy("Lsame");
	    if((opt.CompareTo("draw")==0||opt.CompareTo("drawcopy")==0) && lab_momentum) {
		Double_t x1 = gPad->GetUxmin();
		Double_t x2 = gPad->GetUxmax();
		Double_t y1 = gPad->GetUymin();
		Double_t y2 = gPad->GetUymax();

		Double_t xmax = -1000;
		Double_t ymax = -1000;
		Bool_t Yout   = kTRUE;

		Double_t  yoff = (y2-y1)*yoffset_momentum;
		Double_t  xoff = (x2-x1)*xoffset_momentum;

		if(midRap!=0) // draw left side vertical
		{
		    for(Int_t j=0;j<nst;j++){

			Double_t x= 0+j*((x2-midRap)/nst);
			Double_t val=f->Eval(x);
			if(val<y2&&val>y1&&xmax==-1000){ xmax=x; ymax=val; break;}
			if(val<y2) Yout=kTRUE;
		    }
		    if(Yout)  { ymax = y1+yoff;}

		    if(xmax==x1)continue;

		} else {
		    xmax = xoff;
		    ymax = f->Eval(xmax);
		    if(ymax>0.95*y2) continue;
		}


		latex.SetTextSize(textsize_momentum);

		if(align_momentum<0){
		    if(midRap==0){
			latex.SetTextAlign(10+1);// // right 30, left 10 bottom 1 top 3  hcent 20 vcent 2
			latex.SetTextAngle(angle_momentum);
		    } else {
			latex.SetTextAlign(20+1);// // right 30, left 10 bottom 1 top 3  hcent 20 vcent 2
			//latex.SetTextAngle(90+angle_momentum);
			latex.SetTextAngle(angle_momentum);
		    }
		} else {
		    if(midRap==0){
			latex.SetTextAlign(align_momentum);// // right 30, left 10 bottom 1 top 3  hcent 20 vcent 2
			latex.SetTextAngle(angle_momentum);
		    } else {
			latex.SetTextAlign(align_momentum);// // right 30, left 10 bottom 1 top 3  hcent 20 vcent 2
			//latex.SetTextAngle(90+angle_momentum);
			latex.SetTextAngle(angle_momentum);
		    }
		}
		TString var  = f->GetTitle();
		Double_t mom = var.Atof();
		latex.DrawText(xmax,ymax,Form(format_momentum,mom));
	    }
	}
	//-----------------------------------------


    }
    return grid;
}

void HParticleTool::drawPtyGrid(vector<TF1*>& grid,TString opt)
{
    // draws an already existing pt-y grid (see HParticleTool::ptyGrif())
    // opt : draw drawcopy
    opt.ToLower();
    for(UInt_t i=0;i<grid.size();i++){
	if(opt.CompareTo("draw")==0)    grid[i]->Draw("Lsame");
	if(opt.CompareTo("drawcopy")==0)grid[i]->DrawCopy("Lsame");
    }
}

//--------------------------------------------------















//-------------------------------------------------------------------------------
//  Functions from GeomFunct.h (A.Schmah)
void HParticleTool::calcSegVector(Double_t z, Double_t rho, Double_t phi, Double_t theta,
				  HGeomVector &base, HGeomVector &dir)
{
    base.setXYZ(rho*cos(phi+TMath::PiOver2()), rho*sin(phi+TMath::PiOver2()), z);
    dir.setXYZ(sin(theta)*cos(phi), sin(theta)*sin(phi), cos(theta));
}


Double_t HParticleTool::calcRMS(const Double_t* valArr, Double_t Mean,Int_t valNum)
{
    // Calculates RMS of valNum numbers in valArr using the Mean of the values
    Double_t RMS = 0.0;
    Double_t sum = 0.0;

    for(Int_t i = 0; i < valNum; i++)
    {
        sum += pow(valArr[i]-Mean,2.0);
    }
    RMS = sqrt(sum/valNum);
    return RMS;
}

Double_t HParticleTool::calcDeterminant(HGeomVector& v1, HGeomVector& v2, HGeomVector& v3)
{
  // calculating the Determinant of a 3 x 3 Matrix
  // with the column vectors [v1, v2, v3]
  // using the RULE of SARRUS
  //
  // | v1(0)   v2(0)   v3(0) |      | v1(0) v2(0) v3(0)|v1(0) v2(0)  .
  // |                       |      |  \\     \\     X   |  /     /    .
  // |                       |      |   \\     \\   / \\  | /     /     .
  // |                       |      |    \\     \\ /   \\ |/     /      .
  // |                       |      |     \\     X     \\/     /       .
  // |                       |      |      \\   / \\    /\\    /        . 
  // |                       |      |       \\ /   \\  / |\\  /         .
  // | v1(1)   v2(1)   v3(1) |   =  | v1(1) v2(1) v3(1)|v1(1) v2(1)  .
  // |                       |      |       / \\    /\\  | /\\          .
  // |                       |      |      /   \\  /  \\ |/  \\         .
  // |                       |      |     /     \\/    \\/    \\        .
  // |                       |      |    /      /\\    /\\     \\       .
  // |                       |      |   /      /  \\  / |\\     \\      . 
  // |                       |      |  /      /    \\/  | \\     \\     .
  // | v1(2)   v2(2)   v3(2) |      | v1(2) v2(2) v3(2)| v1(2) v2(2) . 
  //                                 /      /     /  \\     \\     \\   .
  //                                                               
  //                                -      -     -    +     +     +  .

  return ( v1(0) * v2(1) * v3(2)
           + v2(0) * v3(1) * v1(2)
           + v3(0) * v1(1) * v2(2)
           - v3(0) * v2(1) * v1(2)
           - v1(0) * v3(1) * v2(2)
           - v2(0) * v1(1) * v3(2));
}


Double_t HParticleTool::calculateMinimumDistanceStraightToPoint(HGeomVector &base, HGeomVector &dir,HGeomVector &point)

{
    //calculates the minimum distance of a point to a straight
    //given as parametric straight x = base + n * dir

    if (!(dir.length()>0))
    {
	return -1000000.;
    }

    HGeomVector diff = base-point;

    HGeomVector cross = dir.vectorProduct(diff);

    return cross.length()/dir.length();
}

HGeomVector HParticleTool::calculatePointOfClosestApproachStraightToPoint(HGeomVector &base, HGeomVector &dir,HGeomVector &point)

{
    //calculates the point of minimum distance of a point to a straight
    //given as parametric straight x = base + n * dir

    HGeomVector ndir = dir;
    ndir /= dir.length();

    HGeomVector diff = point-base;

    Double_t l = ndir.scalarProduct(diff);

    HGeomVector dcap = ndir;
                dcap *=l;
                dcap +=base;
    return dcap;
}



Double_t HParticleTool::calculateMinimumDistance(HGeomVector &base1, HGeomVector &dir1,
						 HGeomVector &base2, HGeomVector &dir2)
{
    // calculates the minimum distance of two tracks given
    // as parametric straights x = base + n * dir

    HGeomVector cross = dir1.vectorProduct(dir2);

    HGeomVector ab = base1 - base2;

    if ( !( fabs(cross.length())>0.)) // dir1 || dir2
    {
	return HParticleTool::calculateMinimumDistanceStraightToPoint(base1, dir1, base2);
    }
    return fabs(ab.scalarProduct(cross)/cross.length());
}


HGeomVector HParticleTool::calculatePointOfClosestApproach(HGeomVector &base1, HGeomVector &dir1,
							   HGeomVector &base2, HGeomVector &dir2)
{
  //  calculating point of closest approach
  //       
  //        from the equations of the straight lines of g and h
  //        g: x1 = base1 + l * dir1
  //        h: x2 = base2 + m * dir2
  //       
  //        you can construct the following planes:
  //       
  //        E1: e1 = base1  +  a * dir1  +  b * (dir1 x dir2)
  //        E2: e2 = base2  +  s * dir2  +  t * (dir1 x dir2)
  //       
  //        now the intersection point of E1 with g2 = {P1}
  //        and the intersection point of E2 with g1 = {P2}
  //       
  //        form the base points of the perpendicular to both straight lines.
  //       
  //        The point of closest approach is the middle point between P1 and P2:
  //       
  //        vertex = (p2 - p1)/2
  //
  //        E1 ^ g2:
  //
  //           e1 = x2
  //    -->    base1  +  a * dir1  +  b * (dir1 x dir2) = base2 + m * dir2
  //    -->    base1 - base2 = m * dir2  -  a * dir1  -  b * (dir1 x dir2)      
  //                                          (m)
  //    -->    [ dir2, -dir1, -(dir1 x dir2)] (a) = base1 - base2       
  //                                          (b)
  //          
  //           using CRAMER's RULE you can find the solution for m (a,b, not used)
  //          
  //           using the rules for converting determinants:
  //          
  //           D12 = det [dir2, -dir1, -(dir1 x dir2)]
  //               = det [dir2,  dir1,  (dir1 x dir2)]
  //          
  //           Dm  = det [base1 - base2, -dir1, -(dir1 x dir2)]
  //               = det [base1 - base2,  dir1,  (dir1 x dir2)]
  // 
  //            m  = Dm/D12
  //          
  //           P1: p1 = x2(m)
  //                  = base2 + Dm/D12 * dir2
  //
  //        E2 ^ g1:
  //
  //           e2 = x1
  //    -->    base2  +  s * dir2  +  t * (dir1 x dir2) = base1 + l * dir1
  //    -->    base2 - base1 = l * dir1  -  s * dir2  -  t * (dir1 x dir2)      
  //                                          (l)
  //    -->    [ dir1, -dir2, -(dir1 x dir2)] (s) = base2 - base1       
  //                                          (t)
  //          
  //           again using CRAMER's RULE you can find the solution for m (a,b, not used)
  //          
  //           using the rules for converting determinants:
  //          
  //           D21 =  det [dir1, -dir2, -(dir1 x dir2)]
  //               =  det [dir1,  dir2,  (dir1 x dir2)]
  //               = -det [dir2,  dir1,  (dir1 x dir2)]
  //               = -D12
  //          
  //           Dl  =  det [base2 - base1, -dir2, -(dir1 x dir2)]
  //               =  det [base2 - base1,  dir1,  (dir1 x dir2)]
  //               = -det [base1 - base2,  dir1,  (dir1 x dir2)]
  //
  //            l  =   Dl/D21
  //               = - Dl/D12
  //          
  //           P2: p2 = x1(m)
  //                  = base1 - Dl/D12 * dir1
  //          
  //          
  //           vertex = p1 + 1/2 * (p2 - p1)
  //                  = 1/2 * (p2 + p1)
  //                  = 1/2 *( (base1 + base2) +  1/D12 * ( Dm * dir2 - Dl * dir1) )
  //                     

    HGeomVector cross = dir1.vectorProduct(dir2); // cross product: dir1 x dir2

    // straight lines are either skew or have a cross point

    HGeomVector diff = base1;
    diff-=base2; // Difference of two base vectors base1 - base2

    Double_t D;
    D =  calcDeterminant(dir2, dir1 ,cross);

    if (!(fabs(D) > 0.))
    {
	::Warning(":calculatePointOfClosestApproach","Dirs and cross-product are lin. dependent: returning default Vertex (-20000,-20000,-20000)");

	return HGeomVector(-20000.,-20000.,-20000.);
    }

    Double_t Dm =  calcDeterminant(diff , dir1, cross);
    Double_t Dl = -calcDeterminant(diff , dir2, cross);

    HGeomVector vertex;
    HGeomVector dm;
    HGeomVector dl;

    dm = dir2;
    dm *= Dm;

    dl = dir1;
    dl *= Dl;

    vertex = dm - dl;

    vertex *= ((1.)/D);

    vertex+=base1;
    vertex+=base2;
    vertex*=0.5;

    return HGeomVector(vertex);
}


HGeomVector HParticleTool::calculateCrossPoint(HGeomVector &base1, HGeomVector &dir1,
					       HGeomVector &base2, HGeomVector &dir2)
{
  // calculating cross point
  // taking all three equations into account solving the overdetermined set of lin. equations
  // of
  // base1 + l * dir2 =  base1 + m * dir2
  //
  // set of lin. equations:
  // 
  //   base1(0) + l * dir1(0) = base2(0) + m * dir2(0)
  //   base1(1) + l * dir1(1) = base2(1) + m * dir2(1)
  //   base1(2) + l * dir1(2) = base2(2) + m * dir2(2) this line is ignored
  //
  //   written in matrix form
  //
  //        l \\                                                                  .
  //   M * |   | = base2 - base1
  //       \\ m /
  //
  //   M is a 3x2 matrix
  //    
  // to solve multiply the equation by the transposed Matrix of M from the left: M
  //    
  //  T      /  l \\                                                               .
  // M * M * |    | = M  * (base2 - base1)
  //         \\ -m /
  // MIND THE '-' of m
  //
  //     / dir1(0) dir2(0) \\                                                      .
  //     |                 |    T   / dir1(0) dir1(1) dir1(2) \\                   .
  // M = | dir1(1) dir2(1) |,  M  = |                         |
  //     |                 |        \\ dir2(0) dir2(1) dir2(2) /                   .
  //     \\ dir1(2) dir2(2) /                                   
  //
  //  T      / (dir1(0)*dir1(0) + dir1(1)*dir1(1) + dir1(2)*dir1(2))   (dir1(0)*dir2(0) + dir1(1)*dir2(1) + dir1(2)*dir2(2))  \\ .
  //
  // M * M = |                                                                                                                |
  //
  //         \\ (dir1(0)*dir2(0) + dir1(1)*dir2(1) + dir1(2)*dir2(2))   (dir2(0)*dir2(0) + dir2(1)*dir2(1) + dir2(2)*dir2(2))  /                       
  //
  //
  //  T       / d1d1 d1d2 \\                           .
  // M  * M = |           |
  //          \\ d1d2 d2d2 /
  //
  // diff = base2 - base1
  //
  //  T           /  (dir1(0)*diff(0) + dir1(1)*diff(1) + dir1(2)*diff(2)) \\         .
  // M  * diff =  |                                                        |
  //              \\  (dir2(0)*diff(0) + dir2(1)*diff(1) + dir2(2)*diff(2)) /
  //
  //  T           /  d1diff  \\                                          .
  // M  * diff =  |          |
  //              \\  d2diff  /
  //
  // now the new Matrix set is to be solved by CRAMER'S Rule:
  //
  // / d1d1 d1d2 \\   /  l \\   /  d1diff \\                   .
  // |           | * |    | = |          |
  // \\ d1d2 d2d2 /   \\ -m /   \\  d2diff /
  //
  //     | d1d1 d1d2 |
  // D = |           | = d1d1*d2d2 - d1d2*d1d2;
  //     | d1d2 d2d2 |
  //
  //     | d1diff d1d2 |
  // Dl= |              | = d1diff*d2d2 - d1d2*d2diff;
  //     | d2diff d2d2 |             
  //
  // l = Dl/D = l_cross
  //
  // vertex = base1 + l_cross * dir1
  //

  Double_t d1d1 = dir1(0)*dir1(0) + dir1(1)*dir1(1) + dir1(2)*dir1(2);
  Double_t d2d2 = dir2(0)*dir2(0) + dir2(1)*dir2(1) + dir2(2)*dir2(2);
  Double_t d1d2 = dir1(0)*dir2(0) + dir1(1)*dir2(1) + dir1(2)*dir2(2);
 
  Double_t D = d1d1*d2d2 - (d1d2*d1d2);
 
  if (!(fabs(D) > 0.))
  {
      ::Warning("calculateCrossPoint","Error while calculating cross point ... eqns are lin. dependent:returning default Vertex (-20000,-20000,-20000)");

      return HGeomVector(-20000.,-20000.,-20000.);
  }

  Double_t d1diff = dir1(0)*(base2(0)-base1(0))+dir1(1)*(base2(1)-base1(1))+dir1(2)*(base2(2)-base1(2));
  Double_t d2diff = dir2(0)*(base2(0)-base1(0))+dir2(1)*(base2(1)-base1(1))+dir2(2)*(base2(2)-base1(2));

  Double_t Dlambda = d1diff*d2d2-d1d2*d2diff;
 
  Double_t lambda = Dlambda/D;
 
  HGeomVector vertex;
  vertex += dir1;
  vertex *= lambda;
  vertex += base1;

  return HGeomVector(vertex);

}

HGeomVector HParticleTool::calcVertexAnalytical(HGeomVector &base1, HGeomVector &dir1,
						HGeomVector &base2, HGeomVector &dir2)
{
  // Calculates the Vertex of two straight lines defined by the vectors base and dir
  //
  //      g: x1 = base1 + l * dir1
  //      h: x2 = base2 + m * dir2 , where l,m are real numbers
  //                                   h
  // 1. are g and h
  //       parallel / identical, i.e. are dir1 and dir2 linear dependent?
  //      
  //                                        /-                              
  //                                        |
  //                                        |   = 0    linear dependent, no unique solution, returning dummy 
  //      => cross product : dir1 x dir2 = -| 
  //                                        |  != 0    linear independent
  //                                        |
  //                                        \\-        
  //
  // 2. are g and h
  //       skew or do they have a crossing point, i.e are dir1, dir2 and (base1 - base2) linear dependent ?
  //
  //                                                    /-                              
  //                                                    |
  //                                                    |   = 0    linear dependent
  //                                                    |          g and h are intersecting
  //                                                    |          calculating vertex as point of intersection
  //                                                    |
  //    => determinant: det[ dir1, dir2, base1-base2]= -|
  //                                                    |  != 0    linear independent
  //                                                    |          g and h are skew
  //                                                    |          calulating vertex as point of closest approach
  //                                                    |
  //                                                    \\-        
  // 
  // 3.
  //    (a) calculating intersection point
  //    (b) calculating point of closest approach


    // 1. exists a unique solution ?

    if ((dir1.vectorProduct(dir2)).length()> 0.) // dir1 and dir2 linear independent
    {
	// straight lines are either skew or have a cross point

	HGeomVector diff = base1;
	diff-=base2; // Difference of two base vectors base1 - base2

	// 2. skew or intersecting ?

	if (fabs(HParticleTool::calcDeterminant(dir2, dir1 ,diff))>0.)
	{
	    // 3. (b) skew
	    return HGeomVector(HParticleTool::calculatePointOfClosestApproach(base1, dir1, base2, dir2));
	}
	else
	{
	    // 3. (a) intersection
	    return HGeomVector(HParticleTool::calculateCrossPoint(base1 ,dir1, base2 ,dir2));
	}
    }
    else
    {
	// dir1 and dir2 linear dependent -> g1 and g2 identical or parallel
	return HGeomVector(-10000000.,-10000000.,-10000000.);
    }
    return HGeomVector(-10000000.,-10000000.,-10000000.);
}
//  end functions from GeomFunct.h
//-------------------------------------------------------------------------------


Int_t HParticleTool::findFirstHitInTof(Int_t trackID,Int_t modeTrack)
{
    //-------------------------------------------------
    // find the first track ID entering the TOF
    // Used to suppress the secondaries created in the
    // TOF itself.
    //        0 = realistic (secondaries included)
    //        1 primary particle is stored
    //        2 (default) the first track number entering the tof in SAME SECTOR is stored
    //        3 as 2 but condition on SAME SECTOR && MOD
    //        4 as 2 but SAME SECTOR && MOD && ROD

    Int_t numTrack = trackID;

    if(numTrack <= 0) return numTrack; // nothing to do for negative track numbers

    //------------------------------------------
    // getting categories
    HLinearCategory* fGeantKineCat = (HLinearCategory*)HCategoryManager::getCategory(catGeantKine, kFALSE);
    if(!fGeantKineCat){ return trackID; }

    HLinearCategory* fGeantCat = (HLinearCategory*) HCategoryManager::getCategory(catTofGeantRaw,kFALSE);
    if(!fGeantCat){	return trackID;	}
    //------------------------------------------

    HGeantTof *poldTof;
    Int_t first = 0;
    HGeantKine* kine = 0;
    kine = HCategoryManager::getObject(kine,fGeantKineCat,numTrack - 1);
    if(kine){
	first=kine->getFirstTofHit();
	if(first != -1){
	    poldTof = (HGeantTof*)fGeantCat->getObject(first);
	} else {
	    ::Error("findFirstHitInTof()","No first tof hit!");
	    return numTrack;
	}
    } else {
	::Error("findFirstHitInTof()","Received Zero pointer for kine index = %i !",numTrack);
	return numTrack;
    }
    if(numTrack != poldTof->getTrack()){
	::Error("findFirstHitInTof()","First tof hit not same trackID!");
	return numTrack;
    }

    //--------------------------------------------------------
    // return the track number for
    // the selected option storeFirstTrack

    //--------------------------------------
    // case 0
    if(modeTrack == 0) return numTrack;

    //--------------------------------------
    // case 1
    if(modeTrack == 1)
    {   // return track number of primary particle
	// of the given track
	kine = (HGeantKine*)fGeantKineCat->getObject(numTrack-1);
	kine = HGeantKine::getPrimary(numTrack,fGeantKineCat);
	return kine->getTrack();
    }

    //--------------------------------------
    // case 2 and 3
    kine = (HGeantKine*)fGeantKineCat->getObject(numTrack - 1);
    if(kine->getParentTrack() == 0){return numTrack;} // nothing to do

    Int_t s,m,c;
    s = poldTof->getSector();
    // GEANT 15-22 (TOF), 23-26 (TOFINO)
    // numbering reverse !
    m = 21-poldTof->getModule();
    c = 7 -poldTof->getCell();

    first = 0;
    Int_t tempTrack = numTrack;
    while((kine = kine->getParent(tempTrack,fGeantKineCat)) != 0)
    {
	first = kine->getFirstTofHit();
	if(first != -1)
	{  // track is still in TOF

	    // now we have to check if it is in TOF or TOFINO
	    HGeantTof* gtof = (HGeantTof*)fGeantCat->getObject(first);

	    Int_t s1,m1,c1;
	    s1 = m1 = c1 = 0;

	    m1 = 21 - gtof->getModule();
	    if(m1 >= 0)
	    { // inside TOF
		s1 = gtof->getSector();
		c1 = 7-gtof->getCell();

		if(modeTrack == 2 && s == s1)
		{   // case 2 :: check only sector
		    tempTrack = kine->getTrack();
		}
		if(modeTrack == 3 && s == s1 && m == m1)
		{   // case 3 :: check only sector,module
		    tempTrack = kine->getTrack();
		}
		else if(modeTrack == 4 && s == s1 && m == m1 && c == c1)
		{   // case 4 :: check for same rod
		    tempTrack = kine->getTrack();
		}
		else {
		    // track has no TOF hit any longer
		    // which fulfills the condition
		    break;
		}
	    } else {
		// track is in TOFINO
		break;
	    }
	}
	else {
	    // track has no TOF hit any longer,
	    // so the previous object was the one we
	    // searched  for
	    break;
	}
    }
    return tempTrack;
}
Int_t HParticleTool::findFirstHitShowerInTofino(Int_t trackID, Int_t modeTrack)
{
    //-------------------------------------------------
    // Used to suppress the secondaries created in the
    // SHOWER itself.
    //        0 = realistic (secondaries included)
    //        1 primary particle is stored
    //        2 the first track number entering the SHOWER in SAME SECTOR is stored
    //        3 the first track number entering the TOFINO in SAME SECTOR is stored
    //          or the primary track if no TOFINO was found
    //        4 (default) the first track number entering the TOFINO in SAME SECTOR is stored
    //          or the first track in SHOWER if no TOFINO was found


    Int_t numTrack = trackID;

    if(numTrack <= 0) return numTrack; // nothing to do for negative track numbers

    //--------------------------------------
    // case 0  : in = out
    if(modeTrack == 0) { return numTrack; }

    HGeantShower *poldShower;
    Int_t first = 0;
    Int_t parent= 0;
    //------------------------------------------
    // getting categories
    HLinearCategory* fGeantKineCat = (HLinearCategory*)HCategoryManager::getCategory(catGeantKine, kFALSE);
    if(!fGeantKineCat){ return trackID; }

    HLinearCategory* fGeantShowerCat = (HLinearCategory*) HCategoryManager::getCategory(catShowerGeantRaw,kFALSE);
    if(!fGeantShowerCat){	return trackID;	}

    HLinearCategory* fGeantTofCat = (HLinearCategory*) HCategoryManager::getCategory(catTofGeantRaw,kFALSE);
    if(!fGeantTofCat){	return trackID;	}
    //------------------------------------------

    HGeantKine* kine = (HGeantKine*)fGeantKineCat->getObject(numTrack - 1);
    if(kine){
	parent = kine->getParentTrack();

	if( parent == 0) {  return numTrack; } // nothing todo

	first = kine->getFirstShowerHit();
	if(first != -1){
	    poldShower = (HGeantShower*)fGeantShowerCat->getObject(first);
	} else {
	    ::Error("findFirstHitShowerInTofino()","No first shower hit!");
	    return numTrack;
	}

    } else {
	::Error("findFirstHitShowerInTofino()","Received Zero pointer for kine!");
	return numTrack;
    }
    if(numTrack != poldShower->getTrack()){
	::Error("findFirstHitShowerInTofino()","First shower hit not same trackID!");
	return numTrack;
    }

    //--------------------------------------------------------
    // return the track number for
    // the selected option modeTrack


    Int_t s = poldShower->getSector();

    //--------------------------------------
    // case 1  : in -> primary
    if(modeTrack == 1)
    {   // return track number of primary particle
	// of the given track

	kine = HGeantKine::getPrimary(numTrack,fGeantKineCat);
	return kine->getTrack();
    }

    //--------------------------------------
    // case 2 and 3  : entering SHOWER/TOF

    Int_t tempTrack = numTrack;
    first           = 0;

    //--------------------------------------
    // case 2  : entering SHOWER
    if(modeTrack == 2)
    {
	while((kine = kine->getParent(tempTrack,fGeantKineCat)) != 0)
	{
	    first = kine->getFirstShowerHit();
	    if(first != -1)
	    {
		// track is still in SHOWER

		HGeantShower* gshower = (HGeantShower*)fGeantShowerCat->getObject(first);
		Int_t s1 = gshower->getSector();

		if(s == s1)
		{   // check only sector
		    tempTrack = kine->getTrack();
		} else {
		    // track has no SHOWER hit any longer
		    // which fulfills the condition
		    break;
		}
	    } else {
		// track has no SHOWER hit any longer,
		// so the previous object was the one we
		// searched for
		break;
	    }
	}
	return tempTrack;
    }
    //--------------------------------------

    //--------------------------------------
    // case 3  : entering TOFINO
    if(modeTrack >= 3)
    {
	Bool_t foundTof  = kFALSE;
	Int_t tempTrack2 = tempTrack;
	do {
	    first = kine->getFirstTofHit();
	    if(first != -1)
	    { // we are in TOF
		HGeantTof* gtof = (HGeantTof*)fGeantTofCat->getObject(first);
		Int_t s1 = gtof->getSector();
		Int_t m  = gtof->getModule();

		if(s == s1 && m > 21 )
		{   // check only sector + TOFINO
		    foundTof  = kTRUE;
		    tempTrack = tempTrack2;
		}
	    }
	    tempTrack2 = kine->getParentTrack();

	} while( tempTrack2 > 0 && (kine = (HGeantKine*)fGeantKineCat->getObject(tempTrack2 - 1)) != 0);

	if(foundTof) { tempTrack += 10000; }
	else {
	    kine = (HGeantKine*)fGeantKineCat->getObject(numTrack - 1);


	    if( modeTrack == 3 ){
		// store primaries if no TOFino was found
		kine = HGeantKine::getPrimary(numTrack,fGeantKineCat);
		tempTrack = kine->getTrack() + 100000000;
	    } else if (modeTrack == 4){
		//--------------------------------------
		// recover first particle entering SHOWER
		while((kine = kine->getParent(tempTrack,fGeantKineCat)) != 0)
		{
		    first = kine->getFirstShowerHit();
		    if(first != -1)
		    {
			// track is still in SHOWER
			HGeantShower* gshower = (HGeantShower*)fGeantShowerCat->getObject(first);
			Int_t s1 = gshower->getSector();

			if(s == s1)
			{   // check only sector
			    tempTrack = kine->getTrack();
			} else {
			    // track has no SHOWER hit any longer
			    // which fulfills the condition
			    break;
			}
		    } else {
			// track has no SHOWER hit any longer,
			// so the previous object was the one we
			// searched for
			break;
		    }
		}
		tempTrack += 100000000;
		//--------------------------------------
	    }
	}
    }
    //--------------------------------------

    return tempTrack;
}

Int_t HParticleTool::findFirstHitShowerInRpc(Int_t trackID,Int_t modeTrack)
{
    //-------------------------------------------------
    // Used to suppress the secondaries created in the
    // SHOWER itself.
    //        0 = realistic (secondaries included)
    //        1 primary particle is stored
    //        2 the first track number entering the SHOWER in SAME SECTOR is stored
    //        3 the first track number entering the RPC in SAME SECTOR is stored
    //          or the primary track if no RPC was found
    //        4 (default) the first track number entering the RPC in SAME SECTOR is stored
    //          or the first track in SHOWER if no RPC was found


    Int_t numTrack = trackID;

    if(numTrack <= 0) return numTrack; // nothing to do for negative track numbers

    //--------------------------------------
    // case 0  : in = out
    if(modeTrack == 0) { return numTrack; }

    HGeantShower *poldShower;
    Int_t first = 0;
    Int_t parent= 0;

    //------------------------------------------
    // getting categories
    HLinearCategory* fGeantKineCat = (HLinearCategory*)HCategoryManager::getCategory(catGeantKine, kFALSE);
    if(!fGeantKineCat){ return trackID; }

    HLinearCategory* fGeantShowerCat = (HLinearCategory*) HCategoryManager::getCategory(catShowerGeantRaw,kFALSE);
    if(!fGeantShowerCat){	return trackID;	}

    HLinearCategory* fGeantRpcCat = (HLinearCategory*) HCategoryManager::getCategory(catRpcGeantRaw,kFALSE);
    if(!fGeantRpcCat){	return trackID;	}
    //------------------------------------------

    HGeantKine* kine = (HGeantKine*)fGeantKineCat->getObject(numTrack - 1);
    if(kine){
	parent = kine->getParentTrack();

	if( parent == 0) {  return numTrack; } // nothing todo

	first = kine->getFirstShowerHit();
	if(first != -1){
	    poldShower = (HGeantShower*)fGeantShowerCat->getObject(first);
	} else {
	    ::Error("findFirstHitShowerInRpc()","No first shower hit!");
	    return numTrack;
	}

    } else {
	::Error("findFirstHitShowerInRpc()","Received Zero pointer for kine!");
	return numTrack;
    }
    if(numTrack != poldShower->getTrack()){
	::Error("findFirstHitShowerInRpc()","First shower hit not same trackID!");
	return numTrack;
    }

    //--------------------------------------------------------
    // return the track number for
    // the selected option modeTrack


    Int_t s = poldShower->getSector();

    //--------------------------------------
    // case 1  : in -> primary
    if(modeTrack == 1)
    {   // return track number of primary particle
	// of the given track

	kine = HGeantKine::getPrimary(numTrack,fGeantKineCat);
	return kine->getTrack();
    }

    //--------------------------------------
    // case 2 and 3  : entering SHOWER/RPC

    Int_t tempTrack = numTrack;
    first           = 0;

    //--------------------------------------
    // case 2  : entering SHOWER
    if(modeTrack == 2)
    {
	while((kine = kine->getParent(tempTrack,fGeantKineCat)) != 0)
	{
	    first = kine->getFirstShowerHit();
	    if(first != -1)
	    {
		// track is still in SHOWER

		HGeantShower* gshower = (HGeantShower*)fGeantShowerCat->getObject(first);
		Int_t s1 = gshower->getSector();

		if(s == s1)
		{   // check only sector
		    tempTrack = kine->getTrack();
		} else {
		    // track has no SHOWER hit any longer
		    // which fulfills the condition
		    break;
		}
	    } else {
		// track has no SHOWER hit any longer,
		// so the previous object was the one we
		// searched for
		break;
	    }
	}
	return tempTrack;
    }
    //--------------------------------------

    //--------------------------------------
    // case 3  : entering RPC
    if(modeTrack >= 3)
    {
	Bool_t foundRPC  = kFALSE;
	Int_t tempTrack2 = tempTrack;
	do {
	    first = kine->getFirstRpcHit();
	    if(first != -1)
	    { // we are in TOF
		HGeantRpc* grpc = (HGeantRpc*)fGeantRpcCat->getObject(first);
		Int_t s1 = grpc->getSector();

		if(s == s1)
		{   // check only sector + RPC
		    foundRPC  = kTRUE;
		    tempTrack = tempTrack2;
		}
	    }
	    tempTrack2 = kine->getParentTrack();

	} while( tempTrack2 > 0 && (kine = (HGeantKine*)fGeantKineCat->getObject(tempTrack2 - 1)) != 0);

	if(foundRPC) { tempTrack += 10000; }
	else {
	    kine = (HGeantKine*)fGeantKineCat->getObject(numTrack - 1);


	    if( modeTrack == 3 ){
		// store primaries if no RPC was found
		kine = HGeantKine::getPrimary(numTrack,fGeantKineCat);
		tempTrack = kine->getTrack() + 100000000;
	    } else if (modeTrack == 4){
		//--------------------------------------
		// recover first particle entering SHOWER
		while((kine = kine->getParent(tempTrack,fGeantKineCat)) != 0)
		{
		    first = kine->getFirstShowerHit();
		    if(first != -1)
		    {
			// track is still in SHOWER
			HGeantShower* gshower = (HGeantShower*)fGeantShowerCat->getObject(first);
			Int_t s1 = gshower->getSector();

			if(s == s1)
			{   // check only sector
			    tempTrack = kine->getTrack();
			} else {
			    // track has no SHOWER hit any longer
			    // which fulfills the condition
			    break;
			}
		    } else {
			// track has no SHOWER hit any longer,
			// so the previous object was the one we
			// searched for
			break;
		    }
		}
		tempTrack += 100000000;
		//--------------------------------------
	    }
	}
    }
    //--------------------------------------

    return tempTrack;
}

Float_t HParticleTool::getInterpolatedValue(TH1* h, Float_t xVal, Bool_t warn)
{
    // retrieve content of 1-dim Hist corresponding to x val.
    // The values will be linear interpolated. If warn == kTRUE
    // warning will be emitted if the xval is out of the range
    // of the hist. In case the value is out of range the value
    // of first or last bin will be returned respectively.
    if(!h) return 0;
    TAxis *pA  = h->GetXaxis();
    Int_t binX = pA->FindBin(xVal);

    // We need to start interpolation from the next-lower bin boundary

    if(binX > 1 && binX <= pA->GetNbins())
    {   // only here it make sense to interpolate
	Int_t binXLower = binX - 1;

	Float_t startVal = h->GetBinContent(binXLower);
	Float_t endVal   = h->GetBinContent(binX);

	Float_t startx = pA->GetBinUpEdge(binXLower);
	Float_t slope  = (endVal - startVal)/pA->GetBinWidth(binX);
	Float_t calc   = startVal + slope * (xVal - startx);

	return calc;
    } else { // noting to interpolate....
	if(binX == 1) {
	    return  h->GetBinContent(1);
	} else if(binX < 1) { // lower boundary violation ...return lowest bin
	    if(warn) ::Warning("HParticleTool::getInterpolatedValue()","Non-intercepted bin-out-of-range-situation (bin too low)");
	    return  h->GetBinContent(1);
	} else { // upper boundary violation ...return highest bin
	    if(warn) ::Warning("HParticleTool::getInterpolatedValue()","Non-intercepted bin-out-of-range-situation (bin too high)");
	    return  h->GetBinContent(pA->GetNbins());
	}
    }
}

Stat_t HParticleTool::getValue(TH1* h,Float_t xVal, Float_t yVal, Float_t zVal)
{
    // retrieve value from Histogram (1,2 and 3 dim) corresponding
    // to x val, y val and z val.  If the values are out of range of
    // the histogram axis the lowest/highest bin of the axis will be
    // used. No interpolation performed.

    if(!h) return 0;

    TAxis *pA = h->GetXaxis();
    Int_t  binX, binY, binZ;
    binY = binZ = 0;
    pA   = h->GetXaxis();
    binX = pA->FindBin(xVal);

    if(binX <= 0) { binX = 1; }
    else {
	if(binX > pA->GetNbins()) binX = pA->GetNbins();
    }

    pA   = h ->GetYaxis();
    binY = pA->FindBin(yVal);
    if(binY <= 0) { binY = 1; }
    else {
	if(binY > pA->GetNbins()) binY = pA->GetNbins();
    }

    pA   = h ->GetZaxis();
    binZ = pA->FindBin(zVal);
    if(binZ <= 0) { binZ = 1; }
    else {
	if(binZ > pA->GetNbins()) binZ = pA->GetNbins();
    }

    return h->GetBinContent(h->GetBin(binX, binY, binZ));
}


HRichHit* HParticleTool::getRichHit(Int_t richind)
{
    // return HRichHit pointer from the object index
    // in the category. In case of no success returns NULL

    HRichHit* richhit = 0;
    richhit = HCategoryManager::getObject(richhit,catRichHit,richind,kTRUE);
    return richhit;
}

HTofHit* HParticleTool::getTofHit(Int_t tofind)
{
    // return HTofHit pointer from the object index
    // in the category. In case of no success returns NULL

    HTofHit* tofhit=0;
    tofhit = HCategoryManager::getObject(tofhit,catTofHit,tofind,kTRUE);
    return tofhit;
}

HTofCluster* HParticleTool::getTofCluster(Int_t tofind)
{
    // return HTofCluster pointer from the object index
    // in the category. In case of no success returns NULL

    HTofCluster* tofclst=0;
    tofclst = HCategoryManager::getObject(tofclst,catTofCluster,tofind,kTRUE);
    return tofclst;
}

HRpcCluster* HParticleTool::getRpcCluster(Int_t rpcind)
{
    // return HRpcCluster pointer from the object index
    // in the category. In case of no success returns NULL

    HRpcCluster* rpcclst=0;
    rpcclst = HCategoryManager::getObject(rpcclst,catRpcCluster,rpcind,kTRUE);
    return rpcclst;
}

HShowerHit* HParticleTool::getShowerHit(Int_t showerind)
{
    // return HShowerHit pointer from the object index
    // in the category. In case of no success returns NULL

    HShowerHit* showerhit=0;
    showerhit = HCategoryManager::getObject(showerhit,catShowerHit,showerind,kTRUE);
    return showerhit;
}

HEmcCluster* HParticleTool::getEmcCluster(Int_t emcind)
{
    // return HEmcCluster pointer from the object index
    // in the category. In case of no success returns NULL

    HEmcCluster* emcclst=0;
    emcclst = HCategoryManager::getObject(emcclst,catEmcCluster,emcind,kTRUE);
    return emcclst;
}

HMetaMatch2* HParticleTool::getMetaMatch(Int_t metaind)
{
    // return HMetaMatch2 pointer from the object index
    // in the category. In case of no success returns NULL

    HMetaMatch2* meta = 0;
    meta = HCategoryManager::getObject(meta,catMetaMatch,metaind,kTRUE);
    return meta;
}

HMdcTrkCand* HParticleTool::getMdcTrkCand(Int_t metaind)
{
    // return HMdcTrkCand pointer from the object index of MetaMatch2
    // in the category (indMeta->HMetaMatch2->HMdcTrkCand). In case of
    // no success returns NULL

    HMetaMatch2* meta = 0;
    HMdcTrkCand* trk  = 0;
    meta = HCategoryManager::getObject(meta,catMetaMatch,metaind);
    if(meta){
	Int_t mdctrkInd = meta->getTrkCandInd();
	if(mdctrkInd >= 0){
	    trk = HCategoryManager::getObject(trk,catMdcTrkCand,mdctrkInd,kTRUE);
	}
    }
    return trk;
}

HMdcSeg* HParticleTool::getMdcSeg(Int_t segind)
{
    // return HMdcSeg pointer from the object index
    // in the category. In case of no success returns NULL

    HMdcSeg* seg = 0;
    seg  = HCategoryManager::getObject(seg,catMdcSeg,segind,kTRUE);
    return seg;
}

HMdcHit* HParticleTool::getMdcHit(Int_t segind,Int_t nhit )
{
    // return HMdcHit pointer from the object index of HMdcSeg
    // in the category (indSeg->HMdcSeg->HMdcHit). nhit (0 or 1)
    // is the number of the hit inside the segment which should
    // be retrived. In case of no success returns NULL

    HMdcSeg* seg = 0;
    HMdcHit* hit = 0;
    seg  = HCategoryManager::getObject(seg,catMdcSeg,segind,kTRUE);
    if(seg){
	Int_t hitind = seg->getHitInd(nhit);
	if(hitind != -1) {
	    hit = HCategoryManager::getObject(hit,catMdcHit,hitind,kTRUE);
	}
    }
    return hit;
}

HMdcClusInf* HParticleTool::getMdcClusInf(Int_t segind,Int_t nhit)
{
    // return HMdcClusInf pointer from the object index of HMdcSeg
    // in the category (indSeg->HMdcSeg->HMdcClusInf). nhit (0 or 1)
    // is the number of the hit inside the segment which should
    // be retrived. In case of no success returns NULL

    HMdcSeg* seg = 0;
    HMdcClusInf* clusinf = 0;
    seg  = HCategoryManager::getObject(seg,catMdcSeg,segind,kTRUE);
    if(seg){
	Int_t hitind = seg->getHitInd(nhit);
	if(hitind != -1) {
	    clusinf = HCategoryManager::getObject(clusinf,catMdcClusInf,hitind,kTRUE);
	}
    }
    return clusinf;
}

HMdcClusFit* HParticleTool::getMdcClusFit(Int_t segind)
{
    // return HMdcClusFit pointer from the object index of HMdcSeg
    // in the category (indSeg->HMdcSeg->HMdcClsuInf->HMdcClusFit).
    // In case of no success returns NULL

    HMdcSeg* seg = 0;
    HMdcClusInf* clusinf = 0;
    HMdcClusFit* clusfit = 0;
    seg  = HCategoryManager::getObject(seg,catMdcSeg,segind,kTRUE);
    if(seg){
	Int_t hitind = seg->getHitInd(0);
	if(hitind != -1) {
	    clusinf = HCategoryManager::getObject(clusinf,catMdcClusInf,hitind,kTRUE);
	} else {
	    hitind = seg->getHitInd(1);
	    clusinf = HCategoryManager::getObject(clusinf,catMdcClusInf,hitind,kTRUE);
	}
	if(clusinf){
	    Int_t clusfitind = clusinf ->getClusFitIndex();
	    if(clusfitind !=-1){
		clusfit = HCategoryManager::getObject(clusfit,catMdcClusFit,clusfitind,kTRUE);
	    }
	}
    }
    return clusfit;
}

HMdcClus* HParticleTool::getMdcClus(Int_t segind)
{
    // return HMdcClus pointer from the object index of HMdcSeg
    // in the category (indSeg->HMdcSeg->HMdcClus).
    // In case of no success returns NULL

    HMdcSeg*   seg = 0;
    HMdcClus* clus = 0;
    seg  = HCategoryManager::getObject(seg,catMdcSeg,segind,kTRUE);
    if(seg){
	Int_t clusind = seg->getClusIndex();
	if(clusind != -1) {
	    clus = HCategoryManager::getObject(clus,catMdcClus,clusind,kTRUE);
	}
    }
    return clus;
}

TObjArray* HParticleTool::getMdcWireFitSeg(Int_t segind)
{
    // return TObjArray pointer to an array of HMdcWireFit
    // pointer from the object index of HMdcSeg
    // in the category (indSeg->HMdcSeg->HMdcClusInf->HMdcClusFit->HMdcWireFit).
    // The user has to delete the TObjArray object
    // (not the content) by himself.

    TObjArray* ar = new TObjArray();
    HMdcClusFit* clusfit = HParticleTool::getMdcClusFit(segind);
    if(clusfit){
	Int_t first = clusfit->getFirstWireFitInd();
	Int_t last  = clusfit->getLastWireFitInd();
	HCategory *wirefitcat = HCategoryManager::getCategory(catMdcWireFit,2);// silent
	if(wirefitcat){
	    for(Int_t i = first; i<= last; i++){
		HMdcWireFit* wf = 0;
		wf = HCategoryManager::getObject(wf,wirefitcat,i,kTRUE);
                if(wf) ar->Add(wf);
	    }
	}
    }
    return ar;
}

Int_t HParticleTool::getMdcWireFitSeg(Int_t segind, vector<HMdcWireFit*>& v, Bool_t clear)
{
    // fill vector of HMdcWireFit
    // pointer from the object index of HMdcSeg
    // in the category (indSeg->HMdcSeg->HMdcClusInf->HMdcClusFit->HMdcWireFit).
    // The user has to delete the TObjArray object
    // (not the content) by himself. Returns the number of
    // collected objects .the vector will be cleared
    // if clear=kTRUE

    if(clear) v.clear();
    HMdcClusFit* clusfit = HParticleTool::getMdcClusFit(segind);
    if(clusfit){
	Int_t first = clusfit->getFirstWireFitInd();
	Int_t last  = clusfit->getLastWireFitInd();
	HCategory *wirefitcat = HCategoryManager::getCategory(catMdcWireFit,2);// silent
	if(wirefitcat){
	    for(Int_t i = first; i<= last; i++){
		HMdcWireFit* wf = 0;
		wf = HCategoryManager::getObject(wf,wirefitcat,i,kTRUE);
                v.push_back(wf);
	    }
	}
    }
    return v.size();
}

TObjArray* HParticleTool::getMdcCal1Seg(Int_t segind)
{
    // return TObjArray pointer to an array of HMdcCal1
    // pointer from the object index of HMdcSeg
    // in the category (indSeg->HMdcSeg->HMdcCal1).
    // user has to delete the TObjArray object
    // (not the content) by himself.

    TObjArray* ar = new TObjArray();
    HMdcSeg* seg = HParticleTool::getMdcSeg(segind);
    HCategory *cal1cat = HCategoryManager::getCategory(catMdcCal1,2);// silent

    if(seg && cal1cat){
	HLocation loccal;
        loccal.set(4,0,0,0,0);

	// t2-t1 from segment
	for(Int_t l = 0; l < 12; l ++) // loop over layers in segment
	{
	    Int_t nCell = seg->getNCells(l);
	    loccal[0]   = seg->getSec();
            Int_t io    = seg->getIOSeg();
	    for(Int_t ic = 0; ic < nCell; ic ++)
	    {
		//---------------------------------------------
		// find cal1 coordinates
		// find module
		if(io == 0){
		    (l < 6)? loccal[1] = 0 : loccal[1] = 1;
		} else if(io == 1) {
		    (l < 6)? loccal[1] = 2 : loccal[1] = 3;
		}
		// find layer
		(l < 6)? loccal[2] = l : loccal[2] = l - 6;
		// find cell number
		loccal[3] = seg->getCell(l,ic);
		//---------------------------------------------

		HMdcCal1* cal1 = (HMdcCal1*)cal1cat->getObject(loccal);
		if(cal1)
		{
                   ar->Add(cal1);
		}
	    }
	}
    }
    return ar;
}

Int_t HParticleTool::getMdcCal1Seg(Int_t segind, vector<HMdcCal1*>& v, Bool_t clear)
{
    // fill vector of HMdcCal1
    // pointer from the object index of HMdcSeg
    // in the category (indSeg->HMdcSeg->HMdcCal1).
    // user has to delete the TObjArray object
    // (not the content) by himself. Returns number
    // of collected objects. the vector will be cleared
    // if clear=kTRUE

    if(clear) v. clear();

    HMdcSeg* seg = HParticleTool::getMdcSeg(segind);
    HCategory *cal1cat = HCategoryManager::getCategory(catMdcCal1,2);// silent

    if(seg && cal1cat){
	HLocation loccal;
        loccal.set(4,0,0,0,0);

	// t2-t1 from segment
	for(Int_t l = 0; l < 12; l ++) // loop over layers in segment
	{
	    Int_t nCell = seg->getNCells(l);
	    loccal[0]   = seg->getSec();
            Int_t io    = seg->getIOSeg();
	    for(Int_t ic = 0; ic < nCell; ic ++)
	    {
		//---------------------------------------------
		// find cal1 coordinates
		// find module
		if(io == 0){
		    (l < 6)? loccal[1] = 0 : loccal[1] = 1;
		} else if(io == 1) {
		    (l < 6)? loccal[1] = 2 : loccal[1] = 3;
		}
		// find layer
		(l < 6)? loccal[2] = l : loccal[2] = l - 6;
		// find cell number
		loccal[3] = seg->getCell(l,ic);
		//---------------------------------------------

		HMdcCal1* cal1 = (HMdcCal1*)cal1cat->getObject(loccal);
		if(cal1)
		{
                   v.push_back(cal1);
		}
	    }
	}
    }
    return v.size();
}

TObjArray* HParticleTool::getMdcCal1Cluster(Int_t segind)
{
    // return TObjArray pointer to an array of HMdcCal1
    // pointer from the object index of HMdcSeg
    // in the category (indSeg->HMdcSeg->HMdcClus->HMdcCal1).
    // user has to delete the TObjArray object
    // (not the content) by himself.

    TObjArray* ar = new TObjArray();
    HMdcClus* clus = HParticleTool::getMdcClus(segind);
    HCategory *cal1cat = HCategoryManager::getCategory(catMdcCal1,2);// silent

    if(clus && cal1cat){


	HLocation loccal;
        loccal.set(4,0,0,0,0);

	// t2-t1 from segment
	for(Int_t l = 0; l < 12; l ++) // loop over layers in segment
	{
	    Int_t nCell = clus->getNCells(l);
	    loccal[0]   = clus->getSec();
            Int_t io    = clus->getIOSeg();
	    for(Int_t ic = 0; ic < nCell; ic ++)
	    {
		//---------------------------------------------
		// find cal1 coordinates
		// find module
		if(io == 0){
		    (l < 6)? loccal[1] = 0 : loccal[1] = 1;
		} else if(io == 1) {
		    (l < 6)? loccal[1] = 2 : loccal[1] = 3;
		}
		// find layer
		(l < 6)? loccal[2] = l : loccal[2] = l - 6;
		// find cell number
		loccal[3] = clus->getCell(l,ic);
		//---------------------------------------------

		HMdcCal1* cal1 = (HMdcCal1*)cal1cat->getObject(loccal);
		if(cal1)
		{
                   ar->Add(cal1);
		}
	    }
	}
    }
    return ar;
}

Int_t HParticleTool::getMdcCal1Cluster(Int_t segind, vector<HMdcCal1*>& v, Bool_t clear)
{
    // fill vector of HMdcCal1
    // pointer from the object index of HMdcSeg
    // in the category (indSeg->HMdcSeg->HMdcClus->HMdcCal1).
    // user has to delete the TObjArray object
    // (not the content) by himself. Returns the number
    // of collected objects. The vector will be cleared
    // if clear=kTRUE

    if(clear) v. clear();

    HMdcClus* clus = HParticleTool::getMdcClus(segind);
    HCategory *cal1cat = HCategoryManager::getCategory(catMdcCal1,2);// silent

    if(clus && cal1cat){


	HLocation loccal;
        loccal.set(4,0,0,0,0);

	// t2-t1 from segment
	for(Int_t l = 0; l < 12; l ++) // loop over layers in segment
	{
	    Int_t nCell = clus->getNCells(l);
	    loccal[0]   = clus->getSec();
            Int_t io    = clus->getIOSeg();
	    for(Int_t ic = 0; ic < nCell; ic ++)
	    {
		//---------------------------------------------
		// find cal1 coordinates
		// find module
		if(io == 0){
		    (l < 6)? loccal[1] = 0 : loccal[1] = 1;
		} else if(io == 1) {
		    (l < 6)? loccal[1] = 2 : loccal[1] = 3;
		}
		// find layer
		(l < 6)? loccal[2] = l : loccal[2] = l - 6;
		// find cell number
		loccal[3] = clus->getCell(l,ic);
		//---------------------------------------------

		HMdcCal1* cal1 = (HMdcCal1*)cal1cat->getObject(loccal);
		if(cal1)
		{
                   v.push_back(cal1);
		}
	    }
	}
    }
    return v.size();
}

Bool_t HParticleTool::getSimTracks(HParticleCandSim* cand,
				 vector<Int_t>&tracksMeta,
				 vector<Int_t>&tracksShowerEcal,
				 vector<Int_t>&tracksRich,
				 vector<Int_t>&weightRich,
				 vector<Int_t>&tracksInnerMdc,
				 vector<Int_t>&weightInnerMdc,
				 vector<Int_t>&tracksOuterMdc,
				 vector<Int_t>&weightOuterMdc,
				 Bool_t print
				  )
{
    tracksMeta.clear();
    tracksShowerEcal.clear();
    tracksRich.clear();
    tracksInnerMdc.clear();
    tracksOuterMdc.clear();
    weightInnerMdc.clear();
    weightOuterMdc.clear();

    Bool_t ret =kTRUE;

    if(print)cout<<"SIM tracks----------------------------------------------"<<endl;

    HMdcSegSim* seg [2]={0,0};
    seg [0]= (HMdcSegSim*) HParticleTool::getMdcSeg(cand->getInnerSegInd());
    seg [1]= (HMdcSegSim*) HParticleTool::getMdcSeg(cand->getOuterSegInd());
    for(Int_t io=0;io<2;io++){
	if(seg[io]==0) continue;
	for(Int_t tr=0;tr<seg[io]->getNTracks(); tr++){
	    if(io==0){
		tracksInnerMdc.push_back((Int_t)seg[io]->getTrack(tr));
		weightInnerMdc.push_back((Int_t)seg[io]->getNTimes(tr));
	    } else {
		tracksOuterMdc.push_back(seg[io]->getTrack(tr));
		weightOuterMdc.push_back(seg[io]->getNTimes(tr));
	    }
	}
    }
    if(print){
	if(seg[0]){
	    cout<<"seg : "<<0<<" , ntr "<<tracksInnerMdc.size()<<" : "<<endl;
	    for(UInt_t tr=0;tr<tracksInnerMdc.size(); tr++){
		cout<<"         "<<setw(6)<<tracksInnerMdc[tr]<<" ntimes "<<setw(6)<<weightInnerMdc[tr]<<endl;
	    }
	}
	if(seg[1]){
	    cout<<"seg : "<<1<<" , ntr "<<tracksOuterMdc.size()<<" : "<<endl;
	    for(UInt_t tr=0;tr<tracksOuterMdc.size(); tr++){
		cout<<"         "<<setw(6)<<tracksOuterMdc[tr]<<" ntimes "<<setw(6)<<weightOuterMdc[tr]<<endl;
	    }
	}
    }


    if(cand->getRichInd()>-1){
	HRichHitSim* richHit  = (HRichHitSim*)  HParticleTool::getRichHit(cand->getRichInd());
	if(richHit){
	    if(richHit->track1>0) { tracksRich.push_back(richHit->track1); weightRich.push_back(richHit->weigTrack1);   }
	    if(richHit->track2>0) { tracksRich.push_back(richHit->track2); weightRich.push_back(richHit->weigTrack2);   }
	    if(richHit->track3>0) { tracksRich.push_back(richHit->track3); weightRich.push_back(richHit->weigTrack3);   }

	    if(print){
		cout<<"Rich : "<<endl;
		cout<<"         "<<setw(6)<<richHit->track1 <<" ntimes "<<setw(6)<< richHit->weigTrack1<<endl;
		cout<<"         "<<setw(6)<<richHit->track2 <<" ntimes "<<setw(6)<< richHit->weigTrack2<<endl;
		cout<<"         "<<setw(6)<<richHit->track3 <<" ntimes "<<setw(6)<< richHit->weigTrack3<<endl;
	    }

	} else ret = kFALSE;
    }
    HShowerHitSim* shower = 0;
    HEmcClusterSim* emc   = 0;
    
    HTofHitSim*      tofhit = 0;
    HTofClusterSim* tofclst = 0;
    HRpcClusterSim* rpcclst = 0;
    if(cand->isTofHitUsed()) {
	tofhit =(HTofHitSim*) HParticleTool::getTofHit(cand->getTofHitInd());
	if(tofhit){
	    tracksMeta.push_back(tofhit->getNTrack1());
	    tracksMeta.push_back(tofhit->getNTrack2());
	    if(print){
		cout<<"TOF hit : "<<endl;
		cout<<"         "<<setw(6)<<tofhit->getNTrack1()<<" "<<setw(6)<< tofhit->getNTrack2() <<endl;
	    }
	} else {
	    if(print)cout<<"HParticleTool::getSimTracks() : retrieved zero pointer of tofhit!"<<endl;
            ret = kFALSE;
	}
    }

    if(cand->isTofClstUsed()){

	tofclst=(HTofClusterSim*)HParticleTool::getTofCluster(cand->getTofClstInd());
	if(tofclst){
	    if(print){
		cout<<"TOF clst : "<<endl;
		cout<<"         "<<setw(6)<<tofclst->getNTrack1()<<" "<<setw(6)<< tofclst->getNTrack2() <<endl;
	    }
	    tracksMeta.push_back(tofclst->getNTrack1());
	    tracksMeta.push_back(tofclst->getNTrack2());
	} else {
	    if(print)cout<<"HParticleTool::getSimTracks() : retrieved zero pointer of tofclst!"<<endl;
	    ret = kFALSE;
	}
    }

    if(cand->isRpcClstUsed()){

	Int_t tracks[4];
	rpcclst=(HRpcClusterSim*)HParticleTool::getRpcCluster(cand->getRpcInd());

	if(rpcclst){
	    rpcclst->getTrackList(tracks);
	    for(Int_t i=0;i<4;i++){
		if(tracks[i]>0)tracksMeta.push_back(tracks[i]);
	    }
	    if(print){
		cout<<"RPC clst : "<<endl;
		cout<<"         "<<setw(6)<<tracks[0]<<" "<<setw(6)<<tracks[1]<<" "<<setw(6)<<tracks[2]<<" "<<setw(6)<<tracks[3] <<endl;
	    }
	} else {
	    if(print)cout<<"HParticleTool::getSimTracks() : retrieved zero pointer of rpcclst!"<<endl;
	    ret = kFALSE;
	}
    }

    if(cand->isEmc()){
	if(cand->getEmcInd()>-1)
	{
	    emc=(HEmcClusterSim*)HParticleTool::getEmcCluster(cand->getEmcInd());
	    if(emc){
		for(Int_t i=0;i<emc->getNTracks();i++){
		    tracksShowerEcal.push_back(emc->getTrack(i));
		    if(cand->isEmcUsed()) tracksMeta.push_back(emc->getTrack(i));
		}

		if(print) {
		    cout<<"EmcCluster : "<<endl;
		    cout<<"         "<<flush;
		    for(UInt_t i=0;i<tracksShowerEcal.size();i++){
			cout<<setw(6)<<emc->getTrack(i)<<" "<<flush;
		    }
		    cout<<endl;
		}
	    } else ret = kFALSE;
	}
    } else {
	if(cand->getShowerInd()>-1)
	{
	    shower=(HShowerHitSim*)HParticleTool::getShowerHit(cand->getShowerInd());
	    if(shower){
		for(Int_t i=0;i<shower->getNTracks();i++){
		    tracksShowerEcal.push_back(shower->getTrack(i));
		    if(cand->isShowerUsed()) tracksMeta.push_back(shower->getTrack(i));
		}

		if(print) {
		    cout<<"ShowerHit : "<<endl;
		    cout<<"         "<<flush;
		    for(UInt_t i=0;i<tracksShowerEcal.size();i++){
			cout<<setw(6)<<shower->getTrack(i)<<" "<<flush;
		    }
		    cout<<endl;
		}
	    } else ret = kFALSE;
	}
    }
    return ret;
}

Bool_t HParticleTool::printSimTracks(HParticleCandSim* cand)
{
    Bool_t ret = kTRUE;

    cout<<"SIM tracks----------------------------------------------"<<endl;
    HMdcSegSim* seg [2]={0,0};
    seg [0]= (HMdcSegSim*) HParticleTool::getMdcSeg(cand->getInnerSegInd());
    seg [1]= (HMdcSegSim*) HParticleTool::getMdcSeg(cand->getOuterSegInd());
    for(Int_t io=0;io<2;io++){
        if(seg[io]==0) continue;
	cout<<"seg : "<<io<<" , ntr "<<seg[io]->getNTracks()<<" : "<<endl;
	for(Int_t tr=0;tr<seg[io]->getNTracks(); tr++){
	    cout<<"         "<<setw(6)<<(Int_t)seg[io]->getTrack(tr)<<" ntimes "<<setw(6)<<(Int_t) seg[io]->getNTimes(tr)<<endl;
	}
    }


    if(cand->getRichInd()>-1){
	HRichHitSim* richHit  = (HRichHitSim*)  HParticleTool::getRichHit(cand->getRichInd());
	if(richHit){
	    cout<<"Rich : "<<endl;
	    cout<<"         "<<setw(6)<<richHit->track1 <<" ntimes "<<setw(6)<< richHit->weigTrack1<<endl;
	    cout<<"         "<<setw(6)<<richHit->track2 <<" ntimes "<<setw(6)<< richHit->weigTrack2<<endl;
	    cout<<"         "<<setw(6)<<richHit->track3 <<" ntimes "<<setw(6)<< richHit->weigTrack3<<endl;
	} else ret = kFALSE;
    }
    HShowerHitSim* shower   = 0;
    HEmcClusterSim* emc     = 0;
    HTofHitSim* tofhit      = 0;
    HTofClusterSim* tofclst = 0;
    HRpcClusterSim* rpcclst = 0;
    if(cand->isTofHitUsed()) {
	tofhit =(HTofHitSim*) HParticleTool::getTofHit(cand->getTofHitInd());
	if(tofhit){
	    cout<<"TOF hit : "<<endl;
	    cout<<"         "<<setw(6)<<tofhit->getNTrack1()<<" "<<setw(6)<< tofhit->getNTrack2() <<endl;
	} else ret = kFALSE;
    }

    if(cand->isTofClstUsed()){
	
	tofclst=(HTofClusterSim*)HParticleTool::getTofCluster(cand->getTofClstInd());
	if(tofclst){
	    cout<<"TOF clst : "<<endl;
	    cout<<"         "<<setw(6)<<tofclst->getNTrack1()<<" "<<setw(6)<< tofclst->getNTrack2() <<endl;
	} else ret = kFALSE;
    }

    if(cand->isRpcClstUsed()){
	
        Int_t tracks[4];
	rpcclst=(HRpcClusterSim*)HParticleTool::getRpcCluster(cand->getRpcInd());

	if(rpcclst){
	    rpcclst->getTrackList(tracks);

	    cout<<"RPC clst : "<<endl;
	    cout<<"         "<<setw(6)<<tracks[0]<<" "<<setw(6)<<tracks[1]<<" "<<setw(6)<<tracks[2]<<" "<<setw(6)<<tracks[3] <<endl;
	} else ret = kFALSE;
    }
    if(cand->isEmc()){
	if(cand->getEmcInd()>-1){
	    emc = (HEmcClusterSim*)HParticleTool::getEmcCluster(cand->getEmcInd());
	    if(emc){
		cout<<"EmcCluster : "<<endl;
		cout<<"         "<<flush;

		for(Int_t i=0;i<emc->getNTracks();i++){
		    cout<<setw(6)<<emc->getTrack(i)<<" "<<flush;
		}
		cout<<endl;
	    } else ret = kFALSE;
	}
    } else {
	if(cand->getShowerInd()>-1){
	    shower = (HShowerHitSim*)HParticleTool::getShowerHit(cand->getShowerInd());
	    if(shower){
		cout<<"ShowerHit : "<<endl;
		cout<<"         "<<flush;

		for(Int_t i=0;i<shower->getNTracks();i++){
		    cout<<setw(6)<<shower->getTrack(i)<<" "<<flush;
		}
		cout<<endl;
	    } else ret = kFALSE;
	}
    }
    return ret;
}













Bool_t HParticleTool::setPairFlags(UInt_t& flag,HParticleCand* cand2,HParticleCand* cand1)
{
    // evalutates the bitwise flags defined in eClosePairSelect (hparticledef.h)
    // for cand1 (reference for closePair) and cand2. cand1 can be NULL, the comparison
    // for same detector hits will be skipped then.
    //

    if(!cand2) return kFALSE;

    flag = 0;

    //----------------------------------------------------------------------
    // pair stuff
    if(cand1){
	if((cand1->getRichInd()     >= 0 && cand2->getRichInd()     >= 0) || (cand1->getRichInd()     >= 0 && cand2->getRichInd()     < 0)){
	    if( cand1->getRichInd() == cand2->getRichInd() ) flag = kSameRICH;
            else                                             flag = kNoSameRICH;
	}
	if(cand1->getInnerSegInd() >= 0 && cand2->getInnerSegInd() >= 0){
	    if( cand1->getInnerSegInd() == cand2->getInnerSegInd() ) flag = flag|kSameInnerMDC;
            else                                                     flag = flag|kNoSameInnerMDC;
	}
	if(cand1->getOuterSegInd() >= 0 && cand2->getOuterSegInd() >= 0 ){
	    if( cand1->getOuterSegInd() == cand2->getOuterSegInd() ) flag = flag|kSameOuterMDC;
            else                                                     flag = flag|kNoSameOuterMDC;
	}

	if(cand1->getSystemUsed() != -1 && cand2->getSystemUsed() != -1 ){
	    if(     cand1->isTofHitUsed()  && cand2->isTofHitUsed()){
		if( cand1->getTofHitInd()  == cand2->getTofHitInd()  ) flag = flag|kSameMETA;
                else                                                   flag = flag|kNoSameMETA;
	    }
	    else if(cand1->isTofClstUsed() && cand2->isTofClstUsed() ){
		if(cand1->getTofClstInd()  == cand2->getTofClstInd() ) flag = flag|kSameMETA;
		else                                                   flag = flag|kNoSameMETA;
	    }
	    else if(cand1->isRpcClstUsed() && cand2->isRpcClstUsed() ) {
		if (cand1->getRpcInd()     == cand2->getRpcInd())      flag = flag|kSameMETA;
		else                                                   flag = flag|kNoSameMETA;
	    }
	    else if(cand1->isShowerUsed()  && cand2->isShowerUsed()){
		if(cand1->getShowerInd()   == cand2->getShowerInd()  ) flag = flag|kSameMETA;
                else                                                   flag = flag|kNoSameMETA;
	    }
	    else if(cand1->isEmcUsed()  && cand2->isEmcUsed()){
		if(cand1->getEmcInd()   == cand2->getEmcInd()  )       flag = flag|kSameMETA;
                else                                                   flag = flag|kNoSameMETA;
	    }
	    else {                                                     flag = flag|kNoSameMETA;}

	}
	if(cand1->getCharge() != 0 && cand2->getCharge() != 0){
	    if     (cand1->getCharge() > 0 && cand2->getCharge() > 0)    flag = flag|kSamePosPolarity|kSamePolarity;
	    else if(cand1->getCharge() < 0 && cand2->getCharge() < 0)    flag = flag|kSameNegPolarity|kSamePolarity;
	    else if(cand1->getCharge() < 0 && cand2->getCharge() > 0)    flag = flag|kNoSamePosPolarity|kNoSameNegPolarity|kNoSamePolarity;
	    else if(cand1->getCharge() > 0 && cand2->getCharge() < 0)    flag = flag|kNoSamePosPolarity|kNoSameNegPolarity|kNoSamePolarity;
	}

    }
    //----------------------------------------------------------------------
    
    if(cand2->getRichInd() >= 0)          flag = flag|kRICH2;
    else                                  flag = flag|kNoRICH2;

    if(cand2->getInnerSegmentChi2() >= 0) flag = flag|kFittedInnerMDC2;
    else                                  flag = flag|kNoFittedInnerMDC2;

    if(cand2->getOuterSegmentChi2() >= 0) flag = flag|kFittedOuterMDC2;
    else                                  flag = flag|kNoFittedOuterMDC2;

    if(cand2->getOuterSegInd() >= 0 )     flag = flag|kOuterMDC2;
    else                                  flag = flag|kNoOuterMDC2;

    if(cand2->getChi2() >= 0 && cand2->getChi2() < 1e6) flag = flag|kRK2;
    else                                                flag = flag|kNoRK2;

    if(cand2->getSystemUsed() != -1 )                   flag = flag|kMETA2;
    else                                                flag = flag|kNoMETA2;

    if(cand2->isFlagBit(kIsLepton))                     flag = flag|kIsLepton2;
    else                                                flag = flag|kNoIsLepton2;

    if(cand2->isFlagBit(kIsUsed))                       flag = flag|kIsUsed2;
    else                                                flag = flag|kNoIsUsed2;

    return kTRUE;
}


Bool_t  HParticleTool::evalPairsFlags(UInt_t flag,UInt_t fl)
{
    // evalutates the bitwise flags defined in flag (see eClosePairSelect + ePairCase (hparticledef.h)
    // against fl. return kTRUE if all set bit in flag are set in fl too.
    if ( (flag&fl) == flag ) return kTRUE;
    else                     return kFALSE;
}

Bool_t HParticleTool::isPairsFlagsBit(UInt_t flag,UInt_t fl)
{
    // evalutates the bitwise flags defined fl (see eClosePairSelect + ePairCase (hparticledef.h))
    // return kTRUE if all set bits in fl are set in flags too

    if ( (flag&fl) == fl ) return kTRUE;
    else                   return kFALSE;

}
Bool_t  HParticleTool::evalPairsFlags(UInt_t flag,HParticleCand* cand1,HParticleCand* cand2)
{

    // evalutates the bitwise flags defined in eClosePairSelect + ePairCase (hparticledef.h)
    // return kTRUE if all set bit are identical. cand1 as reference for Pair. if flag == 0
    // result will be kTRUE

    if (flag == 0) return kTRUE;

    UInt_t fl = 0;
    HParticleTool::setPairFlags(fl,cand2,cand1);

    return evalPairsFlags(flag,fl);
}

Bool_t  HParticleTool::evalPairsFlags(UInt_t flag,HParticlePair& pair)
{

    // evalutates the bitwise flags defined in eClosePairSelect + ePairCase (hparticledef.h)
    // return kTRUE if all set bit are identical . if flag == 0
    // result will be kTRUE

    if (flag == 0) return kTRUE;

    UInt_t fl = pair.getPairFlags();
    return evalPairsFlags(flag,fl);

    return kTRUE;
}


Bool_t  HParticleTool::evalPairsFlags(vector<UInt_t>& flags,vector<Bool_t>& results,HParticlePair& pair)
{
    // evalutates the bitwise flags defined in eClosePairSelect + ePairCase (hparticledef.h)
    // return kTRUE if one of the flags in vector flags are identical. The result for
    // each individual flag is store in vector results (which will be automaticly cleared before).

    results.clear();
    Bool_t val =kFALSE;
    Bool_t val2=kFALSE;

    for(UInt_t i = 0 ; i < flags.size(); i ++){
	val = HParticleTool::evalPairsFlags(flags[i],pair);
	if(val) val2 = kTRUE;
        results.push_back(val);
    }

    return val2;
}

Bool_t  HParticleTool::evalPairsFlags(vector<UInt_t>& flags,HParticlePair& pair)
{
    // evalutates the bitwise flags defined in eClosePairSelect + ePairCase (hparticledef.h)
    // return kTRUE if one of the flags in vector flags are identical.

    for(UInt_t i = 0 ; i < flags.size(); i ++){
	if(HParticleTool::evalPairsFlags(flags[i],pair)) return kTRUE;
    }

    return kFALSE;
}




Bool_t  HParticleTool::isGoodClusterVertex(Float_t minZ)
{
    // request good chi2 and a z pos > minZ (apr12 typically -65 mm, jul14/aug14 -200)
    // minZ is given in mm
    // if minZ > 0 gHades is used to retrieve the beamTimeID default values

    Float_t minCut = minZ;
    if(gHades && minZ > 0){ // try to get it from gHades

	if(gHades->getBeamTimeID()==Particle::kUnknownBeam) {
	    ::Error("isGoodClusterVertex()","minZ > 0 but no beamTimeID set in gHades");
	    return kFALSE;
	} else if (gHades->getBeamTimeID()==Particle::kApr12) {
	    minCut = -65;
	} else if (gHades->getBeamTimeID()==Particle::kJul14||gHades->getBeamTimeID()==Particle::kAug14) {
	    minCut = -200;
	} else if (gHades->getBeamTimeID()==Particle::kMar19) {
	    minCut = -70;
	}
    } else if(!gHades && minZ > 0) {
	::Error("isGoodClusterVertex()","minZ > 0 but gHades==NULL");
        return kFALSE;
    }

    HVertex& vertexClust   = gHades->getCurrentEvent()->getHeader()->getVertexCluster();
    if(vertexClust.getChi2()>-1 && vertexClust.getZ()>minCut) return kTRUE;
    return kFALSE;
}

Bool_t  HParticleTool::isGoodRecoVertex(Float_t minZ)
{
    // request good chi2 and a z pos > minZ (apr12 typically -65 mm)
    // minZ is given in mm. For good chi2 at least 2 particle cands are needed.
    // if minZ > 0 gHades is used to retrieve the beamTimeID default values

    Float_t minCut = minZ;
    if(gHades && minZ > 0){ // try to get it from gHades

	if(gHades->getBeamTimeID()==Particle::kUnknownBeam) {
	    ::Error("isGoodRecoVertex()","minZ > 0 but no beamTimeID set in gHades");
	    return kFALSE;
	} else if (gHades->getBeamTimeID()==Particle::kApr12) {
	    minCut = -65;
	} else if (gHades->getBeamTimeID()==Particle::kJul14||gHades->getBeamTimeID()==Particle::kAug14) {
	    minCut = -200;
	} else if (gHades->getBeamTimeID()==Particle::kMar19) {
	    minCut = -70;
	}
    } else if(!gHades && minZ > 0) {
	::Error("isGoodRecoVertex()","minZ > 0 but gHades==NULL");
        return kFALSE;
    }

    HVertex& vertexReco    = gHades->getCurrentEvent()->getHeader()->getVertexReco();
    if(vertexReco.getChi2()>-1 && vertexReco.getZ()>minCut) return kTRUE;
    return kFALSE;
}

Bool_t  HParticleTool::isGoodSTART(Int_t minFlag)
{
    // request existing start hit object and starthit->getCorrFlag()>=minFlag
    // REMARK : corrFlags are filled by HParticleStart2HitF (-1,0,1,2).
    // In this case HStart2Hit::getIteration() (0,1,2) gives 2. For Iteration
    // <2 corrFlags are not checked
    // return kFALSE if category is not available

    HCategory* fCatHit = HCategoryManager::getCategory(catStart2Hit,-1);
    if(!fCatHit) return kFALSE;
    if(fCatHit->getEntries()<1) return kFALSE;

    HStart2Hit* starthit = 0;
    starthit = HCategoryManager::getObject(starthit,catStart2Hit,0,kTRUE);
    if(starthit && starthit->getIteration() > 1 && starthit->getCorrFlag()>=minFlag) return kTRUE;
    if(starthit && starthit->getIteration() < 2) return kTRUE;
    return kFALSE;
}

Bool_t  HParticleTool::isNoVETO(Float_t minStart,Float_t maxStart)
{
    // return kTRUE if no VETO hit inside timewindow minStart-maxStart [ns]
    // relative to starttime was found. otherwise kFALSE.
    // requires  catStart2Cal catStart2Hit
    // return kFALSE if category is not available

    HCategory* fCatHit = HCategoryManager::getCategory(catStart2Hit,-1);
    if(!fCatHit) return kFALSE;
    if(fCatHit->getEntries()<1) return kFALSE;

    HStart2Hit* starthit = 0;
    starthit = HCategoryManager::getObject(starthit,catStart2Hit,0,kTRUE);
    if(!starthit) return kFALSE;
    Float_t starttime = starthit->getTime();

    HStart2Cal* pCal = NULL;

    HCategory* fCatCal = HCategoryManager::getCategory(catStart2Cal,-1);
    if(!fCatCal) return kFALSE;
    Bool_t notfound = kTRUE;
    for (Int_t entry = 0; entry < fCatCal->getEntries(); ++entry) {

	if (NULL == (pCal = static_cast<HStart2Cal*>(fCatCal->getObject(entry)))) {  return kFALSE;  }
	if (3 != pCal->getModule()) { continue; }


	for (Int_t i = 0; i < pCal->getMultiplicity() && i < pCal->getMaxMultiplicity(); ++i) {
	    Float_t t = pCal->getTime(i + 1);
            if(t < minStart+starttime || t > maxStart+starttime ) continue;
	    notfound = kFALSE;

	}
    }

    return notfound;
}

Bool_t  HParticleTool::isNoSTART(Float_t minStart,Float_t maxStart,Float_t window)
{
    // return kTRUE if no START hit inside timewindow minStart-maxStart [ns] of the
    // START time was found. otherwise kFALSE. (startime +- window excluded)
    // requires catStart2Hit and catStart2Cal
    // return kFALSE if categories are not available

    HCategory* fCatHit = HCategoryManager::getCategory(catStart2Hit,-1);
    if(!fCatHit) return kFALSE;
    if(fCatHit->getEntries()<1) return kFALSE;

    HStart2Hit* starthit = 0;
    starthit = HCategoryManager::getObject(starthit,catStart2Hit,0,kTRUE);
    if(!starthit) return kFALSE;
    Float_t starttime = starthit->getTime();
    window = fabs(window);

    HStart2Cal* pCal = NULL;

    HCategory* fCatCal = HCategoryManager::getCategory(catStart2Cal,-1);
    if(!fCatCal) return kFALSE;
    Bool_t notfound = kTRUE;
    for (Int_t entry = 0; entry < fCatCal->getEntries(); ++entry) {

	if (NULL == (pCal = static_cast<HStart2Cal*>(fCatCal->getObject(entry)))) {  return kFALSE;  }
	if (pCal->getModule()>1) { continue; }
        

	for (Int_t i = 0; i < pCal->getMultiplicity() && i < pCal->getMaxMultiplicity(); ++i) {
	    Float_t t = pCal->getTime(i + 1);
	    if(fabs(starttime-t)<window)      continue;  // exclude starttime
            if(t < minStart+starttime || t > maxStart+starttime ) continue;
	    notfound = kFALSE;

	}
    }

    return notfound;
}






Bool_t HParticleTool::isGoodSTARTVETO(Float_t minStart,Float_t maxStart, Float_t window)
{
    // return kTRUE is no starthit between minStart [ns] and maxStart [ns]
    // has been found which has no correlation with VETO inside window [ns]
    // +-window arround starthit startime is excluded.
    // requires catStart2Hit + catStart2Cal category. If the categories are
    // not available kFALSE  is returned.
    HCategory* fCatCal = HCategoryManager::getCategory(catStart2Cal,-1);
    if(!fCatCal) return kFALSE;
    window=fabs(window);

    HCategory* fCatHit = HCategoryManager::getCategory(catStart2Hit,-1);
    if(!fCatHit) return kFALSE;
    if(fCatHit->getEntries()<1) return kFALSE;

    HStart2Hit* starthit = 0;
    starthit = HCategoryManager::getObject(starthit,catStart2Hit,0,kTRUE);
    if(!starthit) return kFALSE;
    Float_t starttime = starthit->getTime();

    Bool_t kDontUseEvent = kFALSE;
    HStart2Cal* pCal     = NULL;
    HStart2Cal* pVeto    = NULL;
    //-------------------------------------------------------
    for (Int_t entry = 0; entry < fCatCal->getEntries(); ++entry) {   // loop start
	if (NULL == (pCal = static_cast<HStart2Cal*>(fCatCal->getObject(entry)))) {  return kFALSE;  }
	if (pCal->getModule()>1) { continue; } // only module 0 and 1 (no veto or others)
	for (Int_t i = 0; i < pCal->getMultiplicity() && i < pCal->getMaxMultiplicity(); ++i) { // loop all hits of this strip
	    Float_t t = pCal->getTime(i + 1);
	    if(fabs(t-starttime) < 0.5) continue; // skip StartHit cals
            if(t<minStart+starttime||t>maxStart+starttime) continue;
            if(t<540&&t>520) continue; // exclude reference time

	    Bool_t isCorrelated = kFALSE;
	    //-------------------------------------------------------
	    for (Int_t entry2 = 0; entry2 < fCatCal->getEntries(); ++entry2) {   // loop all veto
		if (NULL == (pVeto = static_cast<HStart2Cal*>(fCatCal->getObject(entry2)))) {  return kFALSE;  }
		if (pVeto->getModule()!=3) { continue; } // only veto
		for (Int_t j = 0; j < pVeto->getMultiplicity() && j < pVeto->getMaxMultiplicity(); ++j) { // loop all hits of this strip
		    Float_t tveto = pVeto->getTime(j + 1);
		    if( fabs(t - tveto ) < window ) {
			isCorrelated = kTRUE;
		    }
		}
	    }
            if(!isCorrelated) kDontUseEvent = kTRUE; //
	    //-------------------------------------------------------
	}
    }
    //-------------------------------------------------------

    if(kDontUseEvent) return kFALSE;
    else              return kTRUE;
}

Bool_t HParticleTool::isGoodSTARTMETA(Float_t minStart,Float_t maxStart,Int_t tresh,Float_t window, Float_t offset)
{
    // search for metahits inside the event which are correlated with
    // late starthits.
    // return kTRUE if in range minStart [ns] to maxStart [ns] of START Hits
    // not more than tresh metahits inside correlation window [ns] are found.
    // offset [ns](apr12 = 7) has to be adjusted to move the fastest particles
    // of good triggered event to 0.
    // requires catRpcHit, catTofHit, catStart2Cal, catStart2Hit. if any of those is missing kFALSE
    // is returned.


    HCategory* rpcCat = HCategoryManager::getCategory(catRpcHit,-1);
    if(!rpcCat) return kFALSE;
    HCategory* tofCat = HCategoryManager::getCategory(catTofHit,-1);
    if(!tofCat) return kFALSE;
    HCategory* fCatCal = HCategoryManager::getCategory(catStart2Cal,-1);
    if(!fCatCal) return kFALSE;

    HCategory* fCatHit = HCategoryManager::getCategory(catStart2Hit,-1);
    if(!fCatHit) return kFALSE;
    if(fCatHit->getEntries()<1) return kFALSE;

    HStart2Hit* starthit = 0;
    starthit = HCategoryManager::getObject(starthit,catStart2Hit,0,kTRUE);
    if(!starthit) return kFALSE;
    Float_t starttime = starthit->getTime();


    Bool_t kDontUseEvent   = kFALSE;
    Int_t  ctBad    = 0;

    HStart2Cal* pCal = NULL;

    for(Int_t j=0;j<rpcCat->getEntries();j++){    // rpc loop
	HRpcHit* rpc = (HRpcHit*)rpcCat->getObject(j);
	if(!rpc) return kFALSE;

        //-------------------------------------------------------
	for (Int_t entry = 0; entry < fCatCal->getEntries(); ++entry) {
	    if (NULL == (pCal = static_cast<HStart2Cal*>(fCatCal->getObject(entry)))) {  return kFALSE;  }
	    if (pCal->getModule()>1) { continue; } // only module 0 and 1 (no veto or others)
	    for (Int_t i = 0; i < pCal->getMultiplicity() && i < pCal->getMaxMultiplicity(); ++i) { // loop all hits of this strip
		Float_t t = pCal->getTime(i + 1);
		if(fabs(t-starttime) < 0.5) continue; // skip StartHit cals
                if(t<minStart+starttime||t>maxStart+starttime || (t<540&&t>520)) continue;   // exclude reference time
                if(starttime + rpc->getTof() - t - offset > 0 && starttime + rpc->getTof() - t - offset < window) { ctBad ++; kDontUseEvent = kTRUE;};
	    }
	}
        //-------------------------------------------------------
    }

    for(Int_t j=0;j<tofCat->getEntries();j++){  // tof loop
	HTofHit* tof = (HTofHit*)tofCat->getObject(j);
	if(!tof) return kFALSE;
        //-------------------------------------------------------
	for (Int_t entry = 0; entry < fCatCal->getEntries(); ++entry) {
	    if (NULL == (pCal = static_cast<HStart2Cal*>(fCatCal->getObject(entry)))) {  return kFALSE;  }
	    if (pCal->getModule()>1) { continue; } // only module 0 and 1 (no veto or others)
	    for (Int_t i = 0; i < pCal->getMultiplicity() && i < pCal->getMaxMultiplicity(); ++i) { // loop all hits of this strip
		Float_t t = pCal->getTime(i + 1);
		if(fabs(t-starttime) < 0.5) continue; // skip StartHit cals
		if(t<minStart||t>maxStart || (t<540&&t>520)) continue;   // exclude reference time
		if(starttime + tof->getTof() - t - offset > 0 && starttime + tof->getTof() - t - offset < window) { ctBad ++; kDontUseEvent = kTRUE;}
	    }
	}
        //-------------------------------------------------------

    }
    if(kDontUseEvent&&ctBad>tresh) {return kFALSE;}
    else                            return kTRUE;
}



Bool_t  HParticleTool::isNoSTARTPileUp()
{
    // request existing start hit object and starthit->getMultiplicity()==1
    // return kFALSE if categories are not available

    HCategory* fCatHit = HCategoryManager::getCategory(catStart2Hit,-1);
    if(!fCatHit) return kFALSE;
    if(fCatHit->getEntries()<1) return kFALSE;

    HStart2Hit* starthit = 0;
    starthit = HCategoryManager::getObject(starthit,catStart2Hit,0,kTRUE);
    if(starthit && starthit->getMultiplicity()==1) return kTRUE;
    return kFALSE;
}


Bool_t  HParticleTool::isNoMETAPileUp(Float_t ftimeTofCut,Int_t threshold)
{
    // loops TofHit and RpcCluster and counds objects with tof < 0
    // or tof > ftimeTofCut. if n > threshold (pileup) kFALSE is returned
    // if tofhit and rpccluster cateories are not available kTRUE is returned
    // if threshold < 0 gHades is used to retrieve the beamTimeID default values

    Int_t thresh = threshold;

    if(gHades && threshold < 0){ // try to get it from gHades

	if(gHades->getBeamTimeID()==Particle::kUnknownBeam) {
	    ::Error("isNoMETAPileUp()","threshold < 0 but no beamTimeID set in gHades");
	    return kFALSE;
	} else if (gHades->getBeamTimeID()==Particle::kApr12) {
	    thresh = 5*7;
	} else if (gHades->getBeamTimeID()==Particle::kJul14||gHades->getBeamTimeID()==Particle::kAug14) {
	    thresh = 7;
	} else if (gHades->getBeamTimeID()==Particle::kMar19) {
	    thresh = 5*7;
	}
    } else if(!gHades && threshold < 0) {
	::Error("isNoMETAPileUp()","threshold < 0 but gHades==NULL");
        return kFALSE;
    }


    HCategory* tofhitCat   = HCategoryManager::getCategory(catTofHit,-1);
    HCategory* rpcclustCat = HCategoryManager::getCategory(catRpcCluster,-1);

    if(tofhitCat&&rpcclustCat){
        HTofHit* tofhit=0;
        HRpcCluster* rpccluster=0;

        Int_t N=0;

	Int_t n = tofhitCat ->getEntries();
	for(Int_t i=0;i<n;i++){
	    tofhit = HCategoryManager::getObject(tofhit,tofhitCat,i);
            if(tofhit &&  tofhit->getTof() > ftimeTofCut && tofhit->getTof() < 0 ) N++;
	}
	n = rpcclustCat ->getEntries();
	for(Int_t i=0;i<n;i++){
	    rpccluster = HCategoryManager::getObject(rpccluster,rpcclustCat,i);
            if(rpccluster && rpccluster ->getTof() > ftimeTofCut && rpccluster->getTof() < 0 ) N++;
	}

	if(N>thresh) return kFALSE;
        else         return kTRUE;


    } else return kTRUE; // if there is nothing to check its ok :-)

}

Bool_t HParticleTool::isGoodTrigger(Int_t triggerbit)
{
    // test if the triggerbit is set ( bit number is pt (physics trigger) + 10)
    // example : pt3 -> 13
    // if triggerbit < 0 gHades is used to retrieve the beamTimeID default values

    if(triggerbit > 0 && triggerbit < 10){
	::Error("isGoodTrigger()","triggerbit has to be larger 10 (pt+10)");
	return kFALSE;
    }
    Int_t tbit = triggerbit;
    if(gHades && triggerbit < 0){ // try to get it from gHades

	if(gHades->getBeamTimeID()==Particle::kUnknownBeam) {
	    ::Error("isGoodTrigger()","triggerbit < 0 but no beamTimeID set in gHades");
	    return kFALSE;
	} else if (gHades->getBeamTimeID()==Particle::kApr12) {
	    tbit = 13;
	} else if (gHades->getBeamTimeID()==Particle::kJul14||gHades->getBeamTimeID()==Particle::kAug14) {
	    tbit = 11;
	} else if (gHades->getBeamTimeID()==Particle::kMar19) {
	    tbit = 13;
	}
    } else if(!gHades && triggerbit < 0) {
	::Error("isGoodTrigger()","triggerbit < 0 but gHades==NULL");
        return kFALSE;
    }

    if(gHades->getCurrentEvent()->getHeader()->isTBit(tbit)) return kTRUE;
    return kFALSE;
}


Int_t HParticleTool::getTofHitMult(Float_t minTof,Float_t maxTof, Int_t* sector)
{
    // return the TofHit multiplicity between minTof and maxTof. if sector
    // (pointer to Int_t sector[6]) is not NULL sectorwise mult is filled.
    // the array is rest to 0 before. requires catTofHit
    HCategory* tofhitCat = HCategoryManager::getCategory(catTofHit);
    Int_t ct = 0;
    if(tofhitCat)
    {
        if(sector) for(Int_t i=0;i<6;i++) sector[i] =0;
	Int_t size = tofhitCat->getEntries();
	HTofHit* hit=0;
	for(Int_t j = 0; j < size; j++) {
	    hit = HCategoryManager::getObject(hit,tofhitCat,j);
	    if(hit) {
		if(hit->getTof()>minTof&&hit->getTof()<maxTof){
		    ct++;
                    if(sector) sector[(Int_t)hit->getSector()]++;
		}
	    }
	}
    }
    return ct;
}

Int_t HParticleTool::getRpcHitMult(Float_t minTof,Float_t maxTof, Int_t* sector)
{
    // return the RpcHit multiplicity between minTof and maxTof. if sector
    // (pointer to Int_t sector[6]) is not NULL sectorwise mult is filled.
    // the array is rest to 0 before. requires catRpcHit.
    HCategory* rpchitCat = HCategoryManager::getCategory(catRpcHit);
    Int_t ct = 0;
    if(rpchitCat)
    {
        if(sector) for(Int_t i=0;i<6;i++) sector[i] =0;
	Int_t size = rpchitCat->getEntries();
	HRpcHit* hit=0;
	for(Int_t j = 0; j < size; j++) {
	    hit = HCategoryManager::getObject(hit,rpchitCat,j);
	    if(hit) {
		if(hit->getTof()>minTof&&hit->getTof()<maxTof){
		    ct++;
                    if(sector) sector[hit->getSector()]++;
		}
	    }
	}
    }
    return ct;
}
 hparticletool.cc:1
 hparticletool.cc:2
 hparticletool.cc:3
 hparticletool.cc:4
 hparticletool.cc:5
 hparticletool.cc:6
 hparticletool.cc:7
 hparticletool.cc:8
 hparticletool.cc:9
 hparticletool.cc:10
 hparticletool.cc:11
 hparticletool.cc:12
 hparticletool.cc:13
 hparticletool.cc:14
 hparticletool.cc:15
 hparticletool.cc:16
 hparticletool.cc:17
 hparticletool.cc:18
 hparticletool.cc:19
 hparticletool.cc:20
 hparticletool.cc:21
 hparticletool.cc:22
 hparticletool.cc:23
 hparticletool.cc:24
 hparticletool.cc:25
 hparticletool.cc:26
 hparticletool.cc:27
 hparticletool.cc:28
 hparticletool.cc:29
 hparticletool.cc:30
 hparticletool.cc:31
 hparticletool.cc:32
 hparticletool.cc:33
 hparticletool.cc:34
 hparticletool.cc:35
 hparticletool.cc:36
 hparticletool.cc:37
 hparticletool.cc:38
 hparticletool.cc:39
 hparticletool.cc:40
 hparticletool.cc:41
 hparticletool.cc:42
 hparticletool.cc:43
 hparticletool.cc:44
 hparticletool.cc:45
 hparticletool.cc:46
 hparticletool.cc:47
 hparticletool.cc:48
 hparticletool.cc:49
 hparticletool.cc:50
 hparticletool.cc:51
 hparticletool.cc:52
 hparticletool.cc:53
 hparticletool.cc:54
 hparticletool.cc:55
 hparticletool.cc:56
 hparticletool.cc:57
 hparticletool.cc:58
 hparticletool.cc:59
 hparticletool.cc:60
 hparticletool.cc:61
 hparticletool.cc:62
 hparticletool.cc:63
 hparticletool.cc:64
 hparticletool.cc:65
 hparticletool.cc:66
 hparticletool.cc:67
 hparticletool.cc:68
 hparticletool.cc:69
 hparticletool.cc:70
 hparticletool.cc:71
 hparticletool.cc:72
 hparticletool.cc:73
 hparticletool.cc:74
 hparticletool.cc:75
 hparticletool.cc:76
 hparticletool.cc:77
 hparticletool.cc:78
 hparticletool.cc:79
 hparticletool.cc:80
 hparticletool.cc:81
 hparticletool.cc:82
 hparticletool.cc:83
 hparticletool.cc:84
 hparticletool.cc:85
 hparticletool.cc:86
 hparticletool.cc:87
 hparticletool.cc:88
 hparticletool.cc:89
 hparticletool.cc:90
 hparticletool.cc:91
 hparticletool.cc:92
 hparticletool.cc:93
 hparticletool.cc:94
 hparticletool.cc:95
 hparticletool.cc:96
 hparticletool.cc:97
 hparticletool.cc:98
 hparticletool.cc:99
 hparticletool.cc:100
 hparticletool.cc:101
 hparticletool.cc:102
 hparticletool.cc:103
 hparticletool.cc:104
 hparticletool.cc:105
 hparticletool.cc:106
 hparticletool.cc:107
 hparticletool.cc:108
 hparticletool.cc:109
 hparticletool.cc:110
 hparticletool.cc:111
 hparticletool.cc:112
 hparticletool.cc:113
 hparticletool.cc:114
 hparticletool.cc:115
 hparticletool.cc:116
 hparticletool.cc:117
 hparticletool.cc:118
 hparticletool.cc:119
 hparticletool.cc:120
 hparticletool.cc:121
 hparticletool.cc:122
 hparticletool.cc:123
 hparticletool.cc:124
 hparticletool.cc:125
 hparticletool.cc:126
 hparticletool.cc:127
 hparticletool.cc:128
 hparticletool.cc:129
 hparticletool.cc:130
 hparticletool.cc:131
 hparticletool.cc:132
 hparticletool.cc:133
 hparticletool.cc:134
 hparticletool.cc:135
 hparticletool.cc:136
 hparticletool.cc:137
 hparticletool.cc:138
 hparticletool.cc:139
 hparticletool.cc:140
 hparticletool.cc:141
 hparticletool.cc:142
 hparticletool.cc:143
 hparticletool.cc:144
 hparticletool.cc:145
 hparticletool.cc:146
 hparticletool.cc:147
 hparticletool.cc:148
 hparticletool.cc:149
 hparticletool.cc:150
 hparticletool.cc:151
 hparticletool.cc:152
 hparticletool.cc:153
 hparticletool.cc:154
 hparticletool.cc:155
 hparticletool.cc:156
 hparticletool.cc:157
 hparticletool.cc:158
 hparticletool.cc:159
 hparticletool.cc:160
 hparticletool.cc:161
 hparticletool.cc:162
 hparticletool.cc:163
 hparticletool.cc:164
 hparticletool.cc:165
 hparticletool.cc:166
 hparticletool.cc:167
 hparticletool.cc:168
 hparticletool.cc:169
 hparticletool.cc:170
 hparticletool.cc:171
 hparticletool.cc:172
 hparticletool.cc:173
 hparticletool.cc:174
 hparticletool.cc:175
 hparticletool.cc:176
 hparticletool.cc:177
 hparticletool.cc:178
 hparticletool.cc:179
 hparticletool.cc:180
 hparticletool.cc:181
 hparticletool.cc:182
 hparticletool.cc:183
 hparticletool.cc:184
 hparticletool.cc:185
 hparticletool.cc:186
 hparticletool.cc:187
 hparticletool.cc:188
 hparticletool.cc:189
 hparticletool.cc:190
 hparticletool.cc:191
 hparticletool.cc:192
 hparticletool.cc:193
 hparticletool.cc:194
 hparticletool.cc:195
 hparticletool.cc:196
 hparticletool.cc:197
 hparticletool.cc:198
 hparticletool.cc:199
 hparticletool.cc:200
 hparticletool.cc:201
 hparticletool.cc:202
 hparticletool.cc:203
 hparticletool.cc:204
 hparticletool.cc:205
 hparticletool.cc:206
 hparticletool.cc:207
 hparticletool.cc:208
 hparticletool.cc:209
 hparticletool.cc:210
 hparticletool.cc:211
 hparticletool.cc:212
 hparticletool.cc:213
 hparticletool.cc:214
 hparticletool.cc:215
 hparticletool.cc:216
 hparticletool.cc:217
 hparticletool.cc:218
 hparticletool.cc:219
 hparticletool.cc:220
 hparticletool.cc:221
 hparticletool.cc:222
 hparticletool.cc:223
 hparticletool.cc:224
 hparticletool.cc:225
 hparticletool.cc:226
 hparticletool.cc:227
 hparticletool.cc:228
 hparticletool.cc:229
 hparticletool.cc:230
 hparticletool.cc:231
 hparticletool.cc:232
 hparticletool.cc:233
 hparticletool.cc:234
 hparticletool.cc:235
 hparticletool.cc:236
 hparticletool.cc:237
 hparticletool.cc:238
 hparticletool.cc:239
 hparticletool.cc:240
 hparticletool.cc:241
 hparticletool.cc:242
 hparticletool.cc:243
 hparticletool.cc:244
 hparticletool.cc:245
 hparticletool.cc:246
 hparticletool.cc:247
 hparticletool.cc:248
 hparticletool.cc:249
 hparticletool.cc:250
 hparticletool.cc:251
 hparticletool.cc:252
 hparticletool.cc:253
 hparticletool.cc:254
 hparticletool.cc:255
 hparticletool.cc:256
 hparticletool.cc:257
 hparticletool.cc:258
 hparticletool.cc:259
 hparticletool.cc:260
 hparticletool.cc:261
 hparticletool.cc:262
 hparticletool.cc:263
 hparticletool.cc:264
 hparticletool.cc:265
 hparticletool.cc:266
 hparticletool.cc:267
 hparticletool.cc:268
 hparticletool.cc:269
 hparticletool.cc:270
 hparticletool.cc:271
 hparticletool.cc:272
 hparticletool.cc:273
 hparticletool.cc:274
 hparticletool.cc:275
 hparticletool.cc:276
 hparticletool.cc:277
 hparticletool.cc:278
 hparticletool.cc:279
 hparticletool.cc:280
 hparticletool.cc:281
 hparticletool.cc:282
 hparticletool.cc:283
 hparticletool.cc:284
 hparticletool.cc:285
 hparticletool.cc:286
 hparticletool.cc:287
 hparticletool.cc:288
 hparticletool.cc:289
 hparticletool.cc:290
 hparticletool.cc:291
 hparticletool.cc:292
 hparticletool.cc:293
 hparticletool.cc:294
 hparticletool.cc:295
 hparticletool.cc:296
 hparticletool.cc:297
 hparticletool.cc:298
 hparticletool.cc:299
 hparticletool.cc:300
 hparticletool.cc:301
 hparticletool.cc:302
 hparticletool.cc:303
 hparticletool.cc:304
 hparticletool.cc:305
 hparticletool.cc:306
 hparticletool.cc:307
 hparticletool.cc:308
 hparticletool.cc:309
 hparticletool.cc:310
 hparticletool.cc:311
 hparticletool.cc:312
 hparticletool.cc:313
 hparticletool.cc:314
 hparticletool.cc:315
 hparticletool.cc:316
 hparticletool.cc:317
 hparticletool.cc:318
 hparticletool.cc:319
 hparticletool.cc:320
 hparticletool.cc:321
 hparticletool.cc:322
 hparticletool.cc:323
 hparticletool.cc:324
 hparticletool.cc:325
 hparticletool.cc:326
 hparticletool.cc:327
 hparticletool.cc:328
 hparticletool.cc:329
 hparticletool.cc:330
 hparticletool.cc:331
 hparticletool.cc:332
 hparticletool.cc:333
 hparticletool.cc:334
 hparticletool.cc:335
 hparticletool.cc:336
 hparticletool.cc:337
 hparticletool.cc:338
 hparticletool.cc:339
 hparticletool.cc:340
 hparticletool.cc:341
 hparticletool.cc:342
 hparticletool.cc:343
 hparticletool.cc:344
 hparticletool.cc:345
 hparticletool.cc:346
 hparticletool.cc:347
 hparticletool.cc:348
 hparticletool.cc:349
 hparticletool.cc:350
 hparticletool.cc:351
 hparticletool.cc:352
 hparticletool.cc:353
 hparticletool.cc:354
 hparticletool.cc:355
 hparticletool.cc:356
 hparticletool.cc:357
 hparticletool.cc:358
 hparticletool.cc:359
 hparticletool.cc:360
 hparticletool.cc:361
 hparticletool.cc:362
 hparticletool.cc:363
 hparticletool.cc:364
 hparticletool.cc:365
 hparticletool.cc:366
 hparticletool.cc:367
 hparticletool.cc:368
 hparticletool.cc:369
 hparticletool.cc:370
 hparticletool.cc:371
 hparticletool.cc:372
 hparticletool.cc:373
 hparticletool.cc:374
 hparticletool.cc:375
 hparticletool.cc:376
 hparticletool.cc:377
 hparticletool.cc:378
 hparticletool.cc:379
 hparticletool.cc:380
 hparticletool.cc:381
 hparticletool.cc:382
 hparticletool.cc:383
 hparticletool.cc:384
 hparticletool.cc:385
 hparticletool.cc:386
 hparticletool.cc:387
 hparticletool.cc:388
 hparticletool.cc:389
 hparticletool.cc:390
 hparticletool.cc:391
 hparticletool.cc:392
 hparticletool.cc:393
 hparticletool.cc:394
 hparticletool.cc:395
 hparticletool.cc:396
 hparticletool.cc:397
 hparticletool.cc:398
 hparticletool.cc:399
 hparticletool.cc:400
 hparticletool.cc:401
 hparticletool.cc:402
 hparticletool.cc:403
 hparticletool.cc:404
 hparticletool.cc:405
 hparticletool.cc:406
 hparticletool.cc:407
 hparticletool.cc:408
 hparticletool.cc:409
 hparticletool.cc:410
 hparticletool.cc:411
 hparticletool.cc:412
 hparticletool.cc:413
 hparticletool.cc:414
 hparticletool.cc:415
 hparticletool.cc:416
 hparticletool.cc:417
 hparticletool.cc:418
 hparticletool.cc:419
 hparticletool.cc:420
 hparticletool.cc:421
 hparticletool.cc:422
 hparticletool.cc:423
 hparticletool.cc:424
 hparticletool.cc:425
 hparticletool.cc:426
 hparticletool.cc:427
 hparticletool.cc:428
 hparticletool.cc:429
 hparticletool.cc:430
 hparticletool.cc:431
 hparticletool.cc:432
 hparticletool.cc:433
 hparticletool.cc:434
 hparticletool.cc:435
 hparticletool.cc:436
 hparticletool.cc:437
 hparticletool.cc:438
 hparticletool.cc:439
 hparticletool.cc:440
 hparticletool.cc:441
 hparticletool.cc:442
 hparticletool.cc:443
 hparticletool.cc:444
 hparticletool.cc:445
 hparticletool.cc:446
 hparticletool.cc:447
 hparticletool.cc:448
 hparticletool.cc:449
 hparticletool.cc:450
 hparticletool.cc:451
 hparticletool.cc:452
 hparticletool.cc:453
 hparticletool.cc:454
 hparticletool.cc:455
 hparticletool.cc:456
 hparticletool.cc:457
 hparticletool.cc:458
 hparticletool.cc:459
 hparticletool.cc:460
 hparticletool.cc:461
 hparticletool.cc:462
 hparticletool.cc:463
 hparticletool.cc:464
 hparticletool.cc:465
 hparticletool.cc:466
 hparticletool.cc:467
 hparticletool.cc:468
 hparticletool.cc:469
 hparticletool.cc:470
 hparticletool.cc:471
 hparticletool.cc:472
 hparticletool.cc:473
 hparticletool.cc:474
 hparticletool.cc:475
 hparticletool.cc:476
 hparticletool.cc:477
 hparticletool.cc:478
 hparticletool.cc:479
 hparticletool.cc:480
 hparticletool.cc:481
 hparticletool.cc:482
 hparticletool.cc:483
 hparticletool.cc:484
 hparticletool.cc:485
 hparticletool.cc:486
 hparticletool.cc:487
 hparticletool.cc:488
 hparticletool.cc:489
 hparticletool.cc:490
 hparticletool.cc:491
 hparticletool.cc:492
 hparticletool.cc:493
 hparticletool.cc:494
 hparticletool.cc:495
 hparticletool.cc:496
 hparticletool.cc:497
 hparticletool.cc:498
 hparticletool.cc:499
 hparticletool.cc:500
 hparticletool.cc:501
 hparticletool.cc:502
 hparticletool.cc:503
 hparticletool.cc:504
 hparticletool.cc:505
 hparticletool.cc:506
 hparticletool.cc:507
 hparticletool.cc:508
 hparticletool.cc:509
 hparticletool.cc:510
 hparticletool.cc:511
 hparticletool.cc:512
 hparticletool.cc:513
 hparticletool.cc:514
 hparticletool.cc:515
 hparticletool.cc:516
 hparticletool.cc:517
 hparticletool.cc:518
 hparticletool.cc:519
 hparticletool.cc:520
 hparticletool.cc:521
 hparticletool.cc:522
 hparticletool.cc:523
 hparticletool.cc:524
 hparticletool.cc:525
 hparticletool.cc:526
 hparticletool.cc:527
 hparticletool.cc:528
 hparticletool.cc:529
 hparticletool.cc:530
 hparticletool.cc:531
 hparticletool.cc:532
 hparticletool.cc:533
 hparticletool.cc:534
 hparticletool.cc:535
 hparticletool.cc:536
 hparticletool.cc:537
 hparticletool.cc:538
 hparticletool.cc:539
 hparticletool.cc:540
 hparticletool.cc:541
 hparticletool.cc:542
 hparticletool.cc:543
 hparticletool.cc:544
 hparticletool.cc:545
 hparticletool.cc:546
 hparticletool.cc:547
 hparticletool.cc:548
 hparticletool.cc:549
 hparticletool.cc:550
 hparticletool.cc:551
 hparticletool.cc:552
 hparticletool.cc:553
 hparticletool.cc:554
 hparticletool.cc:555
 hparticletool.cc:556
 hparticletool.cc:557
 hparticletool.cc:558
 hparticletool.cc:559
 hparticletool.cc:560
 hparticletool.cc:561
 hparticletool.cc:562
 hparticletool.cc:563
 hparticletool.cc:564
 hparticletool.cc:565
 hparticletool.cc:566
 hparticletool.cc:567
 hparticletool.cc:568
 hparticletool.cc:569
 hparticletool.cc:570
 hparticletool.cc:571
 hparticletool.cc:572
 hparticletool.cc:573
 hparticletool.cc:574
 hparticletool.cc:575
 hparticletool.cc:576
 hparticletool.cc:577
 hparticletool.cc:578
 hparticletool.cc:579
 hparticletool.cc:580
 hparticletool.cc:581
 hparticletool.cc:582
 hparticletool.cc:583
 hparticletool.cc:584
 hparticletool.cc:585
 hparticletool.cc:586
 hparticletool.cc:587
 hparticletool.cc:588
 hparticletool.cc:589
 hparticletool.cc:590
 hparticletool.cc:591
 hparticletool.cc:592
 hparticletool.cc:593
 hparticletool.cc:594
 hparticletool.cc:595
 hparticletool.cc:596
 hparticletool.cc:597
 hparticletool.cc:598
 hparticletool.cc:599
 hparticletool.cc:600
 hparticletool.cc:601
 hparticletool.cc:602
 hparticletool.cc:603
 hparticletool.cc:604
 hparticletool.cc:605
 hparticletool.cc:606
 hparticletool.cc:607
 hparticletool.cc:608
 hparticletool.cc:609
 hparticletool.cc:610
 hparticletool.cc:611
 hparticletool.cc:612
 hparticletool.cc:613
 hparticletool.cc:614
 hparticletool.cc:615
 hparticletool.cc:616
 hparticletool.cc:617
 hparticletool.cc:618
 hparticletool.cc:619
 hparticletool.cc:620
 hparticletool.cc:621
 hparticletool.cc:622
 hparticletool.cc:623
 hparticletool.cc:624
 hparticletool.cc:625
 hparticletool.cc:626
 hparticletool.cc:627
 hparticletool.cc:628
 hparticletool.cc:629
 hparticletool.cc:630
 hparticletool.cc:631
 hparticletool.cc:632
 hparticletool.cc:633
 hparticletool.cc:634
 hparticletool.cc:635
 hparticletool.cc:636
 hparticletool.cc:637
 hparticletool.cc:638
 hparticletool.cc:639
 hparticletool.cc:640
 hparticletool.cc:641
 hparticletool.cc:642
 hparticletool.cc:643
 hparticletool.cc:644
 hparticletool.cc:645
 hparticletool.cc:646
 hparticletool.cc:647
 hparticletool.cc:648
 hparticletool.cc:649
 hparticletool.cc:650
 hparticletool.cc:651
 hparticletool.cc:652
 hparticletool.cc:653
 hparticletool.cc:654
 hparticletool.cc:655
 hparticletool.cc:656
 hparticletool.cc:657
 hparticletool.cc:658
 hparticletool.cc:659
 hparticletool.cc:660
 hparticletool.cc:661
 hparticletool.cc:662
 hparticletool.cc:663
 hparticletool.cc:664
 hparticletool.cc:665
 hparticletool.cc:666
 hparticletool.cc:667
 hparticletool.cc:668
 hparticletool.cc:669
 hparticletool.cc:670
 hparticletool.cc:671
 hparticletool.cc:672
 hparticletool.cc:673
 hparticletool.cc:674
 hparticletool.cc:675
 hparticletool.cc:676
 hparticletool.cc:677
 hparticletool.cc:678
 hparticletool.cc:679
 hparticletool.cc:680
 hparticletool.cc:681
 hparticletool.cc:682
 hparticletool.cc:683
 hparticletool.cc:684
 hparticletool.cc:685
 hparticletool.cc:686
 hparticletool.cc:687
 hparticletool.cc:688
 hparticletool.cc:689
 hparticletool.cc:690
 hparticletool.cc:691
 hparticletool.cc:692
 hparticletool.cc:693
 hparticletool.cc:694
 hparticletool.cc:695
 hparticletool.cc:696
 hparticletool.cc:697
 hparticletool.cc:698
 hparticletool.cc:699
 hparticletool.cc:700
 hparticletool.cc:701
 hparticletool.cc:702
 hparticletool.cc:703
 hparticletool.cc:704
 hparticletool.cc:705
 hparticletool.cc:706
 hparticletool.cc:707
 hparticletool.cc:708
 hparticletool.cc:709
 hparticletool.cc:710
 hparticletool.cc:711
 hparticletool.cc:712
 hparticletool.cc:713
 hparticletool.cc:714
 hparticletool.cc:715
 hparticletool.cc:716
 hparticletool.cc:717
 hparticletool.cc:718
 hparticletool.cc:719
 hparticletool.cc:720
 hparticletool.cc:721
 hparticletool.cc:722
 hparticletool.cc:723
 hparticletool.cc:724
 hparticletool.cc:725
 hparticletool.cc:726
 hparticletool.cc:727
 hparticletool.cc:728
 hparticletool.cc:729
 hparticletool.cc:730
 hparticletool.cc:731
 hparticletool.cc:732
 hparticletool.cc:733
 hparticletool.cc:734
 hparticletool.cc:735
 hparticletool.cc:736
 hparticletool.cc:737
 hparticletool.cc:738
 hparticletool.cc:739
 hparticletool.cc:740
 hparticletool.cc:741
 hparticletool.cc:742
 hparticletool.cc:743
 hparticletool.cc:744
 hparticletool.cc:745
 hparticletool.cc:746
 hparticletool.cc:747
 hparticletool.cc:748
 hparticletool.cc:749
 hparticletool.cc:750
 hparticletool.cc:751
 hparticletool.cc:752
 hparticletool.cc:753
 hparticletool.cc:754
 hparticletool.cc:755
 hparticletool.cc:756
 hparticletool.cc:757
 hparticletool.cc:758
 hparticletool.cc:759
 hparticletool.cc:760
 hparticletool.cc:761
 hparticletool.cc:762
 hparticletool.cc:763
 hparticletool.cc:764
 hparticletool.cc:765
 hparticletool.cc:766
 hparticletool.cc:767
 hparticletool.cc:768
 hparticletool.cc:769
 hparticletool.cc:770
 hparticletool.cc:771
 hparticletool.cc:772
 hparticletool.cc:773
 hparticletool.cc:774
 hparticletool.cc:775
 hparticletool.cc:776
 hparticletool.cc:777
 hparticletool.cc:778
 hparticletool.cc:779
 hparticletool.cc:780
 hparticletool.cc:781
 hparticletool.cc:782
 hparticletool.cc:783
 hparticletool.cc:784
 hparticletool.cc:785
 hparticletool.cc:786
 hparticletool.cc:787
 hparticletool.cc:788
 hparticletool.cc:789
 hparticletool.cc:790
 hparticletool.cc:791
 hparticletool.cc:792
 hparticletool.cc:793
 hparticletool.cc:794
 hparticletool.cc:795
 hparticletool.cc:796
 hparticletool.cc:797
 hparticletool.cc:798
 hparticletool.cc:799
 hparticletool.cc:800
 hparticletool.cc:801
 hparticletool.cc:802
 hparticletool.cc:803
 hparticletool.cc:804
 hparticletool.cc:805
 hparticletool.cc:806
 hparticletool.cc:807
 hparticletool.cc:808
 hparticletool.cc:809
 hparticletool.cc:810
 hparticletool.cc:811
 hparticletool.cc:812
 hparticletool.cc:813
 hparticletool.cc:814
 hparticletool.cc:815
 hparticletool.cc:816
 hparticletool.cc:817
 hparticletool.cc:818
 hparticletool.cc:819
 hparticletool.cc:820
 hparticletool.cc:821
 hparticletool.cc:822
 hparticletool.cc:823
 hparticletool.cc:824
 hparticletool.cc:825
 hparticletool.cc:826
 hparticletool.cc:827
 hparticletool.cc:828
 hparticletool.cc:829
 hparticletool.cc:830
 hparticletool.cc:831
 hparticletool.cc:832
 hparticletool.cc:833
 hparticletool.cc:834
 hparticletool.cc:835
 hparticletool.cc:836
 hparticletool.cc:837
 hparticletool.cc:838
 hparticletool.cc:839
 hparticletool.cc:840
 hparticletool.cc:841
 hparticletool.cc:842
 hparticletool.cc:843
 hparticletool.cc:844
 hparticletool.cc:845
 hparticletool.cc:846
 hparticletool.cc:847
 hparticletool.cc:848
 hparticletool.cc:849
 hparticletool.cc:850
 hparticletool.cc:851
 hparticletool.cc:852
 hparticletool.cc:853
 hparticletool.cc:854
 hparticletool.cc:855
 hparticletool.cc:856
 hparticletool.cc:857
 hparticletool.cc:858
 hparticletool.cc:859
 hparticletool.cc:860
 hparticletool.cc:861
 hparticletool.cc:862
 hparticletool.cc:863
 hparticletool.cc:864
 hparticletool.cc:865
 hparticletool.cc:866
 hparticletool.cc:867
 hparticletool.cc:868
 hparticletool.cc:869
 hparticletool.cc:870
 hparticletool.cc:871
 hparticletool.cc:872
 hparticletool.cc:873
 hparticletool.cc:874
 hparticletool.cc:875
 hparticletool.cc:876
 hparticletool.cc:877
 hparticletool.cc:878
 hparticletool.cc:879
 hparticletool.cc:880
 hparticletool.cc:881
 hparticletool.cc:882
 hparticletool.cc:883
 hparticletool.cc:884
 hparticletool.cc:885
 hparticletool.cc:886
 hparticletool.cc:887
 hparticletool.cc:888
 hparticletool.cc:889
 hparticletool.cc:890
 hparticletool.cc:891
 hparticletool.cc:892
 hparticletool.cc:893
 hparticletool.cc:894
 hparticletool.cc:895
 hparticletool.cc:896
 hparticletool.cc:897
 hparticletool.cc:898
 hparticletool.cc:899
 hparticletool.cc:900
 hparticletool.cc:901
 hparticletool.cc:902
 hparticletool.cc:903
 hparticletool.cc:904
 hparticletool.cc:905
 hparticletool.cc:906
 hparticletool.cc:907
 hparticletool.cc:908
 hparticletool.cc:909
 hparticletool.cc:910
 hparticletool.cc:911
 hparticletool.cc:912
 hparticletool.cc:913
 hparticletool.cc:914
 hparticletool.cc:915
 hparticletool.cc:916
 hparticletool.cc:917
 hparticletool.cc:918
 hparticletool.cc:919
 hparticletool.cc:920
 hparticletool.cc:921
 hparticletool.cc:922
 hparticletool.cc:923
 hparticletool.cc:924
 hparticletool.cc:925
 hparticletool.cc:926
 hparticletool.cc:927
 hparticletool.cc:928
 hparticletool.cc:929
 hparticletool.cc:930
 hparticletool.cc:931
 hparticletool.cc:932
 hparticletool.cc:933
 hparticletool.cc:934
 hparticletool.cc:935
 hparticletool.cc:936
 hparticletool.cc:937
 hparticletool.cc:938
 hparticletool.cc:939
 hparticletool.cc:940
 hparticletool.cc:941
 hparticletool.cc:942
 hparticletool.cc:943
 hparticletool.cc:944
 hparticletool.cc:945
 hparticletool.cc:946
 hparticletool.cc:947
 hparticletool.cc:948
 hparticletool.cc:949
 hparticletool.cc:950
 hparticletool.cc:951
 hparticletool.cc:952
 hparticletool.cc:953
 hparticletool.cc:954
 hparticletool.cc:955
 hparticletool.cc:956
 hparticletool.cc:957
 hparticletool.cc:958
 hparticletool.cc:959
 hparticletool.cc:960
 hparticletool.cc:961
 hparticletool.cc:962
 hparticletool.cc:963
 hparticletool.cc:964
 hparticletool.cc:965
 hparticletool.cc:966
 hparticletool.cc:967
 hparticletool.cc:968
 hparticletool.cc:969
 hparticletool.cc:970
 hparticletool.cc:971
 hparticletool.cc:972
 hparticletool.cc:973
 hparticletool.cc:974
 hparticletool.cc:975
 hparticletool.cc:976
 hparticletool.cc:977
 hparticletool.cc:978
 hparticletool.cc:979
 hparticletool.cc:980
 hparticletool.cc:981
 hparticletool.cc:982
 hparticletool.cc:983
 hparticletool.cc:984
 hparticletool.cc:985
 hparticletool.cc:986
 hparticletool.cc:987
 hparticletool.cc:988
 hparticletool.cc:989
 hparticletool.cc:990
 hparticletool.cc:991
 hparticletool.cc:992
 hparticletool.cc:993
 hparticletool.cc:994
 hparticletool.cc:995
 hparticletool.cc:996
 hparticletool.cc:997
 hparticletool.cc:998
 hparticletool.cc:999
 hparticletool.cc:1000
 hparticletool.cc:1001
 hparticletool.cc:1002
 hparticletool.cc:1003
 hparticletool.cc:1004
 hparticletool.cc:1005
 hparticletool.cc:1006
 hparticletool.cc:1007
 hparticletool.cc:1008
 hparticletool.cc:1009
 hparticletool.cc:1010
 hparticletool.cc:1011
 hparticletool.cc:1012
 hparticletool.cc:1013
 hparticletool.cc:1014
 hparticletool.cc:1015
 hparticletool.cc:1016
 hparticletool.cc:1017
 hparticletool.cc:1018
 hparticletool.cc:1019
 hparticletool.cc:1020
 hparticletool.cc:1021
 hparticletool.cc:1022
 hparticletool.cc:1023
 hparticletool.cc:1024
 hparticletool.cc:1025
 hparticletool.cc:1026
 hparticletool.cc:1027
 hparticletool.cc:1028
 hparticletool.cc:1029
 hparticletool.cc:1030
 hparticletool.cc:1031
 hparticletool.cc:1032
 hparticletool.cc:1033
 hparticletool.cc:1034
 hparticletool.cc:1035
 hparticletool.cc:1036
 hparticletool.cc:1037
 hparticletool.cc:1038
 hparticletool.cc:1039
 hparticletool.cc:1040
 hparticletool.cc:1041
 hparticletool.cc:1042
 hparticletool.cc:1043
 hparticletool.cc:1044
 hparticletool.cc:1045
 hparticletool.cc:1046
 hparticletool.cc:1047
 hparticletool.cc:1048
 hparticletool.cc:1049
 hparticletool.cc:1050
 hparticletool.cc:1051
 hparticletool.cc:1052
 hparticletool.cc:1053
 hparticletool.cc:1054
 hparticletool.cc:1055
 hparticletool.cc:1056
 hparticletool.cc:1057
 hparticletool.cc:1058
 hparticletool.cc:1059
 hparticletool.cc:1060
 hparticletool.cc:1061
 hparticletool.cc:1062
 hparticletool.cc:1063
 hparticletool.cc:1064
 hparticletool.cc:1065
 hparticletool.cc:1066
 hparticletool.cc:1067
 hparticletool.cc:1068
 hparticletool.cc:1069
 hparticletool.cc:1070
 hparticletool.cc:1071
 hparticletool.cc:1072
 hparticletool.cc:1073
 hparticletool.cc:1074
 hparticletool.cc:1075
 hparticletool.cc:1076
 hparticletool.cc:1077
 hparticletool.cc:1078
 hparticletool.cc:1079
 hparticletool.cc:1080
 hparticletool.cc:1081
 hparticletool.cc:1082
 hparticletool.cc:1083
 hparticletool.cc:1084
 hparticletool.cc:1085
 hparticletool.cc:1086
 hparticletool.cc:1087
 hparticletool.cc:1088
 hparticletool.cc:1089
 hparticletool.cc:1090
 hparticletool.cc:1091
 hparticletool.cc:1092
 hparticletool.cc:1093
 hparticletool.cc:1094
 hparticletool.cc:1095
 hparticletool.cc:1096
 hparticletool.cc:1097
 hparticletool.cc:1098
 hparticletool.cc:1099
 hparticletool.cc:1100
 hparticletool.cc:1101
 hparticletool.cc:1102
 hparticletool.cc:1103
 hparticletool.cc:1104
 hparticletool.cc:1105
 hparticletool.cc:1106
 hparticletool.cc:1107
 hparticletool.cc:1108
 hparticletool.cc:1109
 hparticletool.cc:1110
 hparticletool.cc:1111
 hparticletool.cc:1112
 hparticletool.cc:1113
 hparticletool.cc:1114
 hparticletool.cc:1115
 hparticletool.cc:1116
 hparticletool.cc:1117
 hparticletool.cc:1118
 hparticletool.cc:1119
 hparticletool.cc:1120
 hparticletool.cc:1121
 hparticletool.cc:1122
 hparticletool.cc:1123
 hparticletool.cc:1124
 hparticletool.cc:1125
 hparticletool.cc:1126
 hparticletool.cc:1127
 hparticletool.cc:1128
 hparticletool.cc:1129
 hparticletool.cc:1130
 hparticletool.cc:1131
 hparticletool.cc:1132
 hparticletool.cc:1133
 hparticletool.cc:1134
 hparticletool.cc:1135
 hparticletool.cc:1136
 hparticletool.cc:1137
 hparticletool.cc:1138
 hparticletool.cc:1139
 hparticletool.cc:1140
 hparticletool.cc:1141
 hparticletool.cc:1142
 hparticletool.cc:1143
 hparticletool.cc:1144
 hparticletool.cc:1145
 hparticletool.cc:1146
 hparticletool.cc:1147
 hparticletool.cc:1148
 hparticletool.cc:1149
 hparticletool.cc:1150
 hparticletool.cc:1151
 hparticletool.cc:1152
 hparticletool.cc:1153
 hparticletool.cc:1154
 hparticletool.cc:1155
 hparticletool.cc:1156
 hparticletool.cc:1157
 hparticletool.cc:1158
 hparticletool.cc:1159
 hparticletool.cc:1160
 hparticletool.cc:1161
 hparticletool.cc:1162
 hparticletool.cc:1163
 hparticletool.cc:1164
 hparticletool.cc:1165
 hparticletool.cc:1166
 hparticletool.cc:1167
 hparticletool.cc:1168
 hparticletool.cc:1169
 hparticletool.cc:1170
 hparticletool.cc:1171
 hparticletool.cc:1172
 hparticletool.cc:1173
 hparticletool.cc:1174
 hparticletool.cc:1175
 hparticletool.cc:1176
 hparticletool.cc:1177
 hparticletool.cc:1178
 hparticletool.cc:1179
 hparticletool.cc:1180
 hparticletool.cc:1181
 hparticletool.cc:1182
 hparticletool.cc:1183
 hparticletool.cc:1184
 hparticletool.cc:1185
 hparticletool.cc:1186
 hparticletool.cc:1187
 hparticletool.cc:1188
 hparticletool.cc:1189
 hparticletool.cc:1190
 hparticletool.cc:1191
 hparticletool.cc:1192
 hparticletool.cc:1193
 hparticletool.cc:1194
 hparticletool.cc:1195
 hparticletool.cc:1196
 hparticletool.cc:1197
 hparticletool.cc:1198
 hparticletool.cc:1199
 hparticletool.cc:1200
 hparticletool.cc:1201
 hparticletool.cc:1202
 hparticletool.cc:1203
 hparticletool.cc:1204
 hparticletool.cc:1205
 hparticletool.cc:1206
 hparticletool.cc:1207
 hparticletool.cc:1208
 hparticletool.cc:1209
 hparticletool.cc:1210
 hparticletool.cc:1211
 hparticletool.cc:1212
 hparticletool.cc:1213
 hparticletool.cc:1214
 hparticletool.cc:1215
 hparticletool.cc:1216
 hparticletool.cc:1217
 hparticletool.cc:1218
 hparticletool.cc:1219
 hparticletool.cc:1220
 hparticletool.cc:1221
 hparticletool.cc:1222
 hparticletool.cc:1223
 hparticletool.cc:1224
 hparticletool.cc:1225
 hparticletool.cc:1226
 hparticletool.cc:1227
 hparticletool.cc:1228
 hparticletool.cc:1229
 hparticletool.cc:1230
 hparticletool.cc:1231
 hparticletool.cc:1232
 hparticletool.cc:1233
 hparticletool.cc:1234
 hparticletool.cc:1235
 hparticletool.cc:1236
 hparticletool.cc:1237
 hparticletool.cc:1238
 hparticletool.cc:1239
 hparticletool.cc:1240
 hparticletool.cc:1241
 hparticletool.cc:1242
 hparticletool.cc:1243
 hparticletool.cc:1244
 hparticletool.cc:1245
 hparticletool.cc:1246
 hparticletool.cc:1247
 hparticletool.cc:1248
 hparticletool.cc:1249
 hparticletool.cc:1250
 hparticletool.cc:1251
 hparticletool.cc:1252
 hparticletool.cc:1253
 hparticletool.cc:1254
 hparticletool.cc:1255
 hparticletool.cc:1256
 hparticletool.cc:1257
 hparticletool.cc:1258
 hparticletool.cc:1259
 hparticletool.cc:1260
 hparticletool.cc:1261
 hparticletool.cc:1262
 hparticletool.cc:1263
 hparticletool.cc:1264
 hparticletool.cc:1265
 hparticletool.cc:1266
 hparticletool.cc:1267
 hparticletool.cc:1268
 hparticletool.cc:1269
 hparticletool.cc:1270
 hparticletool.cc:1271
 hparticletool.cc:1272
 hparticletool.cc:1273
 hparticletool.cc:1274
 hparticletool.cc:1275
 hparticletool.cc:1276
 hparticletool.cc:1277
 hparticletool.cc:1278
 hparticletool.cc:1279
 hparticletool.cc:1280
 hparticletool.cc:1281
 hparticletool.cc:1282
 hparticletool.cc:1283
 hparticletool.cc:1284
 hparticletool.cc:1285
 hparticletool.cc:1286
 hparticletool.cc:1287
 hparticletool.cc:1288
 hparticletool.cc:1289
 hparticletool.cc:1290
 hparticletool.cc:1291
 hparticletool.cc:1292
 hparticletool.cc:1293
 hparticletool.cc:1294
 hparticletool.cc:1295
 hparticletool.cc:1296
 hparticletool.cc:1297
 hparticletool.cc:1298
 hparticletool.cc:1299
 hparticletool.cc:1300
 hparticletool.cc:1301
 hparticletool.cc:1302
 hparticletool.cc:1303
 hparticletool.cc:1304
 hparticletool.cc:1305
 hparticletool.cc:1306
 hparticletool.cc:1307
 hparticletool.cc:1308
 hparticletool.cc:1309
 hparticletool.cc:1310
 hparticletool.cc:1311
 hparticletool.cc:1312
 hparticletool.cc:1313
 hparticletool.cc:1314
 hparticletool.cc:1315
 hparticletool.cc:1316
 hparticletool.cc:1317
 hparticletool.cc:1318
 hparticletool.cc:1319
 hparticletool.cc:1320
 hparticletool.cc:1321
 hparticletool.cc:1322
 hparticletool.cc:1323
 hparticletool.cc:1324
 hparticletool.cc:1325
 hparticletool.cc:1326
 hparticletool.cc:1327
 hparticletool.cc:1328
 hparticletool.cc:1329
 hparticletool.cc:1330
 hparticletool.cc:1331
 hparticletool.cc:1332
 hparticletool.cc:1333
 hparticletool.cc:1334
 hparticletool.cc:1335
 hparticletool.cc:1336
 hparticletool.cc:1337
 hparticletool.cc:1338
 hparticletool.cc:1339
 hparticletool.cc:1340
 hparticletool.cc:1341
 hparticletool.cc:1342
 hparticletool.cc:1343
 hparticletool.cc:1344
 hparticletool.cc:1345
 hparticletool.cc:1346
 hparticletool.cc:1347
 hparticletool.cc:1348
 hparticletool.cc:1349
 hparticletool.cc:1350
 hparticletool.cc:1351
 hparticletool.cc:1352
 hparticletool.cc:1353
 hparticletool.cc:1354
 hparticletool.cc:1355
 hparticletool.cc:1356
 hparticletool.cc:1357
 hparticletool.cc:1358
 hparticletool.cc:1359
 hparticletool.cc:1360
 hparticletool.cc:1361
 hparticletool.cc:1362
 hparticletool.cc:1363
 hparticletool.cc:1364
 hparticletool.cc:1365
 hparticletool.cc:1366
 hparticletool.cc:1367
 hparticletool.cc:1368
 hparticletool.cc:1369
 hparticletool.cc:1370
 hparticletool.cc:1371
 hparticletool.cc:1372
 hparticletool.cc:1373
 hparticletool.cc:1374
 hparticletool.cc:1375
 hparticletool.cc:1376
 hparticletool.cc:1377
 hparticletool.cc:1378
 hparticletool.cc:1379
 hparticletool.cc:1380
 hparticletool.cc:1381
 hparticletool.cc:1382
 hparticletool.cc:1383
 hparticletool.cc:1384
 hparticletool.cc:1385
 hparticletool.cc:1386
 hparticletool.cc:1387
 hparticletool.cc:1388
 hparticletool.cc:1389
 hparticletool.cc:1390
 hparticletool.cc:1391
 hparticletool.cc:1392
 hparticletool.cc:1393
 hparticletool.cc:1394
 hparticletool.cc:1395
 hparticletool.cc:1396
 hparticletool.cc:1397
 hparticletool.cc:1398
 hparticletool.cc:1399
 hparticletool.cc:1400
 hparticletool.cc:1401
 hparticletool.cc:1402
 hparticletool.cc:1403
 hparticletool.cc:1404
 hparticletool.cc:1405
 hparticletool.cc:1406
 hparticletool.cc:1407
 hparticletool.cc:1408
 hparticletool.cc:1409
 hparticletool.cc:1410
 hparticletool.cc:1411
 hparticletool.cc:1412
 hparticletool.cc:1413
 hparticletool.cc:1414
 hparticletool.cc:1415
 hparticletool.cc:1416
 hparticletool.cc:1417
 hparticletool.cc:1418
 hparticletool.cc:1419
 hparticletool.cc:1420
 hparticletool.cc:1421
 hparticletool.cc:1422
 hparticletool.cc:1423
 hparticletool.cc:1424
 hparticletool.cc:1425
 hparticletool.cc:1426
 hparticletool.cc:1427
 hparticletool.cc:1428
 hparticletool.cc:1429
 hparticletool.cc:1430
 hparticletool.cc:1431
 hparticletool.cc:1432
 hparticletool.cc:1433
 hparticletool.cc:1434
 hparticletool.cc:1435
 hparticletool.cc:1436
 hparticletool.cc:1437
 hparticletool.cc:1438
 hparticletool.cc:1439
 hparticletool.cc:1440
 hparticletool.cc:1441
 hparticletool.cc:1442
 hparticletool.cc:1443
 hparticletool.cc:1444
 hparticletool.cc:1445
 hparticletool.cc:1446
 hparticletool.cc:1447
 hparticletool.cc:1448
 hparticletool.cc:1449
 hparticletool.cc:1450
 hparticletool.cc:1451
 hparticletool.cc:1452
 hparticletool.cc:1453
 hparticletool.cc:1454
 hparticletool.cc:1455
 hparticletool.cc:1456
 hparticletool.cc:1457
 hparticletool.cc:1458
 hparticletool.cc:1459
 hparticletool.cc:1460
 hparticletool.cc:1461
 hparticletool.cc:1462
 hparticletool.cc:1463
 hparticletool.cc:1464
 hparticletool.cc:1465
 hparticletool.cc:1466
 hparticletool.cc:1467
 hparticletool.cc:1468
 hparticletool.cc:1469
 hparticletool.cc:1470
 hparticletool.cc:1471
 hparticletool.cc:1472
 hparticletool.cc:1473
 hparticletool.cc:1474
 hparticletool.cc:1475
 hparticletool.cc:1476
 hparticletool.cc:1477
 hparticletool.cc:1478
 hparticletool.cc:1479
 hparticletool.cc:1480
 hparticletool.cc:1481
 hparticletool.cc:1482
 hparticletool.cc:1483
 hparticletool.cc:1484
 hparticletool.cc:1485
 hparticletool.cc:1486
 hparticletool.cc:1487
 hparticletool.cc:1488
 hparticletool.cc:1489
 hparticletool.cc:1490
 hparticletool.cc:1491
 hparticletool.cc:1492
 hparticletool.cc:1493
 hparticletool.cc:1494
 hparticletool.cc:1495
 hparticletool.cc:1496
 hparticletool.cc:1497
 hparticletool.cc:1498
 hparticletool.cc:1499
 hparticletool.cc:1500
 hparticletool.cc:1501
 hparticletool.cc:1502
 hparticletool.cc:1503
 hparticletool.cc:1504
 hparticletool.cc:1505
 hparticletool.cc:1506
 hparticletool.cc:1507
 hparticletool.cc:1508
 hparticletool.cc:1509
 hparticletool.cc:1510
 hparticletool.cc:1511
 hparticletool.cc:1512
 hparticletool.cc:1513
 hparticletool.cc:1514
 hparticletool.cc:1515
 hparticletool.cc:1516
 hparticletool.cc:1517
 hparticletool.cc:1518
 hparticletool.cc:1519
 hparticletool.cc:1520
 hparticletool.cc:1521
 hparticletool.cc:1522
 hparticletool.cc:1523
 hparticletool.cc:1524
 hparticletool.cc:1525
 hparticletool.cc:1526
 hparticletool.cc:1527
 hparticletool.cc:1528
 hparticletool.cc:1529
 hparticletool.cc:1530
 hparticletool.cc:1531
 hparticletool.cc:1532
 hparticletool.cc:1533
 hparticletool.cc:1534
 hparticletool.cc:1535
 hparticletool.cc:1536
 hparticletool.cc:1537
 hparticletool.cc:1538
 hparticletool.cc:1539
 hparticletool.cc:1540
 hparticletool.cc:1541
 hparticletool.cc:1542
 hparticletool.cc:1543
 hparticletool.cc:1544
 hparticletool.cc:1545
 hparticletool.cc:1546
 hparticletool.cc:1547
 hparticletool.cc:1548
 hparticletool.cc:1549
 hparticletool.cc:1550
 hparticletool.cc:1551
 hparticletool.cc:1552
 hparticletool.cc:1553
 hparticletool.cc:1554
 hparticletool.cc:1555
 hparticletool.cc:1556
 hparticletool.cc:1557
 hparticletool.cc:1558
 hparticletool.cc:1559
 hparticletool.cc:1560
 hparticletool.cc:1561
 hparticletool.cc:1562
 hparticletool.cc:1563
 hparticletool.cc:1564
 hparticletool.cc:1565
 hparticletool.cc:1566
 hparticletool.cc:1567
 hparticletool.cc:1568
 hparticletool.cc:1569
 hparticletool.cc:1570
 hparticletool.cc:1571
 hparticletool.cc:1572
 hparticletool.cc:1573
 hparticletool.cc:1574
 hparticletool.cc:1575
 hparticletool.cc:1576
 hparticletool.cc:1577
 hparticletool.cc:1578
 hparticletool.cc:1579
 hparticletool.cc:1580
 hparticletool.cc:1581
 hparticletool.cc:1582
 hparticletool.cc:1583
 hparticletool.cc:1584
 hparticletool.cc:1585
 hparticletool.cc:1586
 hparticletool.cc:1587
 hparticletool.cc:1588
 hparticletool.cc:1589
 hparticletool.cc:1590
 hparticletool.cc:1591
 hparticletool.cc:1592
 hparticletool.cc:1593
 hparticletool.cc:1594
 hparticletool.cc:1595
 hparticletool.cc:1596
 hparticletool.cc:1597
 hparticletool.cc:1598
 hparticletool.cc:1599
 hparticletool.cc:1600
 hparticletool.cc:1601
 hparticletool.cc:1602
 hparticletool.cc:1603
 hparticletool.cc:1604
 hparticletool.cc:1605
 hparticletool.cc:1606
 hparticletool.cc:1607
 hparticletool.cc:1608
 hparticletool.cc:1609
 hparticletool.cc:1610
 hparticletool.cc:1611
 hparticletool.cc:1612
 hparticletool.cc:1613
 hparticletool.cc:1614
 hparticletool.cc:1615
 hparticletool.cc:1616
 hparticletool.cc:1617
 hparticletool.cc:1618
 hparticletool.cc:1619
 hparticletool.cc:1620
 hparticletool.cc:1621
 hparticletool.cc:1622
 hparticletool.cc:1623
 hparticletool.cc:1624
 hparticletool.cc:1625
 hparticletool.cc:1626
 hparticletool.cc:1627
 hparticletool.cc:1628
 hparticletool.cc:1629
 hparticletool.cc:1630
 hparticletool.cc:1631
 hparticletool.cc:1632
 hparticletool.cc:1633
 hparticletool.cc:1634
 hparticletool.cc:1635
 hparticletool.cc:1636
 hparticletool.cc:1637
 hparticletool.cc:1638
 hparticletool.cc:1639
 hparticletool.cc:1640
 hparticletool.cc:1641
 hparticletool.cc:1642
 hparticletool.cc:1643
 hparticletool.cc:1644
 hparticletool.cc:1645
 hparticletool.cc:1646
 hparticletool.cc:1647
 hparticletool.cc:1648
 hparticletool.cc:1649
 hparticletool.cc:1650
 hparticletool.cc:1651
 hparticletool.cc:1652
 hparticletool.cc:1653
 hparticletool.cc:1654
 hparticletool.cc:1655
 hparticletool.cc:1656
 hparticletool.cc:1657
 hparticletool.cc:1658
 hparticletool.cc:1659
 hparticletool.cc:1660
 hparticletool.cc:1661
 hparticletool.cc:1662
 hparticletool.cc:1663
 hparticletool.cc:1664
 hparticletool.cc:1665
 hparticletool.cc:1666
 hparticletool.cc:1667
 hparticletool.cc:1668
 hparticletool.cc:1669
 hparticletool.cc:1670
 hparticletool.cc:1671
 hparticletool.cc:1672
 hparticletool.cc:1673
 hparticletool.cc:1674
 hparticletool.cc:1675
 hparticletool.cc:1676
 hparticletool.cc:1677
 hparticletool.cc:1678
 hparticletool.cc:1679
 hparticletool.cc:1680
 hparticletool.cc:1681
 hparticletool.cc:1682
 hparticletool.cc:1683
 hparticletool.cc:1684
 hparticletool.cc:1685
 hparticletool.cc:1686
 hparticletool.cc:1687
 hparticletool.cc:1688
 hparticletool.cc:1689
 hparticletool.cc:1690
 hparticletool.cc:1691
 hparticletool.cc:1692
 hparticletool.cc:1693
 hparticletool.cc:1694
 hparticletool.cc:1695
 hparticletool.cc:1696
 hparticletool.cc:1697
 hparticletool.cc:1698
 hparticletool.cc:1699
 hparticletool.cc:1700
 hparticletool.cc:1701
 hparticletool.cc:1702
 hparticletool.cc:1703
 hparticletool.cc:1704
 hparticletool.cc:1705
 hparticletool.cc:1706
 hparticletool.cc:1707
 hparticletool.cc:1708
 hparticletool.cc:1709
 hparticletool.cc:1710
 hparticletool.cc:1711
 hparticletool.cc:1712
 hparticletool.cc:1713
 hparticletool.cc:1714
 hparticletool.cc:1715
 hparticletool.cc:1716
 hparticletool.cc:1717
 hparticletool.cc:1718
 hparticletool.cc:1719
 hparticletool.cc:1720
 hparticletool.cc:1721
 hparticletool.cc:1722
 hparticletool.cc:1723
 hparticletool.cc:1724
 hparticletool.cc:1725
 hparticletool.cc:1726
 hparticletool.cc:1727
 hparticletool.cc:1728
 hparticletool.cc:1729
 hparticletool.cc:1730
 hparticletool.cc:1731
 hparticletool.cc:1732
 hparticletool.cc:1733
 hparticletool.cc:1734
 hparticletool.cc:1735
 hparticletool.cc:1736
 hparticletool.cc:1737
 hparticletool.cc:1738
 hparticletool.cc:1739
 hparticletool.cc:1740
 hparticletool.cc:1741
 hparticletool.cc:1742
 hparticletool.cc:1743
 hparticletool.cc:1744
 hparticletool.cc:1745
 hparticletool.cc:1746
 hparticletool.cc:1747
 hparticletool.cc:1748
 hparticletool.cc:1749
 hparticletool.cc:1750
 hparticletool.cc:1751
 hparticletool.cc:1752
 hparticletool.cc:1753
 hparticletool.cc:1754
 hparticletool.cc:1755
 hparticletool.cc:1756
 hparticletool.cc:1757
 hparticletool.cc:1758
 hparticletool.cc:1759
 hparticletool.cc:1760
 hparticletool.cc:1761
 hparticletool.cc:1762
 hparticletool.cc:1763
 hparticletool.cc:1764
 hparticletool.cc:1765
 hparticletool.cc:1766
 hparticletool.cc:1767
 hparticletool.cc:1768
 hparticletool.cc:1769
 hparticletool.cc:1770
 hparticletool.cc:1771
 hparticletool.cc:1772
 hparticletool.cc:1773
 hparticletool.cc:1774
 hparticletool.cc:1775
 hparticletool.cc:1776
 hparticletool.cc:1777
 hparticletool.cc:1778
 hparticletool.cc:1779
 hparticletool.cc:1780
 hparticletool.cc:1781
 hparticletool.cc:1782
 hparticletool.cc:1783
 hparticletool.cc:1784
 hparticletool.cc:1785
 hparticletool.cc:1786
 hparticletool.cc:1787
 hparticletool.cc:1788
 hparticletool.cc:1789
 hparticletool.cc:1790
 hparticletool.cc:1791
 hparticletool.cc:1792
 hparticletool.cc:1793
 hparticletool.cc:1794
 hparticletool.cc:1795
 hparticletool.cc:1796
 hparticletool.cc:1797
 hparticletool.cc:1798
 hparticletool.cc:1799
 hparticletool.cc:1800
 hparticletool.cc:1801
 hparticletool.cc:1802
 hparticletool.cc:1803
 hparticletool.cc:1804
 hparticletool.cc:1805
 hparticletool.cc:1806
 hparticletool.cc:1807
 hparticletool.cc:1808
 hparticletool.cc:1809
 hparticletool.cc:1810
 hparticletool.cc:1811
 hparticletool.cc:1812
 hparticletool.cc:1813
 hparticletool.cc:1814
 hparticletool.cc:1815
 hparticletool.cc:1816
 hparticletool.cc:1817
 hparticletool.cc:1818
 hparticletool.cc:1819
 hparticletool.cc:1820
 hparticletool.cc:1821
 hparticletool.cc:1822
 hparticletool.cc:1823
 hparticletool.cc:1824
 hparticletool.cc:1825
 hparticletool.cc:1826
 hparticletool.cc:1827
 hparticletool.cc:1828
 hparticletool.cc:1829
 hparticletool.cc:1830
 hparticletool.cc:1831
 hparticletool.cc:1832
 hparticletool.cc:1833
 hparticletool.cc:1834
 hparticletool.cc:1835
 hparticletool.cc:1836
 hparticletool.cc:1837
 hparticletool.cc:1838
 hparticletool.cc:1839
 hparticletool.cc:1840
 hparticletool.cc:1841
 hparticletool.cc:1842
 hparticletool.cc:1843
 hparticletool.cc:1844
 hparticletool.cc:1845
 hparticletool.cc:1846
 hparticletool.cc:1847
 hparticletool.cc:1848
 hparticletool.cc:1849
 hparticletool.cc:1850
 hparticletool.cc:1851
 hparticletool.cc:1852
 hparticletool.cc:1853
 hparticletool.cc:1854
 hparticletool.cc:1855
 hparticletool.cc:1856
 hparticletool.cc:1857
 hparticletool.cc:1858
 hparticletool.cc:1859
 hparticletool.cc:1860
 hparticletool.cc:1861
 hparticletool.cc:1862
 hparticletool.cc:1863
 hparticletool.cc:1864
 hparticletool.cc:1865
 hparticletool.cc:1866
 hparticletool.cc:1867
 hparticletool.cc:1868
 hparticletool.cc:1869
 hparticletool.cc:1870
 hparticletool.cc:1871
 hparticletool.cc:1872
 hparticletool.cc:1873
 hparticletool.cc:1874
 hparticletool.cc:1875
 hparticletool.cc:1876
 hparticletool.cc:1877
 hparticletool.cc:1878
 hparticletool.cc:1879
 hparticletool.cc:1880
 hparticletool.cc:1881
 hparticletool.cc:1882
 hparticletool.cc:1883
 hparticletool.cc:1884
 hparticletool.cc:1885
 hparticletool.cc:1886
 hparticletool.cc:1887
 hparticletool.cc:1888
 hparticletool.cc:1889
 hparticletool.cc:1890
 hparticletool.cc:1891
 hparticletool.cc:1892
 hparticletool.cc:1893
 hparticletool.cc:1894
 hparticletool.cc:1895
 hparticletool.cc:1896
 hparticletool.cc:1897
 hparticletool.cc:1898
 hparticletool.cc:1899
 hparticletool.cc:1900
 hparticletool.cc:1901
 hparticletool.cc:1902
 hparticletool.cc:1903
 hparticletool.cc:1904
 hparticletool.cc:1905
 hparticletool.cc:1906
 hparticletool.cc:1907
 hparticletool.cc:1908
 hparticletool.cc:1909
 hparticletool.cc:1910
 hparticletool.cc:1911
 hparticletool.cc:1912
 hparticletool.cc:1913
 hparticletool.cc:1914
 hparticletool.cc:1915
 hparticletool.cc:1916
 hparticletool.cc:1917
 hparticletool.cc:1918
 hparticletool.cc:1919
 hparticletool.cc:1920
 hparticletool.cc:1921
 hparticletool.cc:1922
 hparticletool.cc:1923
 hparticletool.cc:1924
 hparticletool.cc:1925
 hparticletool.cc:1926
 hparticletool.cc:1927
 hparticletool.cc:1928
 hparticletool.cc:1929
 hparticletool.cc:1930
 hparticletool.cc:1931
 hparticletool.cc:1932
 hparticletool.cc:1933
 hparticletool.cc:1934
 hparticletool.cc:1935
 hparticletool.cc:1936
 hparticletool.cc:1937
 hparticletool.cc:1938
 hparticletool.cc:1939
 hparticletool.cc:1940
 hparticletool.cc:1941
 hparticletool.cc:1942
 hparticletool.cc:1943
 hparticletool.cc:1944
 hparticletool.cc:1945
 hparticletool.cc:1946
 hparticletool.cc:1947
 hparticletool.cc:1948
 hparticletool.cc:1949
 hparticletool.cc:1950
 hparticletool.cc:1951
 hparticletool.cc:1952
 hparticletool.cc:1953
 hparticletool.cc:1954
 hparticletool.cc:1955
 hparticletool.cc:1956
 hparticletool.cc:1957
 hparticletool.cc:1958
 hparticletool.cc:1959
 hparticletool.cc:1960
 hparticletool.cc:1961
 hparticletool.cc:1962
 hparticletool.cc:1963
 hparticletool.cc:1964
 hparticletool.cc:1965
 hparticletool.cc:1966
 hparticletool.cc:1967
 hparticletool.cc:1968
 hparticletool.cc:1969
 hparticletool.cc:1970
 hparticletool.cc:1971
 hparticletool.cc:1972
 hparticletool.cc:1973
 hparticletool.cc:1974
 hparticletool.cc:1975
 hparticletool.cc:1976
 hparticletool.cc:1977
 hparticletool.cc:1978
 hparticletool.cc:1979
 hparticletool.cc:1980
 hparticletool.cc:1981
 hparticletool.cc:1982
 hparticletool.cc:1983
 hparticletool.cc:1984
 hparticletool.cc:1985
 hparticletool.cc:1986
 hparticletool.cc:1987
 hparticletool.cc:1988
 hparticletool.cc:1989
 hparticletool.cc:1990
 hparticletool.cc:1991
 hparticletool.cc:1992
 hparticletool.cc:1993
 hparticletool.cc:1994
 hparticletool.cc:1995
 hparticletool.cc:1996
 hparticletool.cc:1997
 hparticletool.cc:1998
 hparticletool.cc:1999
 hparticletool.cc:2000
 hparticletool.cc:2001
 hparticletool.cc:2002
 hparticletool.cc:2003
 hparticletool.cc:2004
 hparticletool.cc:2005
 hparticletool.cc:2006
 hparticletool.cc:2007
 hparticletool.cc:2008
 hparticletool.cc:2009
 hparticletool.cc:2010
 hparticletool.cc:2011
 hparticletool.cc:2012
 hparticletool.cc:2013
 hparticletool.cc:2014
 hparticletool.cc:2015
 hparticletool.cc:2016
 hparticletool.cc:2017
 hparticletool.cc:2018
 hparticletool.cc:2019
 hparticletool.cc:2020
 hparticletool.cc:2021
 hparticletool.cc:2022
 hparticletool.cc:2023
 hparticletool.cc:2024
 hparticletool.cc:2025
 hparticletool.cc:2026
 hparticletool.cc:2027
 hparticletool.cc:2028
 hparticletool.cc:2029
 hparticletool.cc:2030
 hparticletool.cc:2031
 hparticletool.cc:2032
 hparticletool.cc:2033
 hparticletool.cc:2034
 hparticletool.cc:2035
 hparticletool.cc:2036
 hparticletool.cc:2037
 hparticletool.cc:2038
 hparticletool.cc:2039
 hparticletool.cc:2040
 hparticletool.cc:2041
 hparticletool.cc:2042
 hparticletool.cc:2043
 hparticletool.cc:2044
 hparticletool.cc:2045
 hparticletool.cc:2046
 hparticletool.cc:2047
 hparticletool.cc:2048
 hparticletool.cc:2049
 hparticletool.cc:2050
 hparticletool.cc:2051
 hparticletool.cc:2052
 hparticletool.cc:2053
 hparticletool.cc:2054
 hparticletool.cc:2055
 hparticletool.cc:2056
 hparticletool.cc:2057
 hparticletool.cc:2058
 hparticletool.cc:2059
 hparticletool.cc:2060
 hparticletool.cc:2061
 hparticletool.cc:2062
 hparticletool.cc:2063
 hparticletool.cc:2064
 hparticletool.cc:2065
 hparticletool.cc:2066
 hparticletool.cc:2067
 hparticletool.cc:2068
 hparticletool.cc:2069
 hparticletool.cc:2070
 hparticletool.cc:2071
 hparticletool.cc:2072
 hparticletool.cc:2073
 hparticletool.cc:2074
 hparticletool.cc:2075
 hparticletool.cc:2076
 hparticletool.cc:2077
 hparticletool.cc:2078
 hparticletool.cc:2079
 hparticletool.cc:2080
 hparticletool.cc:2081
 hparticletool.cc:2082
 hparticletool.cc:2083
 hparticletool.cc:2084
 hparticletool.cc:2085
 hparticletool.cc:2086
 hparticletool.cc:2087
 hparticletool.cc:2088
 hparticletool.cc:2089
 hparticletool.cc:2090
 hparticletool.cc:2091
 hparticletool.cc:2092
 hparticletool.cc:2093
 hparticletool.cc:2094
 hparticletool.cc:2095
 hparticletool.cc:2096
 hparticletool.cc:2097
 hparticletool.cc:2098
 hparticletool.cc:2099
 hparticletool.cc:2100
 hparticletool.cc:2101
 hparticletool.cc:2102
 hparticletool.cc:2103
 hparticletool.cc:2104
 hparticletool.cc:2105
 hparticletool.cc:2106
 hparticletool.cc:2107
 hparticletool.cc:2108
 hparticletool.cc:2109
 hparticletool.cc:2110
 hparticletool.cc:2111
 hparticletool.cc:2112
 hparticletool.cc:2113
 hparticletool.cc:2114
 hparticletool.cc:2115
 hparticletool.cc:2116
 hparticletool.cc:2117
 hparticletool.cc:2118
 hparticletool.cc:2119
 hparticletool.cc:2120
 hparticletool.cc:2121
 hparticletool.cc:2122
 hparticletool.cc:2123
 hparticletool.cc:2124
 hparticletool.cc:2125
 hparticletool.cc:2126
 hparticletool.cc:2127
 hparticletool.cc:2128
 hparticletool.cc:2129
 hparticletool.cc:2130
 hparticletool.cc:2131
 hparticletool.cc:2132
 hparticletool.cc:2133
 hparticletool.cc:2134
 hparticletool.cc:2135
 hparticletool.cc:2136
 hparticletool.cc:2137
 hparticletool.cc:2138
 hparticletool.cc:2139
 hparticletool.cc:2140
 hparticletool.cc:2141
 hparticletool.cc:2142
 hparticletool.cc:2143
 hparticletool.cc:2144
 hparticletool.cc:2145
 hparticletool.cc:2146
 hparticletool.cc:2147
 hparticletool.cc:2148
 hparticletool.cc:2149
 hparticletool.cc:2150
 hparticletool.cc:2151
 hparticletool.cc:2152
 hparticletool.cc:2153
 hparticletool.cc:2154
 hparticletool.cc:2155
 hparticletool.cc:2156
 hparticletool.cc:2157
 hparticletool.cc:2158
 hparticletool.cc:2159
 hparticletool.cc:2160
 hparticletool.cc:2161
 hparticletool.cc:2162
 hparticletool.cc:2163
 hparticletool.cc:2164
 hparticletool.cc:2165
 hparticletool.cc:2166
 hparticletool.cc:2167
 hparticletool.cc:2168
 hparticletool.cc:2169
 hparticletool.cc:2170
 hparticletool.cc:2171
 hparticletool.cc:2172
 hparticletool.cc:2173
 hparticletool.cc:2174
 hparticletool.cc:2175
 hparticletool.cc:2176
 hparticletool.cc:2177
 hparticletool.cc:2178
 hparticletool.cc:2179
 hparticletool.cc:2180
 hparticletool.cc:2181
 hparticletool.cc:2182
 hparticletool.cc:2183
 hparticletool.cc:2184
 hparticletool.cc:2185
 hparticletool.cc:2186
 hparticletool.cc:2187
 hparticletool.cc:2188
 hparticletool.cc:2189
 hparticletool.cc:2190
 hparticletool.cc:2191
 hparticletool.cc:2192
 hparticletool.cc:2193
 hparticletool.cc:2194
 hparticletool.cc:2195
 hparticletool.cc:2196
 hparticletool.cc:2197
 hparticletool.cc:2198
 hparticletool.cc:2199
 hparticletool.cc:2200
 hparticletool.cc:2201
 hparticletool.cc:2202
 hparticletool.cc:2203
 hparticletool.cc:2204
 hparticletool.cc:2205
 hparticletool.cc:2206
 hparticletool.cc:2207
 hparticletool.cc:2208
 hparticletool.cc:2209
 hparticletool.cc:2210
 hparticletool.cc:2211
 hparticletool.cc:2212
 hparticletool.cc:2213
 hparticletool.cc:2214
 hparticletool.cc:2215
 hparticletool.cc:2216
 hparticletool.cc:2217
 hparticletool.cc:2218
 hparticletool.cc:2219
 hparticletool.cc:2220
 hparticletool.cc:2221
 hparticletool.cc:2222
 hparticletool.cc:2223
 hparticletool.cc:2224
 hparticletool.cc:2225
 hparticletool.cc:2226
 hparticletool.cc:2227
 hparticletool.cc:2228
 hparticletool.cc:2229
 hparticletool.cc:2230
 hparticletool.cc:2231
 hparticletool.cc:2232
 hparticletool.cc:2233
 hparticletool.cc:2234
 hparticletool.cc:2235
 hparticletool.cc:2236
 hparticletool.cc:2237
 hparticletool.cc:2238
 hparticletool.cc:2239
 hparticletool.cc:2240
 hparticletool.cc:2241
 hparticletool.cc:2242
 hparticletool.cc:2243
 hparticletool.cc:2244
 hparticletool.cc:2245
 hparticletool.cc:2246
 hparticletool.cc:2247
 hparticletool.cc:2248
 hparticletool.cc:2249
 hparticletool.cc:2250
 hparticletool.cc:2251
 hparticletool.cc:2252
 hparticletool.cc:2253
 hparticletool.cc:2254
 hparticletool.cc:2255
 hparticletool.cc:2256
 hparticletool.cc:2257
 hparticletool.cc:2258
 hparticletool.cc:2259
 hparticletool.cc:2260
 hparticletool.cc:2261
 hparticletool.cc:2262
 hparticletool.cc:2263
 hparticletool.cc:2264
 hparticletool.cc:2265
 hparticletool.cc:2266
 hparticletool.cc:2267
 hparticletool.cc:2268
 hparticletool.cc:2269
 hparticletool.cc:2270
 hparticletool.cc:2271
 hparticletool.cc:2272
 hparticletool.cc:2273
 hparticletool.cc:2274
 hparticletool.cc:2275
 hparticletool.cc:2276
 hparticletool.cc:2277
 hparticletool.cc:2278
 hparticletool.cc:2279
 hparticletool.cc:2280
 hparticletool.cc:2281
 hparticletool.cc:2282
 hparticletool.cc:2283
 hparticletool.cc:2284
 hparticletool.cc:2285
 hparticletool.cc:2286
 hparticletool.cc:2287
 hparticletool.cc:2288
 hparticletool.cc:2289
 hparticletool.cc:2290
 hparticletool.cc:2291
 hparticletool.cc:2292
 hparticletool.cc:2293
 hparticletool.cc:2294
 hparticletool.cc:2295
 hparticletool.cc:2296
 hparticletool.cc:2297
 hparticletool.cc:2298
 hparticletool.cc:2299
 hparticletool.cc:2300
 hparticletool.cc:2301
 hparticletool.cc:2302
 hparticletool.cc:2303
 hparticletool.cc:2304
 hparticletool.cc:2305
 hparticletool.cc:2306
 hparticletool.cc:2307
 hparticletool.cc:2308
 hparticletool.cc:2309
 hparticletool.cc:2310
 hparticletool.cc:2311
 hparticletool.cc:2312
 hparticletool.cc:2313
 hparticletool.cc:2314
 hparticletool.cc:2315
 hparticletool.cc:2316
 hparticletool.cc:2317
 hparticletool.cc:2318
 hparticletool.cc:2319
 hparticletool.cc:2320
 hparticletool.cc:2321
 hparticletool.cc:2322
 hparticletool.cc:2323
 hparticletool.cc:2324
 hparticletool.cc:2325
 hparticletool.cc:2326
 hparticletool.cc:2327
 hparticletool.cc:2328
 hparticletool.cc:2329
 hparticletool.cc:2330
 hparticletool.cc:2331
 hparticletool.cc:2332
 hparticletool.cc:2333
 hparticletool.cc:2334
 hparticletool.cc:2335
 hparticletool.cc:2336
 hparticletool.cc:2337
 hparticletool.cc:2338
 hparticletool.cc:2339
 hparticletool.cc:2340
 hparticletool.cc:2341
 hparticletool.cc:2342
 hparticletool.cc:2343
 hparticletool.cc:2344
 hparticletool.cc:2345
 hparticletool.cc:2346
 hparticletool.cc:2347
 hparticletool.cc:2348
 hparticletool.cc:2349
 hparticletool.cc:2350
 hparticletool.cc:2351
 hparticletool.cc:2352
 hparticletool.cc:2353
 hparticletool.cc:2354
 hparticletool.cc:2355
 hparticletool.cc:2356
 hparticletool.cc:2357
 hparticletool.cc:2358
 hparticletool.cc:2359
 hparticletool.cc:2360
 hparticletool.cc:2361
 hparticletool.cc:2362
 hparticletool.cc:2363
 hparticletool.cc:2364
 hparticletool.cc:2365
 hparticletool.cc:2366
 hparticletool.cc:2367
 hparticletool.cc:2368
 hparticletool.cc:2369
 hparticletool.cc:2370
 hparticletool.cc:2371
 hparticletool.cc:2372
 hparticletool.cc:2373
 hparticletool.cc:2374
 hparticletool.cc:2375
 hparticletool.cc:2376
 hparticletool.cc:2377
 hparticletool.cc:2378
 hparticletool.cc:2379
 hparticletool.cc:2380
 hparticletool.cc:2381
 hparticletool.cc:2382
 hparticletool.cc:2383
 hparticletool.cc:2384
 hparticletool.cc:2385
 hparticletool.cc:2386
 hparticletool.cc:2387
 hparticletool.cc:2388
 hparticletool.cc:2389
 hparticletool.cc:2390
 hparticletool.cc:2391
 hparticletool.cc:2392
 hparticletool.cc:2393
 hparticletool.cc:2394
 hparticletool.cc:2395
 hparticletool.cc:2396
 hparticletool.cc:2397
 hparticletool.cc:2398
 hparticletool.cc:2399
 hparticletool.cc:2400
 hparticletool.cc:2401
 hparticletool.cc:2402
 hparticletool.cc:2403
 hparticletool.cc:2404
 hparticletool.cc:2405
 hparticletool.cc:2406
 hparticletool.cc:2407
 hparticletool.cc:2408
 hparticletool.cc:2409
 hparticletool.cc:2410
 hparticletool.cc:2411
 hparticletool.cc:2412
 hparticletool.cc:2413
 hparticletool.cc:2414
 hparticletool.cc:2415
 hparticletool.cc:2416
 hparticletool.cc:2417
 hparticletool.cc:2418
 hparticletool.cc:2419
 hparticletool.cc:2420
 hparticletool.cc:2421
 hparticletool.cc:2422
 hparticletool.cc:2423
 hparticletool.cc:2424
 hparticletool.cc:2425
 hparticletool.cc:2426
 hparticletool.cc:2427
 hparticletool.cc:2428
 hparticletool.cc:2429
 hparticletool.cc:2430
 hparticletool.cc:2431
 hparticletool.cc:2432
 hparticletool.cc:2433
 hparticletool.cc:2434
 hparticletool.cc:2435
 hparticletool.cc:2436
 hparticletool.cc:2437
 hparticletool.cc:2438
 hparticletool.cc:2439
 hparticletool.cc:2440
 hparticletool.cc:2441
 hparticletool.cc:2442
 hparticletool.cc:2443
 hparticletool.cc:2444
 hparticletool.cc:2445
 hparticletool.cc:2446
 hparticletool.cc:2447
 hparticletool.cc:2448
 hparticletool.cc:2449
 hparticletool.cc:2450
 hparticletool.cc:2451
 hparticletool.cc:2452
 hparticletool.cc:2453
 hparticletool.cc:2454
 hparticletool.cc:2455
 hparticletool.cc:2456
 hparticletool.cc:2457
 hparticletool.cc:2458
 hparticletool.cc:2459
 hparticletool.cc:2460
 hparticletool.cc:2461
 hparticletool.cc:2462
 hparticletool.cc:2463
 hparticletool.cc:2464
 hparticletool.cc:2465
 hparticletool.cc:2466
 hparticletool.cc:2467
 hparticletool.cc:2468
 hparticletool.cc:2469
 hparticletool.cc:2470
 hparticletool.cc:2471
 hparticletool.cc:2472
 hparticletool.cc:2473
 hparticletool.cc:2474
 hparticletool.cc:2475
 hparticletool.cc:2476
 hparticletool.cc:2477
 hparticletool.cc:2478
 hparticletool.cc:2479
 hparticletool.cc:2480
 hparticletool.cc:2481
 hparticletool.cc:2482
 hparticletool.cc:2483
 hparticletool.cc:2484
 hparticletool.cc:2485
 hparticletool.cc:2486
 hparticletool.cc:2487
 hparticletool.cc:2488
 hparticletool.cc:2489
 hparticletool.cc:2490
 hparticletool.cc:2491
 hparticletool.cc:2492
 hparticletool.cc:2493
 hparticletool.cc:2494
 hparticletool.cc:2495
 hparticletool.cc:2496
 hparticletool.cc:2497
 hparticletool.cc:2498
 hparticletool.cc:2499
 hparticletool.cc:2500
 hparticletool.cc:2501
 hparticletool.cc:2502
 hparticletool.cc:2503
 hparticletool.cc:2504
 hparticletool.cc:2505
 hparticletool.cc:2506
 hparticletool.cc:2507
 hparticletool.cc:2508
 hparticletool.cc:2509
 hparticletool.cc:2510
 hparticletool.cc:2511
 hparticletool.cc:2512
 hparticletool.cc:2513
 hparticletool.cc:2514
 hparticletool.cc:2515
 hparticletool.cc:2516
 hparticletool.cc:2517
 hparticletool.cc:2518
 hparticletool.cc:2519
 hparticletool.cc:2520
 hparticletool.cc:2521
 hparticletool.cc:2522
 hparticletool.cc:2523
 hparticletool.cc:2524
 hparticletool.cc:2525
 hparticletool.cc:2526
 hparticletool.cc:2527
 hparticletool.cc:2528
 hparticletool.cc:2529
 hparticletool.cc:2530
 hparticletool.cc:2531
 hparticletool.cc:2532
 hparticletool.cc:2533
 hparticletool.cc:2534
 hparticletool.cc:2535
 hparticletool.cc:2536
 hparticletool.cc:2537
 hparticletool.cc:2538
 hparticletool.cc:2539
 hparticletool.cc:2540
 hparticletool.cc:2541
 hparticletool.cc:2542
 hparticletool.cc:2543
 hparticletool.cc:2544
 hparticletool.cc:2545
 hparticletool.cc:2546
 hparticletool.cc:2547
 hparticletool.cc:2548
 hparticletool.cc:2549
 hparticletool.cc:2550
 hparticletool.cc:2551
 hparticletool.cc:2552
 hparticletool.cc:2553
 hparticletool.cc:2554
 hparticletool.cc:2555
 hparticletool.cc:2556
 hparticletool.cc:2557
 hparticletool.cc:2558
 hparticletool.cc:2559
 hparticletool.cc:2560
 hparticletool.cc:2561
 hparticletool.cc:2562
 hparticletool.cc:2563
 hparticletool.cc:2564
 hparticletool.cc:2565
 hparticletool.cc:2566
 hparticletool.cc:2567
 hparticletool.cc:2568
 hparticletool.cc:2569
 hparticletool.cc:2570
 hparticletool.cc:2571
 hparticletool.cc:2572
 hparticletool.cc:2573
 hparticletool.cc:2574
 hparticletool.cc:2575
 hparticletool.cc:2576
 hparticletool.cc:2577
 hparticletool.cc:2578
 hparticletool.cc:2579
 hparticletool.cc:2580
 hparticletool.cc:2581
 hparticletool.cc:2582
 hparticletool.cc:2583
 hparticletool.cc:2584
 hparticletool.cc:2585
 hparticletool.cc:2586
 hparticletool.cc:2587
 hparticletool.cc:2588
 hparticletool.cc:2589
 hparticletool.cc:2590
 hparticletool.cc:2591
 hparticletool.cc:2592
 hparticletool.cc:2593
 hparticletool.cc:2594
 hparticletool.cc:2595
 hparticletool.cc:2596
 hparticletool.cc:2597
 hparticletool.cc:2598
 hparticletool.cc:2599
 hparticletool.cc:2600
 hparticletool.cc:2601
 hparticletool.cc:2602
 hparticletool.cc:2603
 hparticletool.cc:2604
 hparticletool.cc:2605
 hparticletool.cc:2606
 hparticletool.cc:2607
 hparticletool.cc:2608
 hparticletool.cc:2609
 hparticletool.cc:2610
 hparticletool.cc:2611
 hparticletool.cc:2612
 hparticletool.cc:2613
 hparticletool.cc:2614
 hparticletool.cc:2615
 hparticletool.cc:2616
 hparticletool.cc:2617
 hparticletool.cc:2618
 hparticletool.cc:2619
 hparticletool.cc:2620
 hparticletool.cc:2621
 hparticletool.cc:2622
 hparticletool.cc:2623
 hparticletool.cc:2624
 hparticletool.cc:2625
 hparticletool.cc:2626
 hparticletool.cc:2627
 hparticletool.cc:2628
 hparticletool.cc:2629
 hparticletool.cc:2630
 hparticletool.cc:2631
 hparticletool.cc:2632
 hparticletool.cc:2633
 hparticletool.cc:2634
 hparticletool.cc:2635
 hparticletool.cc:2636
 hparticletool.cc:2637
 hparticletool.cc:2638
 hparticletool.cc:2639
 hparticletool.cc:2640
 hparticletool.cc:2641
 hparticletool.cc:2642
 hparticletool.cc:2643
 hparticletool.cc:2644
 hparticletool.cc:2645
 hparticletool.cc:2646
 hparticletool.cc:2647
 hparticletool.cc:2648
 hparticletool.cc:2649
 hparticletool.cc:2650
 hparticletool.cc:2651
 hparticletool.cc:2652
 hparticletool.cc:2653
 hparticletool.cc:2654
 hparticletool.cc:2655
 hparticletool.cc:2656
 hparticletool.cc:2657
 hparticletool.cc:2658
 hparticletool.cc:2659
 hparticletool.cc:2660
 hparticletool.cc:2661
 hparticletool.cc:2662
 hparticletool.cc:2663
 hparticletool.cc:2664
 hparticletool.cc:2665
 hparticletool.cc:2666
 hparticletool.cc:2667
 hparticletool.cc:2668
 hparticletool.cc:2669
 hparticletool.cc:2670
 hparticletool.cc:2671
 hparticletool.cc:2672
 hparticletool.cc:2673
 hparticletool.cc:2674
 hparticletool.cc:2675
 hparticletool.cc:2676
 hparticletool.cc:2677
 hparticletool.cc:2678
 hparticletool.cc:2679
 hparticletool.cc:2680
 hparticletool.cc:2681
 hparticletool.cc:2682
 hparticletool.cc:2683
 hparticletool.cc:2684
 hparticletool.cc:2685
 hparticletool.cc:2686
 hparticletool.cc:2687
 hparticletool.cc:2688
 hparticletool.cc:2689
 hparticletool.cc:2690
 hparticletool.cc:2691
 hparticletool.cc:2692
 hparticletool.cc:2693
 hparticletool.cc:2694
 hparticletool.cc:2695
 hparticletool.cc:2696
 hparticletool.cc:2697
 hparticletool.cc:2698
 hparticletool.cc:2699
 hparticletool.cc:2700
 hparticletool.cc:2701
 hparticletool.cc:2702
 hparticletool.cc:2703
 hparticletool.cc:2704
 hparticletool.cc:2705
 hparticletool.cc:2706
 hparticletool.cc:2707
 hparticletool.cc:2708
 hparticletool.cc:2709
 hparticletool.cc:2710
 hparticletool.cc:2711
 hparticletool.cc:2712
 hparticletool.cc:2713
 hparticletool.cc:2714
 hparticletool.cc:2715
 hparticletool.cc:2716
 hparticletool.cc:2717
 hparticletool.cc:2718
 hparticletool.cc:2719
 hparticletool.cc:2720
 hparticletool.cc:2721
 hparticletool.cc:2722
 hparticletool.cc:2723
 hparticletool.cc:2724
 hparticletool.cc:2725
 hparticletool.cc:2726
 hparticletool.cc:2727
 hparticletool.cc:2728
 hparticletool.cc:2729
 hparticletool.cc:2730
 hparticletool.cc:2731
 hparticletool.cc:2732
 hparticletool.cc:2733
 hparticletool.cc:2734
 hparticletool.cc:2735
 hparticletool.cc:2736
 hparticletool.cc:2737
 hparticletool.cc:2738
 hparticletool.cc:2739
 hparticletool.cc:2740
 hparticletool.cc:2741
 hparticletool.cc:2742
 hparticletool.cc:2743
 hparticletool.cc:2744
 hparticletool.cc:2745
 hparticletool.cc:2746
 hparticletool.cc:2747
 hparticletool.cc:2748
 hparticletool.cc:2749
 hparticletool.cc:2750
 hparticletool.cc:2751
 hparticletool.cc:2752
 hparticletool.cc:2753
 hparticletool.cc:2754
 hparticletool.cc:2755
 hparticletool.cc:2756
 hparticletool.cc:2757
 hparticletool.cc:2758
 hparticletool.cc:2759
 hparticletool.cc:2760
 hparticletool.cc:2761
 hparticletool.cc:2762
 hparticletool.cc:2763
 hparticletool.cc:2764
 hparticletool.cc:2765
 hparticletool.cc:2766
 hparticletool.cc:2767
 hparticletool.cc:2768
 hparticletool.cc:2769
 hparticletool.cc:2770
 hparticletool.cc:2771
 hparticletool.cc:2772
 hparticletool.cc:2773
 hparticletool.cc:2774
 hparticletool.cc:2775
 hparticletool.cc:2776
 hparticletool.cc:2777
 hparticletool.cc:2778
 hparticletool.cc:2779
 hparticletool.cc:2780
 hparticletool.cc:2781
 hparticletool.cc:2782
 hparticletool.cc:2783
 hparticletool.cc:2784
 hparticletool.cc:2785
 hparticletool.cc:2786
 hparticletool.cc:2787
 hparticletool.cc:2788
 hparticletool.cc:2789
 hparticletool.cc:2790
 hparticletool.cc:2791
 hparticletool.cc:2792
 hparticletool.cc:2793
 hparticletool.cc:2794
 hparticletool.cc:2795
 hparticletool.cc:2796
 hparticletool.cc:2797
 hparticletool.cc:2798
 hparticletool.cc:2799
 hparticletool.cc:2800
 hparticletool.cc:2801
 hparticletool.cc:2802
 hparticletool.cc:2803
 hparticletool.cc:2804
 hparticletool.cc:2805
 hparticletool.cc:2806
 hparticletool.cc:2807
 hparticletool.cc:2808
 hparticletool.cc:2809
 hparticletool.cc:2810
 hparticletool.cc:2811
 hparticletool.cc:2812
 hparticletool.cc:2813
 hparticletool.cc:2814
 hparticletool.cc:2815
 hparticletool.cc:2816
 hparticletool.cc:2817
 hparticletool.cc:2818
 hparticletool.cc:2819
 hparticletool.cc:2820
 hparticletool.cc:2821
 hparticletool.cc:2822
 hparticletool.cc:2823
 hparticletool.cc:2824
 hparticletool.cc:2825
 hparticletool.cc:2826
 hparticletool.cc:2827
 hparticletool.cc:2828
 hparticletool.cc:2829
 hparticletool.cc:2830
 hparticletool.cc:2831
 hparticletool.cc:2832
 hparticletool.cc:2833
 hparticletool.cc:2834
 hparticletool.cc:2835
 hparticletool.cc:2836
 hparticletool.cc:2837
 hparticletool.cc:2838
 hparticletool.cc:2839
 hparticletool.cc:2840
 hparticletool.cc:2841
 hparticletool.cc:2842
 hparticletool.cc:2843
 hparticletool.cc:2844
 hparticletool.cc:2845
 hparticletool.cc:2846
 hparticletool.cc:2847
 hparticletool.cc:2848
 hparticletool.cc:2849
 hparticletool.cc:2850
 hparticletool.cc:2851
 hparticletool.cc:2852
 hparticletool.cc:2853
 hparticletool.cc:2854
 hparticletool.cc:2855
 hparticletool.cc:2856
 hparticletool.cc:2857
 hparticletool.cc:2858
 hparticletool.cc:2859
 hparticletool.cc:2860
 hparticletool.cc:2861
 hparticletool.cc:2862
 hparticletool.cc:2863
 hparticletool.cc:2864
 hparticletool.cc:2865
 hparticletool.cc:2866
 hparticletool.cc:2867
 hparticletool.cc:2868
 hparticletool.cc:2869
 hparticletool.cc:2870
 hparticletool.cc:2871
 hparticletool.cc:2872
 hparticletool.cc:2873
 hparticletool.cc:2874
 hparticletool.cc:2875
 hparticletool.cc:2876
 hparticletool.cc:2877
 hparticletool.cc:2878
 hparticletool.cc:2879
 hparticletool.cc:2880
 hparticletool.cc:2881
 hparticletool.cc:2882
 hparticletool.cc:2883
 hparticletool.cc:2884
 hparticletool.cc:2885
 hparticletool.cc:2886
 hparticletool.cc:2887
 hparticletool.cc:2888
 hparticletool.cc:2889
 hparticletool.cc:2890
 hparticletool.cc:2891
 hparticletool.cc:2892
 hparticletool.cc:2893
 hparticletool.cc:2894
 hparticletool.cc:2895
 hparticletool.cc:2896
 hparticletool.cc:2897
 hparticletool.cc:2898
 hparticletool.cc:2899
 hparticletool.cc:2900
 hparticletool.cc:2901
 hparticletool.cc:2902
 hparticletool.cc:2903
 hparticletool.cc:2904
 hparticletool.cc:2905
 hparticletool.cc:2906
 hparticletool.cc:2907
 hparticletool.cc:2908
 hparticletool.cc:2909
 hparticletool.cc:2910
 hparticletool.cc:2911
 hparticletool.cc:2912
 hparticletool.cc:2913
 hparticletool.cc:2914
 hparticletool.cc:2915
 hparticletool.cc:2916
 hparticletool.cc:2917
 hparticletool.cc:2918
 hparticletool.cc:2919
 hparticletool.cc:2920
 hparticletool.cc:2921
 hparticletool.cc:2922
 hparticletool.cc:2923
 hparticletool.cc:2924
 hparticletool.cc:2925
 hparticletool.cc:2926
 hparticletool.cc:2927
 hparticletool.cc:2928
 hparticletool.cc:2929
 hparticletool.cc:2930
 hparticletool.cc:2931
 hparticletool.cc:2932
 hparticletool.cc:2933
 hparticletool.cc:2934
 hparticletool.cc:2935
 hparticletool.cc:2936
 hparticletool.cc:2937
 hparticletool.cc:2938
 hparticletool.cc:2939
 hparticletool.cc:2940
 hparticletool.cc:2941
 hparticletool.cc:2942
 hparticletool.cc:2943
 hparticletool.cc:2944
 hparticletool.cc:2945
 hparticletool.cc:2946
 hparticletool.cc:2947
 hparticletool.cc:2948
 hparticletool.cc:2949
 hparticletool.cc:2950
 hparticletool.cc:2951
 hparticletool.cc:2952
 hparticletool.cc:2953
 hparticletool.cc:2954
 hparticletool.cc:2955
 hparticletool.cc:2956
 hparticletool.cc:2957
 hparticletool.cc:2958
 hparticletool.cc:2959
 hparticletool.cc:2960
 hparticletool.cc:2961
 hparticletool.cc:2962
 hparticletool.cc:2963
 hparticletool.cc:2964
 hparticletool.cc:2965
 hparticletool.cc:2966
 hparticletool.cc:2967
 hparticletool.cc:2968
 hparticletool.cc:2969
 hparticletool.cc:2970
 hparticletool.cc:2971
 hparticletool.cc:2972
 hparticletool.cc:2973
 hparticletool.cc:2974
 hparticletool.cc:2975
 hparticletool.cc:2976
 hparticletool.cc:2977
 hparticletool.cc:2978
 hparticletool.cc:2979
 hparticletool.cc:2980
 hparticletool.cc:2981
 hparticletool.cc:2982
 hparticletool.cc:2983
 hparticletool.cc:2984
 hparticletool.cc:2985
 hparticletool.cc:2986
 hparticletool.cc:2987
 hparticletool.cc:2988
 hparticletool.cc:2989
 hparticletool.cc:2990
 hparticletool.cc:2991
 hparticletool.cc:2992
 hparticletool.cc:2993
 hparticletool.cc:2994
 hparticletool.cc:2995
 hparticletool.cc:2996
 hparticletool.cc:2997
 hparticletool.cc:2998
 hparticletool.cc:2999
 hparticletool.cc:3000
 hparticletool.cc:3001
 hparticletool.cc:3002
 hparticletool.cc:3003
 hparticletool.cc:3004
 hparticletool.cc:3005
 hparticletool.cc:3006
 hparticletool.cc:3007
 hparticletool.cc:3008
 hparticletool.cc:3009
 hparticletool.cc:3010
 hparticletool.cc:3011
 hparticletool.cc:3012
 hparticletool.cc:3013
 hparticletool.cc:3014
 hparticletool.cc:3015
 hparticletool.cc:3016
 hparticletool.cc:3017
 hparticletool.cc:3018
 hparticletool.cc:3019
 hparticletool.cc:3020
 hparticletool.cc:3021
 hparticletool.cc:3022
 hparticletool.cc:3023
 hparticletool.cc:3024
 hparticletool.cc:3025
 hparticletool.cc:3026
 hparticletool.cc:3027
 hparticletool.cc:3028
 hparticletool.cc:3029
 hparticletool.cc:3030
 hparticletool.cc:3031
 hparticletool.cc:3032
 hparticletool.cc:3033
 hparticletool.cc:3034
 hparticletool.cc:3035
 hparticletool.cc:3036
 hparticletool.cc:3037
 hparticletool.cc:3038
 hparticletool.cc:3039
 hparticletool.cc:3040
 hparticletool.cc:3041
 hparticletool.cc:3042
 hparticletool.cc:3043
 hparticletool.cc:3044
 hparticletool.cc:3045
 hparticletool.cc:3046
 hparticletool.cc:3047
 hparticletool.cc:3048
 hparticletool.cc:3049
 hparticletool.cc:3050
 hparticletool.cc:3051
 hparticletool.cc:3052
 hparticletool.cc:3053
 hparticletool.cc:3054
 hparticletool.cc:3055
 hparticletool.cc:3056
 hparticletool.cc:3057
 hparticletool.cc:3058
 hparticletool.cc:3059
 hparticletool.cc:3060
 hparticletool.cc:3061
 hparticletool.cc:3062
 hparticletool.cc:3063
 hparticletool.cc:3064
 hparticletool.cc:3065
 hparticletool.cc:3066
 hparticletool.cc:3067
 hparticletool.cc:3068
 hparticletool.cc:3069
 hparticletool.cc:3070
 hparticletool.cc:3071
 hparticletool.cc:3072
 hparticletool.cc:3073
 hparticletool.cc:3074
 hparticletool.cc:3075
 hparticletool.cc:3076
 hparticletool.cc:3077
 hparticletool.cc:3078
 hparticletool.cc:3079
 hparticletool.cc:3080
 hparticletool.cc:3081
 hparticletool.cc:3082
 hparticletool.cc:3083
 hparticletool.cc:3084
 hparticletool.cc:3085
 hparticletool.cc:3086
 hparticletool.cc:3087
 hparticletool.cc:3088
 hparticletool.cc:3089
 hparticletool.cc:3090
 hparticletool.cc:3091
 hparticletool.cc:3092
 hparticletool.cc:3093
 hparticletool.cc:3094
 hparticletool.cc:3095
 hparticletool.cc:3096
 hparticletool.cc:3097
 hparticletool.cc:3098
 hparticletool.cc:3099
 hparticletool.cc:3100
 hparticletool.cc:3101
 hparticletool.cc:3102
 hparticletool.cc:3103
 hparticletool.cc:3104
 hparticletool.cc:3105
 hparticletool.cc:3106
 hparticletool.cc:3107
 hparticletool.cc:3108
 hparticletool.cc:3109
 hparticletool.cc:3110
 hparticletool.cc:3111
 hparticletool.cc:3112
 hparticletool.cc:3113
 hparticletool.cc:3114
 hparticletool.cc:3115
 hparticletool.cc:3116
 hparticletool.cc:3117
 hparticletool.cc:3118
 hparticletool.cc:3119
 hparticletool.cc:3120
 hparticletool.cc:3121
 hparticletool.cc:3122
 hparticletool.cc:3123
 hparticletool.cc:3124
 hparticletool.cc:3125
 hparticletool.cc:3126
 hparticletool.cc:3127
 hparticletool.cc:3128
 hparticletool.cc:3129
 hparticletool.cc:3130
 hparticletool.cc:3131
 hparticletool.cc:3132
 hparticletool.cc:3133
 hparticletool.cc:3134
 hparticletool.cc:3135
 hparticletool.cc:3136
 hparticletool.cc:3137
 hparticletool.cc:3138
 hparticletool.cc:3139
 hparticletool.cc:3140
 hparticletool.cc:3141
 hparticletool.cc:3142
 hparticletool.cc:3143
 hparticletool.cc:3144
 hparticletool.cc:3145
 hparticletool.cc:3146
 hparticletool.cc:3147
 hparticletool.cc:3148
 hparticletool.cc:3149
 hparticletool.cc:3150
 hparticletool.cc:3151
 hparticletool.cc:3152
 hparticletool.cc:3153
 hparticletool.cc:3154
 hparticletool.cc:3155
 hparticletool.cc:3156
 hparticletool.cc:3157
 hparticletool.cc:3158
 hparticletool.cc:3159
 hparticletool.cc:3160
 hparticletool.cc:3161
 hparticletool.cc:3162
 hparticletool.cc:3163
 hparticletool.cc:3164
 hparticletool.cc:3165
 hparticletool.cc:3166
 hparticletool.cc:3167
 hparticletool.cc:3168
 hparticletool.cc:3169
 hparticletool.cc:3170
 hparticletool.cc:3171
 hparticletool.cc:3172
 hparticletool.cc:3173
 hparticletool.cc:3174
 hparticletool.cc:3175
 hparticletool.cc:3176
 hparticletool.cc:3177
 hparticletool.cc:3178
 hparticletool.cc:3179
 hparticletool.cc:3180
 hparticletool.cc:3181
 hparticletool.cc:3182
 hparticletool.cc:3183
 hparticletool.cc:3184
 hparticletool.cc:3185
 hparticletool.cc:3186
 hparticletool.cc:3187
 hparticletool.cc:3188
 hparticletool.cc:3189
 hparticletool.cc:3190
 hparticletool.cc:3191
 hparticletool.cc:3192
 hparticletool.cc:3193
 hparticletool.cc:3194
 hparticletool.cc:3195
 hparticletool.cc:3196
 hparticletool.cc:3197
 hparticletool.cc:3198
 hparticletool.cc:3199
 hparticletool.cc:3200
 hparticletool.cc:3201
 hparticletool.cc:3202
 hparticletool.cc:3203
 hparticletool.cc:3204
 hparticletool.cc:3205
 hparticletool.cc:3206
 hparticletool.cc:3207
 hparticletool.cc:3208
 hparticletool.cc:3209
 hparticletool.cc:3210
 hparticletool.cc:3211
 hparticletool.cc:3212
 hparticletool.cc:3213
 hparticletool.cc:3214
 hparticletool.cc:3215
 hparticletool.cc:3216
 hparticletool.cc:3217
 hparticletool.cc:3218
 hparticletool.cc:3219
 hparticletool.cc:3220
 hparticletool.cc:3221
 hparticletool.cc:3222
 hparticletool.cc:3223
 hparticletool.cc:3224
 hparticletool.cc:3225
 hparticletool.cc:3226
 hparticletool.cc:3227
 hparticletool.cc:3228
 hparticletool.cc:3229
 hparticletool.cc:3230
 hparticletool.cc:3231
 hparticletool.cc:3232
 hparticletool.cc:3233
 hparticletool.cc:3234
 hparticletool.cc:3235
 hparticletool.cc:3236
 hparticletool.cc:3237
 hparticletool.cc:3238
 hparticletool.cc:3239
 hparticletool.cc:3240
 hparticletool.cc:3241
 hparticletool.cc:3242
 hparticletool.cc:3243
 hparticletool.cc:3244
 hparticletool.cc:3245
 hparticletool.cc:3246
 hparticletool.cc:3247
 hparticletool.cc:3248
 hparticletool.cc:3249
 hparticletool.cc:3250
 hparticletool.cc:3251
 hparticletool.cc:3252
 hparticletool.cc:3253
 hparticletool.cc:3254
 hparticletool.cc:3255
 hparticletool.cc:3256
 hparticletool.cc:3257
 hparticletool.cc:3258
 hparticletool.cc:3259
 hparticletool.cc:3260
 hparticletool.cc:3261
 hparticletool.cc:3262
 hparticletool.cc:3263
 hparticletool.cc:3264
 hparticletool.cc:3265
 hparticletool.cc:3266
 hparticletool.cc:3267
 hparticletool.cc:3268
 hparticletool.cc:3269
 hparticletool.cc:3270
 hparticletool.cc:3271
 hparticletool.cc:3272
 hparticletool.cc:3273
 hparticletool.cc:3274
 hparticletool.cc:3275
 hparticletool.cc:3276
 hparticletool.cc:3277
 hparticletool.cc:3278
 hparticletool.cc:3279
 hparticletool.cc:3280
 hparticletool.cc:3281
 hparticletool.cc:3282
 hparticletool.cc:3283
 hparticletool.cc:3284
 hparticletool.cc:3285
 hparticletool.cc:3286
 hparticletool.cc:3287
 hparticletool.cc:3288
 hparticletool.cc:3289
 hparticletool.cc:3290
 hparticletool.cc:3291
 hparticletool.cc:3292
 hparticletool.cc:3293
 hparticletool.cc:3294
 hparticletool.cc:3295
 hparticletool.cc:3296
 hparticletool.cc:3297
 hparticletool.cc:3298
 hparticletool.cc:3299
 hparticletool.cc:3300
 hparticletool.cc:3301
 hparticletool.cc:3302
 hparticletool.cc:3303
 hparticletool.cc:3304
 hparticletool.cc:3305
 hparticletool.cc:3306
 hparticletool.cc:3307
 hparticletool.cc:3308
 hparticletool.cc:3309
 hparticletool.cc:3310
 hparticletool.cc:3311
 hparticletool.cc:3312
 hparticletool.cc:3313
 hparticletool.cc:3314
 hparticletool.cc:3315
 hparticletool.cc:3316
 hparticletool.cc:3317
 hparticletool.cc:3318
 hparticletool.cc:3319
 hparticletool.cc:3320
 hparticletool.cc:3321
 hparticletool.cc:3322
 hparticletool.cc:3323
 hparticletool.cc:3324
 hparticletool.cc:3325
 hparticletool.cc:3326
 hparticletool.cc:3327
 hparticletool.cc:3328
 hparticletool.cc:3329
 hparticletool.cc:3330
 hparticletool.cc:3331
 hparticletool.cc:3332
 hparticletool.cc:3333
 hparticletool.cc:3334
 hparticletool.cc:3335
 hparticletool.cc:3336
 hparticletool.cc:3337
 hparticletool.cc:3338
 hparticletool.cc:3339
 hparticletool.cc:3340
 hparticletool.cc:3341
 hparticletool.cc:3342
 hparticletool.cc:3343
 hparticletool.cc:3344
 hparticletool.cc:3345
 hparticletool.cc:3346
 hparticletool.cc:3347
 hparticletool.cc:3348
 hparticletool.cc:3349
 hparticletool.cc:3350
 hparticletool.cc:3351
 hparticletool.cc:3352
 hparticletool.cc:3353
 hparticletool.cc:3354
 hparticletool.cc:3355
 hparticletool.cc:3356
 hparticletool.cc:3357
 hparticletool.cc:3358
 hparticletool.cc:3359
 hparticletool.cc:3360
 hparticletool.cc:3361
 hparticletool.cc:3362
 hparticletool.cc:3363
 hparticletool.cc:3364
 hparticletool.cc:3365
 hparticletool.cc:3366
 hparticletool.cc:3367
 hparticletool.cc:3368
 hparticletool.cc:3369
 hparticletool.cc:3370
 hparticletool.cc:3371
 hparticletool.cc:3372
 hparticletool.cc:3373
 hparticletool.cc:3374
 hparticletool.cc:3375
 hparticletool.cc:3376
 hparticletool.cc:3377
 hparticletool.cc:3378
 hparticletool.cc:3379
 hparticletool.cc:3380
 hparticletool.cc:3381
 hparticletool.cc:3382
 hparticletool.cc:3383
 hparticletool.cc:3384
 hparticletool.cc:3385
 hparticletool.cc:3386
 hparticletool.cc:3387
 hparticletool.cc:3388
 hparticletool.cc:3389
 hparticletool.cc:3390
 hparticletool.cc:3391
 hparticletool.cc:3392
 hparticletool.cc:3393
 hparticletool.cc:3394
 hparticletool.cc:3395
 hparticletool.cc:3396
 hparticletool.cc:3397
 hparticletool.cc:3398
 hparticletool.cc:3399
 hparticletool.cc:3400
 hparticletool.cc:3401
 hparticletool.cc:3402
 hparticletool.cc:3403
 hparticletool.cc:3404
 hparticletool.cc:3405
 hparticletool.cc:3406
 hparticletool.cc:3407
 hparticletool.cc:3408
 hparticletool.cc:3409
 hparticletool.cc:3410
 hparticletool.cc:3411
 hparticletool.cc:3412
 hparticletool.cc:3413
 hparticletool.cc:3414
 hparticletool.cc:3415
 hparticletool.cc:3416
 hparticletool.cc:3417
 hparticletool.cc:3418
 hparticletool.cc:3419
 hparticletool.cc:3420
 hparticletool.cc:3421
 hparticletool.cc:3422
 hparticletool.cc:3423
 hparticletool.cc:3424
 hparticletool.cc:3425
 hparticletool.cc:3426
 hparticletool.cc:3427
 hparticletool.cc:3428
 hparticletool.cc:3429
 hparticletool.cc:3430
 hparticletool.cc:3431
 hparticletool.cc:3432
 hparticletool.cc:3433
 hparticletool.cc:3434
 hparticletool.cc:3435
 hparticletool.cc:3436
 hparticletool.cc:3437
 hparticletool.cc:3438
 hparticletool.cc:3439
 hparticletool.cc:3440
 hparticletool.cc:3441
 hparticletool.cc:3442
 hparticletool.cc:3443
 hparticletool.cc:3444
 hparticletool.cc:3445
 hparticletool.cc:3446
 hparticletool.cc:3447
 hparticletool.cc:3448
 hparticletool.cc:3449
 hparticletool.cc:3450
 hparticletool.cc:3451
 hparticletool.cc:3452
 hparticletool.cc:3453
 hparticletool.cc:3454
 hparticletool.cc:3455
 hparticletool.cc:3456
 hparticletool.cc:3457
 hparticletool.cc:3458
 hparticletool.cc:3459
 hparticletool.cc:3460
 hparticletool.cc:3461
 hparticletool.cc:3462
 hparticletool.cc:3463
 hparticletool.cc:3464
 hparticletool.cc:3465
 hparticletool.cc:3466
 hparticletool.cc:3467
 hparticletool.cc:3468
 hparticletool.cc:3469
 hparticletool.cc:3470
 hparticletool.cc:3471
 hparticletool.cc:3472
 hparticletool.cc:3473
 hparticletool.cc:3474
 hparticletool.cc:3475
 hparticletool.cc:3476
 hparticletool.cc:3477
 hparticletool.cc:3478
 hparticletool.cc:3479
 hparticletool.cc:3480
 hparticletool.cc:3481
 hparticletool.cc:3482
 hparticletool.cc:3483
 hparticletool.cc:3484
 hparticletool.cc:3485
 hparticletool.cc:3486
 hparticletool.cc:3487
 hparticletool.cc:3488
 hparticletool.cc:3489
 hparticletool.cc:3490
 hparticletool.cc:3491
 hparticletool.cc:3492
 hparticletool.cc:3493
 hparticletool.cc:3494
 hparticletool.cc:3495
 hparticletool.cc:3496
 hparticletool.cc:3497
 hparticletool.cc:3498
 hparticletool.cc:3499
 hparticletool.cc:3500
 hparticletool.cc:3501
 hparticletool.cc:3502
 hparticletool.cc:3503
 hparticletool.cc:3504
 hparticletool.cc:3505
 hparticletool.cc:3506
 hparticletool.cc:3507
 hparticletool.cc:3508
 hparticletool.cc:3509
 hparticletool.cc:3510
 hparticletool.cc:3511
 hparticletool.cc:3512
 hparticletool.cc:3513
 hparticletool.cc:3514
 hparticletool.cc:3515
 hparticletool.cc:3516
 hparticletool.cc:3517
 hparticletool.cc:3518
 hparticletool.cc:3519
 hparticletool.cc:3520
 hparticletool.cc:3521
 hparticletool.cc:3522
 hparticletool.cc:3523
 hparticletool.cc:3524
 hparticletool.cc:3525
 hparticletool.cc:3526
 hparticletool.cc:3527
 hparticletool.cc:3528
 hparticletool.cc:3529
 hparticletool.cc:3530
 hparticletool.cc:3531
 hparticletool.cc:3532
 hparticletool.cc:3533
 hparticletool.cc:3534
 hparticletool.cc:3535
 hparticletool.cc:3536
 hparticletool.cc:3537
 hparticletool.cc:3538
 hparticletool.cc:3539
 hparticletool.cc:3540
 hparticletool.cc:3541
 hparticletool.cc:3542
 hparticletool.cc:3543
 hparticletool.cc:3544
 hparticletool.cc:3545
 hparticletool.cc:3546
 hparticletool.cc:3547
 hparticletool.cc:3548
 hparticletool.cc:3549
 hparticletool.cc:3550
 hparticletool.cc:3551
 hparticletool.cc:3552
 hparticletool.cc:3553
 hparticletool.cc:3554
 hparticletool.cc:3555
 hparticletool.cc:3556
 hparticletool.cc:3557
 hparticletool.cc:3558
 hparticletool.cc:3559
 hparticletool.cc:3560
 hparticletool.cc:3561
 hparticletool.cc:3562
 hparticletool.cc:3563
 hparticletool.cc:3564
 hparticletool.cc:3565
 hparticletool.cc:3566
 hparticletool.cc:3567
 hparticletool.cc:3568
 hparticletool.cc:3569
 hparticletool.cc:3570
 hparticletool.cc:3571
 hparticletool.cc:3572
 hparticletool.cc:3573
 hparticletool.cc:3574
 hparticletool.cc:3575
 hparticletool.cc:3576
 hparticletool.cc:3577
 hparticletool.cc:3578
 hparticletool.cc:3579
 hparticletool.cc:3580
 hparticletool.cc:3581
 hparticletool.cc:3582
 hparticletool.cc:3583
 hparticletool.cc:3584
 hparticletool.cc:3585
 hparticletool.cc:3586
 hparticletool.cc:3587
 hparticletool.cc:3588
 hparticletool.cc:3589
 hparticletool.cc:3590
 hparticletool.cc:3591
 hparticletool.cc:3592
 hparticletool.cc:3593
 hparticletool.cc:3594
 hparticletool.cc:3595
 hparticletool.cc:3596
 hparticletool.cc:3597
 hparticletool.cc:3598
 hparticletool.cc:3599
 hparticletool.cc:3600
 hparticletool.cc:3601
 hparticletool.cc:3602
 hparticletool.cc:3603
 hparticletool.cc:3604
 hparticletool.cc:3605
 hparticletool.cc:3606
 hparticletool.cc:3607
 hparticletool.cc:3608
 hparticletool.cc:3609
 hparticletool.cc:3610
 hparticletool.cc:3611
 hparticletool.cc:3612
 hparticletool.cc:3613
 hparticletool.cc:3614
 hparticletool.cc:3615
 hparticletool.cc:3616
 hparticletool.cc:3617
 hparticletool.cc:3618
 hparticletool.cc:3619
 hparticletool.cc:3620
 hparticletool.cc:3621
 hparticletool.cc:3622
 hparticletool.cc:3623
 hparticletool.cc:3624
 hparticletool.cc:3625
 hparticletool.cc:3626
 hparticletool.cc:3627
 hparticletool.cc:3628
 hparticletool.cc:3629
 hparticletool.cc:3630
 hparticletool.cc:3631
 hparticletool.cc:3632
 hparticletool.cc:3633
 hparticletool.cc:3634
 hparticletool.cc:3635
 hparticletool.cc:3636
 hparticletool.cc:3637
 hparticletool.cc:3638
 hparticletool.cc:3639
 hparticletool.cc:3640
 hparticletool.cc:3641
 hparticletool.cc:3642
 hparticletool.cc:3643
 hparticletool.cc:3644
 hparticletool.cc:3645
 hparticletool.cc:3646
 hparticletool.cc:3647
 hparticletool.cc:3648
 hparticletool.cc:3649
 hparticletool.cc:3650
 hparticletool.cc:3651
 hparticletool.cc:3652
 hparticletool.cc:3653
 hparticletool.cc:3654
 hparticletool.cc:3655
 hparticletool.cc:3656
 hparticletool.cc:3657
 hparticletool.cc:3658
 hparticletool.cc:3659
 hparticletool.cc:3660
 hparticletool.cc:3661
 hparticletool.cc:3662
 hparticletool.cc:3663
 hparticletool.cc:3664
 hparticletool.cc:3665
 hparticletool.cc:3666
 hparticletool.cc:3667
 hparticletool.cc:3668
 hparticletool.cc:3669
 hparticletool.cc:3670
 hparticletool.cc:3671
 hparticletool.cc:3672
 hparticletool.cc:3673
 hparticletool.cc:3674
 hparticletool.cc:3675
 hparticletool.cc:3676
 hparticletool.cc:3677
 hparticletool.cc:3678
 hparticletool.cc:3679
 hparticletool.cc:3680
 hparticletool.cc:3681
 hparticletool.cc:3682
 hparticletool.cc:3683
 hparticletool.cc:3684
 hparticletool.cc:3685
 hparticletool.cc:3686
 hparticletool.cc:3687
 hparticletool.cc:3688
 hparticletool.cc:3689
 hparticletool.cc:3690
 hparticletool.cc:3691
 hparticletool.cc:3692
 hparticletool.cc:3693
 hparticletool.cc:3694
 hparticletool.cc:3695
 hparticletool.cc:3696
 hparticletool.cc:3697
 hparticletool.cc:3698
 hparticletool.cc:3699
 hparticletool.cc:3700
 hparticletool.cc:3701
 hparticletool.cc:3702
 hparticletool.cc:3703
 hparticletool.cc:3704
 hparticletool.cc:3705
 hparticletool.cc:3706
 hparticletool.cc:3707
 hparticletool.cc:3708
 hparticletool.cc:3709
 hparticletool.cc:3710
 hparticletool.cc:3711
 hparticletool.cc:3712
 hparticletool.cc:3713
 hparticletool.cc:3714
 hparticletool.cc:3715
 hparticletool.cc:3716
 hparticletool.cc:3717
 hparticletool.cc:3718
 hparticletool.cc:3719
 hparticletool.cc:3720
 hparticletool.cc:3721
 hparticletool.cc:3722
 hparticletool.cc:3723
 hparticletool.cc:3724
 hparticletool.cc:3725
 hparticletool.cc:3726
 hparticletool.cc:3727
 hparticletool.cc:3728
 hparticletool.cc:3729
 hparticletool.cc:3730
 hparticletool.cc:3731
 hparticletool.cc:3732
 hparticletool.cc:3733
 hparticletool.cc:3734
 hparticletool.cc:3735
 hparticletool.cc:3736
 hparticletool.cc:3737
 hparticletool.cc:3738
 hparticletool.cc:3739
 hparticletool.cc:3740
 hparticletool.cc:3741
 hparticletool.cc:3742
 hparticletool.cc:3743
 hparticletool.cc:3744
 hparticletool.cc:3745
 hparticletool.cc:3746
 hparticletool.cc:3747
 hparticletool.cc:3748
 hparticletool.cc:3749
 hparticletool.cc:3750
 hparticletool.cc:3751
 hparticletool.cc:3752
 hparticletool.cc:3753
 hparticletool.cc:3754
 hparticletool.cc:3755
 hparticletool.cc:3756
 hparticletool.cc:3757
 hparticletool.cc:3758
 hparticletool.cc:3759
 hparticletool.cc:3760
 hparticletool.cc:3761
 hparticletool.cc:3762
 hparticletool.cc:3763
 hparticletool.cc:3764
 hparticletool.cc:3765
 hparticletool.cc:3766
 hparticletool.cc:3767
 hparticletool.cc:3768
 hparticletool.cc:3769
 hparticletool.cc:3770
 hparticletool.cc:3771
 hparticletool.cc:3772
 hparticletool.cc:3773
 hparticletool.cc:3774
 hparticletool.cc:3775
 hparticletool.cc:3776
 hparticletool.cc:3777
 hparticletool.cc:3778
 hparticletool.cc:3779
 hparticletool.cc:3780
 hparticletool.cc:3781
 hparticletool.cc:3782
 hparticletool.cc:3783
 hparticletool.cc:3784
 hparticletool.cc:3785
 hparticletool.cc:3786
 hparticletool.cc:3787
 hparticletool.cc:3788
 hparticletool.cc:3789
 hparticletool.cc:3790
 hparticletool.cc:3791
 hparticletool.cc:3792
 hparticletool.cc:3793
 hparticletool.cc:3794
 hparticletool.cc:3795
 hparticletool.cc:3796
 hparticletool.cc:3797
 hparticletool.cc:3798
 hparticletool.cc:3799
 hparticletool.cc:3800
 hparticletool.cc:3801
 hparticletool.cc:3802
 hparticletool.cc:3803
 hparticletool.cc:3804
 hparticletool.cc:3805
 hparticletool.cc:3806
 hparticletool.cc:3807
 hparticletool.cc:3808
 hparticletool.cc:3809
 hparticletool.cc:3810
 hparticletool.cc:3811
 hparticletool.cc:3812
 hparticletool.cc:3813
 hparticletool.cc:3814
 hparticletool.cc:3815
 hparticletool.cc:3816
 hparticletool.cc:3817
 hparticletool.cc:3818
 hparticletool.cc:3819
 hparticletool.cc:3820
 hparticletool.cc:3821
 hparticletool.cc:3822
 hparticletool.cc:3823
 hparticletool.cc:3824
 hparticletool.cc:3825
 hparticletool.cc:3826
 hparticletool.cc:3827
 hparticletool.cc:3828
 hparticletool.cc:3829
 hparticletool.cc:3830
 hparticletool.cc:3831
 hparticletool.cc:3832
 hparticletool.cc:3833
 hparticletool.cc:3834
 hparticletool.cc:3835
 hparticletool.cc:3836
 hparticletool.cc:3837
 hparticletool.cc:3838
 hparticletool.cc:3839
 hparticletool.cc:3840
 hparticletool.cc:3841
 hparticletool.cc:3842
 hparticletool.cc:3843
 hparticletool.cc:3844
 hparticletool.cc:3845
 hparticletool.cc:3846
 hparticletool.cc:3847
 hparticletool.cc:3848
 hparticletool.cc:3849
 hparticletool.cc:3850
 hparticletool.cc:3851
 hparticletool.cc:3852
 hparticletool.cc:3853
 hparticletool.cc:3854
 hparticletool.cc:3855
 hparticletool.cc:3856
 hparticletool.cc:3857
 hparticletool.cc:3858
 hparticletool.cc:3859
 hparticletool.cc:3860
 hparticletool.cc:3861
 hparticletool.cc:3862
 hparticletool.cc:3863
 hparticletool.cc:3864
 hparticletool.cc:3865
 hparticletool.cc:3866
 hparticletool.cc:3867
 hparticletool.cc:3868
 hparticletool.cc:3869
 hparticletool.cc:3870
 hparticletool.cc:3871
 hparticletool.cc:3872
 hparticletool.cc:3873
 hparticletool.cc:3874
 hparticletool.cc:3875
 hparticletool.cc:3876
 hparticletool.cc:3877
 hparticletool.cc:3878
 hparticletool.cc:3879
 hparticletool.cc:3880
 hparticletool.cc:3881
 hparticletool.cc:3882
 hparticletool.cc:3883
 hparticletool.cc:3884
 hparticletool.cc:3885
 hparticletool.cc:3886
 hparticletool.cc:3887
 hparticletool.cc:3888
 hparticletool.cc:3889
 hparticletool.cc:3890
 hparticletool.cc:3891
 hparticletool.cc:3892
 hparticletool.cc:3893
 hparticletool.cc:3894
 hparticletool.cc:3895
 hparticletool.cc:3896
 hparticletool.cc:3897
 hparticletool.cc:3898
 hparticletool.cc:3899
 hparticletool.cc:3900
 hparticletool.cc:3901
 hparticletool.cc:3902
 hparticletool.cc:3903
 hparticletool.cc:3904
 hparticletool.cc:3905
 hparticletool.cc:3906
 hparticletool.cc:3907
 hparticletool.cc:3908
 hparticletool.cc:3909
 hparticletool.cc:3910
 hparticletool.cc:3911
 hparticletool.cc:3912
 hparticletool.cc:3913
 hparticletool.cc:3914
 hparticletool.cc:3915
 hparticletool.cc:3916
 hparticletool.cc:3917
 hparticletool.cc:3918
 hparticletool.cc:3919
 hparticletool.cc:3920
 hparticletool.cc:3921
 hparticletool.cc:3922
 hparticletool.cc:3923
 hparticletool.cc:3924
 hparticletool.cc:3925
 hparticletool.cc:3926
 hparticletool.cc:3927
 hparticletool.cc:3928
 hparticletool.cc:3929
 hparticletool.cc:3930
 hparticletool.cc:3931
 hparticletool.cc:3932
 hparticletool.cc:3933
 hparticletool.cc:3934
 hparticletool.cc:3935
 hparticletool.cc:3936
 hparticletool.cc:3937
 hparticletool.cc:3938
 hparticletool.cc:3939
 hparticletool.cc:3940
 hparticletool.cc:3941
 hparticletool.cc:3942
 hparticletool.cc:3943
 hparticletool.cc:3944
 hparticletool.cc:3945
 hparticletool.cc:3946
 hparticletool.cc:3947
 hparticletool.cc:3948
 hparticletool.cc:3949
 hparticletool.cc:3950
 hparticletool.cc:3951
 hparticletool.cc:3952
 hparticletool.cc:3953
 hparticletool.cc:3954
 hparticletool.cc:3955
 hparticletool.cc:3956
 hparticletool.cc:3957
 hparticletool.cc:3958
 hparticletool.cc:3959
 hparticletool.cc:3960
 hparticletool.cc:3961
 hparticletool.cc:3962
 hparticletool.cc:3963
 hparticletool.cc:3964
 hparticletool.cc:3965
 hparticletool.cc:3966
 hparticletool.cc:3967
 hparticletool.cc:3968
 hparticletool.cc:3969
 hparticletool.cc:3970
 hparticletool.cc:3971
 hparticletool.cc:3972
 hparticletool.cc:3973
 hparticletool.cc:3974
 hparticletool.cc:3975
 hparticletool.cc:3976
 hparticletool.cc:3977
 hparticletool.cc:3978
 hparticletool.cc:3979
 hparticletool.cc:3980
 hparticletool.cc:3981
 hparticletool.cc:3982
 hparticletool.cc:3983
 hparticletool.cc:3984
 hparticletool.cc:3985
 hparticletool.cc:3986
 hparticletool.cc:3987
 hparticletool.cc:3988
 hparticletool.cc:3989
 hparticletool.cc:3990
 hparticletool.cc:3991
 hparticletool.cc:3992
 hparticletool.cc:3993
 hparticletool.cc:3994
 hparticletool.cc:3995
 hparticletool.cc:3996
 hparticletool.cc:3997
 hparticletool.cc:3998
 hparticletool.cc:3999
 hparticletool.cc:4000
 hparticletool.cc:4001
 hparticletool.cc:4002
 hparticletool.cc:4003
 hparticletool.cc:4004
 hparticletool.cc:4005
 hparticletool.cc:4006
 hparticletool.cc:4007
 hparticletool.cc:4008
 hparticletool.cc:4009
 hparticletool.cc:4010
 hparticletool.cc:4011
 hparticletool.cc:4012
 hparticletool.cc:4013
 hparticletool.cc:4014
 hparticletool.cc:4015
 hparticletool.cc:4016
 hparticletool.cc:4017
 hparticletool.cc:4018
 hparticletool.cc:4019
 hparticletool.cc:4020
 hparticletool.cc:4021
 hparticletool.cc:4022
 hparticletool.cc:4023
 hparticletool.cc:4024
 hparticletool.cc:4025
 hparticletool.cc:4026
 hparticletool.cc:4027
 hparticletool.cc:4028
 hparticletool.cc:4029
 hparticletool.cc:4030
 hparticletool.cc:4031
 hparticletool.cc:4032
 hparticletool.cc:4033
 hparticletool.cc:4034
 hparticletool.cc:4035
 hparticletool.cc:4036
 hparticletool.cc:4037
 hparticletool.cc:4038
 hparticletool.cc:4039
 hparticletool.cc:4040
 hparticletool.cc:4041
 hparticletool.cc:4042
 hparticletool.cc:4043
 hparticletool.cc:4044
 hparticletool.cc:4045
 hparticletool.cc:4046
 hparticletool.cc:4047
 hparticletool.cc:4048
 hparticletool.cc:4049
 hparticletool.cc:4050
 hparticletool.cc:4051
 hparticletool.cc:4052
 hparticletool.cc:4053
 hparticletool.cc:4054
 hparticletool.cc:4055
 hparticletool.cc:4056
 hparticletool.cc:4057
 hparticletool.cc:4058
 hparticletool.cc:4059
 hparticletool.cc:4060
 hparticletool.cc:4061
 hparticletool.cc:4062
 hparticletool.cc:4063
 hparticletool.cc:4064
 hparticletool.cc:4065
 hparticletool.cc:4066
 hparticletool.cc:4067
 hparticletool.cc:4068
 hparticletool.cc:4069
 hparticletool.cc:4070
 hparticletool.cc:4071
 hparticletool.cc:4072
 hparticletool.cc:4073
 hparticletool.cc:4074
 hparticletool.cc:4075
 hparticletool.cc:4076
 hparticletool.cc:4077
 hparticletool.cc:4078
 hparticletool.cc:4079
 hparticletool.cc:4080
 hparticletool.cc:4081
 hparticletool.cc:4082
 hparticletool.cc:4083
 hparticletool.cc:4084
 hparticletool.cc:4085
 hparticletool.cc:4086
 hparticletool.cc:4087
 hparticletool.cc:4088
 hparticletool.cc:4089
 hparticletool.cc:4090
 hparticletool.cc:4091
 hparticletool.cc:4092
 hparticletool.cc:4093
 hparticletool.cc:4094
 hparticletool.cc:4095
 hparticletool.cc:4096
 hparticletool.cc:4097
 hparticletool.cc:4098
 hparticletool.cc:4099
 hparticletool.cc:4100
 hparticletool.cc:4101
 hparticletool.cc:4102
 hparticletool.cc:4103
 hparticletool.cc:4104
 hparticletool.cc:4105
 hparticletool.cc:4106
 hparticletool.cc:4107
 hparticletool.cc:4108
 hparticletool.cc:4109
 hparticletool.cc:4110
 hparticletool.cc:4111
 hparticletool.cc:4112
 hparticletool.cc:4113
 hparticletool.cc:4114
 hparticletool.cc:4115
 hparticletool.cc:4116
 hparticletool.cc:4117
 hparticletool.cc:4118
 hparticletool.cc:4119
 hparticletool.cc:4120
 hparticletool.cc:4121
 hparticletool.cc:4122
 hparticletool.cc:4123
 hparticletool.cc:4124
 hparticletool.cc:4125
 hparticletool.cc:4126
 hparticletool.cc:4127
 hparticletool.cc:4128
 hparticletool.cc:4129
 hparticletool.cc:4130
 hparticletool.cc:4131
 hparticletool.cc:4132
 hparticletool.cc:4133
 hparticletool.cc:4134
 hparticletool.cc:4135
 hparticletool.cc:4136
 hparticletool.cc:4137
 hparticletool.cc:4138
 hparticletool.cc:4139
 hparticletool.cc:4140
 hparticletool.cc:4141
 hparticletool.cc:4142
 hparticletool.cc:4143
 hparticletool.cc:4144
 hparticletool.cc:4145
 hparticletool.cc:4146
 hparticletool.cc:4147
 hparticletool.cc:4148
 hparticletool.cc:4149
 hparticletool.cc:4150
 hparticletool.cc:4151
 hparticletool.cc:4152
 hparticletool.cc:4153
 hparticletool.cc:4154
 hparticletool.cc:4155
 hparticletool.cc:4156
 hparticletool.cc:4157
 hparticletool.cc:4158
 hparticletool.cc:4159
 hparticletool.cc:4160
 hparticletool.cc:4161
 hparticletool.cc:4162
 hparticletool.cc:4163
 hparticletool.cc:4164
 hparticletool.cc:4165
 hparticletool.cc:4166
 hparticletool.cc:4167
 hparticletool.cc:4168
 hparticletool.cc:4169
 hparticletool.cc:4170
 hparticletool.cc:4171
 hparticletool.cc:4172
 hparticletool.cc:4173
 hparticletool.cc:4174
 hparticletool.cc:4175
 hparticletool.cc:4176
 hparticletool.cc:4177
 hparticletool.cc:4178
 hparticletool.cc:4179
 hparticletool.cc:4180
 hparticletool.cc:4181
 hparticletool.cc:4182
 hparticletool.cc:4183
 hparticletool.cc:4184
 hparticletool.cc:4185
 hparticletool.cc:4186
 hparticletool.cc:4187
 hparticletool.cc:4188
 hparticletool.cc:4189
 hparticletool.cc:4190
 hparticletool.cc:4191
 hparticletool.cc:4192
 hparticletool.cc:4193
 hparticletool.cc:4194
 hparticletool.cc:4195
 hparticletool.cc:4196
 hparticletool.cc:4197
 hparticletool.cc:4198
 hparticletool.cc:4199
 hparticletool.cc:4200
 hparticletool.cc:4201
 hparticletool.cc:4202
 hparticletool.cc:4203
 hparticletool.cc:4204
 hparticletool.cc:4205
 hparticletool.cc:4206
 hparticletool.cc:4207
 hparticletool.cc:4208
 hparticletool.cc:4209
 hparticletool.cc:4210
 hparticletool.cc:4211
 hparticletool.cc:4212
 hparticletool.cc:4213
 hparticletool.cc:4214
 hparticletool.cc:4215
 hparticletool.cc:4216
 hparticletool.cc:4217
 hparticletool.cc:4218
 hparticletool.cc:4219
 hparticletool.cc:4220
 hparticletool.cc:4221
 hparticletool.cc:4222
 hparticletool.cc:4223
 hparticletool.cc:4224
 hparticletool.cc:4225
 hparticletool.cc:4226
 hparticletool.cc:4227
 hparticletool.cc:4228
 hparticletool.cc:4229
 hparticletool.cc:4230
 hparticletool.cc:4231
 hparticletool.cc:4232
 hparticletool.cc:4233
 hparticletool.cc:4234
 hparticletool.cc:4235
 hparticletool.cc:4236
 hparticletool.cc:4237
 hparticletool.cc:4238
 hparticletool.cc:4239
 hparticletool.cc:4240
 hparticletool.cc:4241
 hparticletool.cc:4242
 hparticletool.cc:4243
 hparticletool.cc:4244
 hparticletool.cc:4245
 hparticletool.cc:4246
 hparticletool.cc:4247
 hparticletool.cc:4248
 hparticletool.cc:4249
 hparticletool.cc:4250
 hparticletool.cc:4251
 hparticletool.cc:4252
 hparticletool.cc:4253
 hparticletool.cc:4254
 hparticletool.cc:4255
 hparticletool.cc:4256
 hparticletool.cc:4257
 hparticletool.cc:4258
 hparticletool.cc:4259
 hparticletool.cc:4260
 hparticletool.cc:4261
 hparticletool.cc:4262
 hparticletool.cc:4263
 hparticletool.cc:4264
 hparticletool.cc:4265
 hparticletool.cc:4266
 hparticletool.cc:4267
 hparticletool.cc:4268
 hparticletool.cc:4269
 hparticletool.cc:4270
 hparticletool.cc:4271
 hparticletool.cc:4272
 hparticletool.cc:4273
 hparticletool.cc:4274
 hparticletool.cc:4275
 hparticletool.cc:4276
 hparticletool.cc:4277
 hparticletool.cc:4278
 hparticletool.cc:4279
 hparticletool.cc:4280
 hparticletool.cc:4281
 hparticletool.cc:4282
 hparticletool.cc:4283
 hparticletool.cc:4284
 hparticletool.cc:4285
 hparticletool.cc:4286
 hparticletool.cc:4287
 hparticletool.cc:4288
 hparticletool.cc:4289
 hparticletool.cc:4290
 hparticletool.cc:4291
 hparticletool.cc:4292
 hparticletool.cc:4293
 hparticletool.cc:4294
 hparticletool.cc:4295
 hparticletool.cc:4296
 hparticletool.cc:4297
 hparticletool.cc:4298
 hparticletool.cc:4299
 hparticletool.cc:4300
 hparticletool.cc:4301
 hparticletool.cc:4302
 hparticletool.cc:4303
 hparticletool.cc:4304
 hparticletool.cc:4305
 hparticletool.cc:4306
 hparticletool.cc:4307
 hparticletool.cc:4308
 hparticletool.cc:4309
 hparticletool.cc:4310
 hparticletool.cc:4311
 hparticletool.cc:4312
 hparticletool.cc:4313
 hparticletool.cc:4314
 hparticletool.cc:4315
 hparticletool.cc:4316
 hparticletool.cc:4317
 hparticletool.cc:4318
 hparticletool.cc:4319
 hparticletool.cc:4320
 hparticletool.cc:4321
 hparticletool.cc:4322
 hparticletool.cc:4323
 hparticletool.cc:4324
 hparticletool.cc:4325
 hparticletool.cc:4326
 hparticletool.cc:4327
 hparticletool.cc:4328
 hparticletool.cc:4329
 hparticletool.cc:4330
 hparticletool.cc:4331
 hparticletool.cc:4332
 hparticletool.cc:4333
 hparticletool.cc:4334
 hparticletool.cc:4335
 hparticletool.cc:4336
 hparticletool.cc:4337
 hparticletool.cc:4338
 hparticletool.cc:4339
 hparticletool.cc:4340
 hparticletool.cc:4341
 hparticletool.cc:4342
 hparticletool.cc:4343
 hparticletool.cc:4344
 hparticletool.cc:4345
 hparticletool.cc:4346
 hparticletool.cc:4347
 hparticletool.cc:4348
 hparticletool.cc:4349
 hparticletool.cc:4350
 hparticletool.cc:4351
 hparticletool.cc:4352
 hparticletool.cc:4353
 hparticletool.cc:4354
 hparticletool.cc:4355
 hparticletool.cc:4356
 hparticletool.cc:4357
 hparticletool.cc:4358
 hparticletool.cc:4359
 hparticletool.cc:4360
 hparticletool.cc:4361
 hparticletool.cc:4362
 hparticletool.cc:4363
 hparticletool.cc:4364
 hparticletool.cc:4365
 hparticletool.cc:4366
 hparticletool.cc:4367
 hparticletool.cc:4368
 hparticletool.cc:4369
 hparticletool.cc:4370
 hparticletool.cc:4371
 hparticletool.cc:4372
 hparticletool.cc:4373
 hparticletool.cc:4374
 hparticletool.cc:4375
 hparticletool.cc:4376
 hparticletool.cc:4377
 hparticletool.cc:4378
 hparticletool.cc:4379
 hparticletool.cc:4380
 hparticletool.cc:4381
 hparticletool.cc:4382
 hparticletool.cc:4383
 hparticletool.cc:4384
 hparticletool.cc:4385
 hparticletool.cc:4386
 hparticletool.cc:4387
 hparticletool.cc:4388
 hparticletool.cc:4389
 hparticletool.cc:4390
 hparticletool.cc:4391
 hparticletool.cc:4392
 hparticletool.cc:4393
 hparticletool.cc:4394
 hparticletool.cc:4395
 hparticletool.cc:4396
 hparticletool.cc:4397
 hparticletool.cc:4398
 hparticletool.cc:4399
 hparticletool.cc:4400
 hparticletool.cc:4401
 hparticletool.cc:4402
 hparticletool.cc:4403
 hparticletool.cc:4404
 hparticletool.cc:4405
 hparticletool.cc:4406
 hparticletool.cc:4407
 hparticletool.cc:4408
 hparticletool.cc:4409
 hparticletool.cc:4410
 hparticletool.cc:4411
 hparticletool.cc:4412
 hparticletool.cc:4413
 hparticletool.cc:4414
 hparticletool.cc:4415
 hparticletool.cc:4416
 hparticletool.cc:4417
 hparticletool.cc:4418
 hparticletool.cc:4419
 hparticletool.cc:4420
 hparticletool.cc:4421
 hparticletool.cc:4422
 hparticletool.cc:4423
 hparticletool.cc:4424
 hparticletool.cc:4425
 hparticletool.cc:4426
 hparticletool.cc:4427
 hparticletool.cc:4428
 hparticletool.cc:4429
 hparticletool.cc:4430
 hparticletool.cc:4431
 hparticletool.cc:4432
 hparticletool.cc:4433
 hparticletool.cc:4434
 hparticletool.cc:4435
 hparticletool.cc:4436
 hparticletool.cc:4437
 hparticletool.cc:4438
 hparticletool.cc:4439
 hparticletool.cc:4440
 hparticletool.cc:4441
 hparticletool.cc:4442
 hparticletool.cc:4443
 hparticletool.cc:4444
 hparticletool.cc:4445
 hparticletool.cc:4446
 hparticletool.cc:4447
 hparticletool.cc:4448
 hparticletool.cc:4449
 hparticletool.cc:4450
 hparticletool.cc:4451
 hparticletool.cc:4452
 hparticletool.cc:4453
 hparticletool.cc:4454
 hparticletool.cc:4455
 hparticletool.cc:4456
 hparticletool.cc:4457
 hparticletool.cc:4458
 hparticletool.cc:4459
 hparticletool.cc:4460
 hparticletool.cc:4461
 hparticletool.cc:4462
 hparticletool.cc:4463
 hparticletool.cc:4464
 hparticletool.cc:4465
 hparticletool.cc:4466
 hparticletool.cc:4467
 hparticletool.cc:4468
 hparticletool.cc:4469
 hparticletool.cc:4470
 hparticletool.cc:4471
 hparticletool.cc:4472
 hparticletool.cc:4473
 hparticletool.cc:4474
 hparticletool.cc:4475
 hparticletool.cc:4476
 hparticletool.cc:4477
 hparticletool.cc:4478
 hparticletool.cc:4479
 hparticletool.cc:4480
 hparticletool.cc:4481
 hparticletool.cc:4482
 hparticletool.cc:4483
 hparticletool.cc:4484
 hparticletool.cc:4485
 hparticletool.cc:4486
 hparticletool.cc:4487
 hparticletool.cc:4488
 hparticletool.cc:4489
 hparticletool.cc:4490
 hparticletool.cc:4491
 hparticletool.cc:4492
 hparticletool.cc:4493
 hparticletool.cc:4494
 hparticletool.cc:4495
 hparticletool.cc:4496
 hparticletool.cc:4497
 hparticletool.cc:4498
 hparticletool.cc:4499
 hparticletool.cc:4500
 hparticletool.cc:4501
 hparticletool.cc:4502
 hparticletool.cc:4503
 hparticletool.cc:4504
 hparticletool.cc:4505
 hparticletool.cc:4506
 hparticletool.cc:4507
 hparticletool.cc:4508
 hparticletool.cc:4509
 hparticletool.cc:4510
 hparticletool.cc:4511
 hparticletool.cc:4512
 hparticletool.cc:4513
 hparticletool.cc:4514
 hparticletool.cc:4515
 hparticletool.cc:4516
 hparticletool.cc:4517
 hparticletool.cc:4518
 hparticletool.cc:4519
 hparticletool.cc:4520
 hparticletool.cc:4521
 hparticletool.cc:4522
 hparticletool.cc:4523
 hparticletool.cc:4524
 hparticletool.cc:4525
 hparticletool.cc:4526
 hparticletool.cc:4527
 hparticletool.cc:4528
 hparticletool.cc:4529
 hparticletool.cc:4530
 hparticletool.cc:4531
 hparticletool.cc:4532
 hparticletool.cc:4533
 hparticletool.cc:4534
 hparticletool.cc:4535
 hparticletool.cc:4536
 hparticletool.cc:4537
 hparticletool.cc:4538
 hparticletool.cc:4539
 hparticletool.cc:4540
 hparticletool.cc:4541
 hparticletool.cc:4542
 hparticletool.cc:4543
 hparticletool.cc:4544
 hparticletool.cc:4545
 hparticletool.cc:4546
 hparticletool.cc:4547
 hparticletool.cc:4548
 hparticletool.cc:4549
 hparticletool.cc:4550
 hparticletool.cc:4551
 hparticletool.cc:4552
 hparticletool.cc:4553
 hparticletool.cc:4554
 hparticletool.cc:4555
 hparticletool.cc:4556
 hparticletool.cc:4557
 hparticletool.cc:4558
 hparticletool.cc:4559
 hparticletool.cc:4560
 hparticletool.cc:4561
 hparticletool.cc:4562
 hparticletool.cc:4563
 hparticletool.cc:4564
 hparticletool.cc:4565
 hparticletool.cc:4566
 hparticletool.cc:4567
 hparticletool.cc:4568
 hparticletool.cc:4569
 hparticletool.cc:4570
 hparticletool.cc:4571
 hparticletool.cc:4572
 hparticletool.cc:4573
 hparticletool.cc:4574
 hparticletool.cc:4575
 hparticletool.cc:4576
 hparticletool.cc:4577
 hparticletool.cc:4578
 hparticletool.cc:4579
 hparticletool.cc:4580
 hparticletool.cc:4581
 hparticletool.cc:4582
 hparticletool.cc:4583
 hparticletool.cc:4584
 hparticletool.cc:4585
 hparticletool.cc:4586
 hparticletool.cc:4587
 hparticletool.cc:4588
 hparticletool.cc:4589
 hparticletool.cc:4590
 hparticletool.cc:4591
 hparticletool.cc:4592
 hparticletool.cc:4593
 hparticletool.cc:4594
 hparticletool.cc:4595
 hparticletool.cc:4596
 hparticletool.cc:4597
 hparticletool.cc:4598
 hparticletool.cc:4599
 hparticletool.cc:4600
 hparticletool.cc:4601
 hparticletool.cc:4602
 hparticletool.cc:4603
 hparticletool.cc:4604
 hparticletool.cc:4605
 hparticletool.cc:4606
 hparticletool.cc:4607
 hparticletool.cc:4608
 hparticletool.cc:4609
 hparticletool.cc:4610
 hparticletool.cc:4611
 hparticletool.cc:4612
 hparticletool.cc:4613
 hparticletool.cc:4614
 hparticletool.cc:4615
 hparticletool.cc:4616
 hparticletool.cc:4617
 hparticletool.cc:4618
 hparticletool.cc:4619
 hparticletool.cc:4620
 hparticletool.cc:4621
 hparticletool.cc:4622
 hparticletool.cc:4623
 hparticletool.cc:4624
 hparticletool.cc:4625
 hparticletool.cc:4626
 hparticletool.cc:4627
 hparticletool.cc:4628
 hparticletool.cc:4629
 hparticletool.cc:4630
 hparticletool.cc:4631
 hparticletool.cc:4632
 hparticletool.cc:4633
 hparticletool.cc:4634
 hparticletool.cc:4635
 hparticletool.cc:4636
 hparticletool.cc:4637
 hparticletool.cc:4638
 hparticletool.cc:4639
 hparticletool.cc:4640
 hparticletool.cc:4641
 hparticletool.cc:4642
 hparticletool.cc:4643
 hparticletool.cc:4644
 hparticletool.cc:4645
 hparticletool.cc:4646
 hparticletool.cc:4647
 hparticletool.cc:4648
 hparticletool.cc:4649
 hparticletool.cc:4650
 hparticletool.cc:4651
 hparticletool.cc:4652
 hparticletool.cc:4653
 hparticletool.cc:4654
 hparticletool.cc:4655
 hparticletool.cc:4656
 hparticletool.cc:4657
 hparticletool.cc:4658
 hparticletool.cc:4659
 hparticletool.cc:4660
 hparticletool.cc:4661
 hparticletool.cc:4662
 hparticletool.cc:4663
 hparticletool.cc:4664
 hparticletool.cc:4665
 hparticletool.cc:4666
 hparticletool.cc:4667
 hparticletool.cc:4668
 hparticletool.cc:4669
 hparticletool.cc:4670
 hparticletool.cc:4671
 hparticletool.cc:4672
 hparticletool.cc:4673
 hparticletool.cc:4674
 hparticletool.cc:4675
 hparticletool.cc:4676
 hparticletool.cc:4677
 hparticletool.cc:4678
 hparticletool.cc:4679
 hparticletool.cc:4680
 hparticletool.cc:4681
 hparticletool.cc:4682
 hparticletool.cc:4683
 hparticletool.cc:4684
 hparticletool.cc:4685
 hparticletool.cc:4686
 hparticletool.cc:4687
 hparticletool.cc:4688
 hparticletool.cc:4689
 hparticletool.cc:4690
 hparticletool.cc:4691
 hparticletool.cc:4692
 hparticletool.cc:4693
 hparticletool.cc:4694
 hparticletool.cc:4695
 hparticletool.cc:4696
 hparticletool.cc:4697
 hparticletool.cc:4698
 hparticletool.cc:4699
 hparticletool.cc:4700
 hparticletool.cc:4701
 hparticletool.cc:4702
 hparticletool.cc:4703
 hparticletool.cc:4704
 hparticletool.cc:4705
 hparticletool.cc:4706
 hparticletool.cc:4707
 hparticletool.cc:4708
 hparticletool.cc:4709
 hparticletool.cc:4710
 hparticletool.cc:4711
 hparticletool.cc:4712
 hparticletool.cc:4713
 hparticletool.cc:4714
 hparticletool.cc:4715
 hparticletool.cc:4716
 hparticletool.cc:4717
 hparticletool.cc:4718
 hparticletool.cc:4719
 hparticletool.cc:4720
 hparticletool.cc:4721
 hparticletool.cc:4722
 hparticletool.cc:4723
 hparticletool.cc:4724
 hparticletool.cc:4725
 hparticletool.cc:4726
 hparticletool.cc:4727
 hparticletool.cc:4728
 hparticletool.cc:4729
 hparticletool.cc:4730
 hparticletool.cc:4731
 hparticletool.cc:4732
 hparticletool.cc:4733
 hparticletool.cc:4734
 hparticletool.cc:4735
 hparticletool.cc:4736
 hparticletool.cc:4737
 hparticletool.cc:4738
 hparticletool.cc:4739
 hparticletool.cc:4740
 hparticletool.cc:4741
 hparticletool.cc:4742
 hparticletool.cc:4743
 hparticletool.cc:4744
 hparticletool.cc:4745
 hparticletool.cc:4746
 hparticletool.cc:4747
 hparticletool.cc:4748
 hparticletool.cc:4749
 hparticletool.cc:4750
 hparticletool.cc:4751
 hparticletool.cc:4752
 hparticletool.cc:4753
 hparticletool.cc:4754
 hparticletool.cc:4755
 hparticletool.cc:4756
 hparticletool.cc:4757
 hparticletool.cc:4758
 hparticletool.cc:4759
 hparticletool.cc:4760
 hparticletool.cc:4761
 hparticletool.cc:4762
 hparticletool.cc:4763
 hparticletool.cc:4764
 hparticletool.cc:4765
 hparticletool.cc:4766
 hparticletool.cc:4767
 hparticletool.cc:4768
 hparticletool.cc:4769
 hparticletool.cc:4770
 hparticletool.cc:4771
 hparticletool.cc:4772
 hparticletool.cc:4773
 hparticletool.cc:4774
 hparticletool.cc:4775
 hparticletool.cc:4776
 hparticletool.cc:4777
 hparticletool.cc:4778
 hparticletool.cc:4779
 hparticletool.cc:4780
 hparticletool.cc:4781
 hparticletool.cc:4782
 hparticletool.cc:4783
 hparticletool.cc:4784
 hparticletool.cc:4785
 hparticletool.cc:4786
 hparticletool.cc:4787
 hparticletool.cc:4788
 hparticletool.cc:4789
 hparticletool.cc:4790
 hparticletool.cc:4791
 hparticletool.cc:4792
 hparticletool.cc:4793
 hparticletool.cc:4794
 hparticletool.cc:4795
 hparticletool.cc:4796
 hparticletool.cc:4797
 hparticletool.cc:4798
 hparticletool.cc:4799
 hparticletool.cc:4800
 hparticletool.cc:4801
 hparticletool.cc:4802
 hparticletool.cc:4803
 hparticletool.cc:4804
 hparticletool.cc:4805
 hparticletool.cc:4806
 hparticletool.cc:4807
 hparticletool.cc:4808
 hparticletool.cc:4809
 hparticletool.cc:4810
 hparticletool.cc:4811
 hparticletool.cc:4812
 hparticletool.cc:4813
 hparticletool.cc:4814
 hparticletool.cc:4815
 hparticletool.cc:4816
 hparticletool.cc:4817
 hparticletool.cc:4818
 hparticletool.cc:4819
 hparticletool.cc:4820
 hparticletool.cc:4821
 hparticletool.cc:4822
 hparticletool.cc:4823
 hparticletool.cc:4824
 hparticletool.cc:4825
 hparticletool.cc:4826
 hparticletool.cc:4827
 hparticletool.cc:4828
 hparticletool.cc:4829
 hparticletool.cc:4830
 hparticletool.cc:4831
 hparticletool.cc:4832
 hparticletool.cc:4833
 hparticletool.cc:4834
 hparticletool.cc:4835
 hparticletool.cc:4836
 hparticletool.cc:4837
 hparticletool.cc:4838
 hparticletool.cc:4839
 hparticletool.cc:4840
 hparticletool.cc:4841
 hparticletool.cc:4842
 hparticletool.cc:4843
 hparticletool.cc:4844
 hparticletool.cc:4845
 hparticletool.cc:4846
 hparticletool.cc:4847
 hparticletool.cc:4848
 hparticletool.cc:4849
 hparticletool.cc:4850
 hparticletool.cc:4851
 hparticletool.cc:4852
 hparticletool.cc:4853
 hparticletool.cc:4854
 hparticletool.cc:4855
 hparticletool.cc:4856
 hparticletool.cc:4857
 hparticletool.cc:4858
 hparticletool.cc:4859
 hparticletool.cc:4860
 hparticletool.cc:4861
 hparticletool.cc:4862
 hparticletool.cc:4863
 hparticletool.cc:4864
 hparticletool.cc:4865
 hparticletool.cc:4866
 hparticletool.cc:4867
 hparticletool.cc:4868
 hparticletool.cc:4869
 hparticletool.cc:4870
 hparticletool.cc:4871
 hparticletool.cc:4872
 hparticletool.cc:4873
 hparticletool.cc:4874
 hparticletool.cc:4875
 hparticletool.cc:4876
 hparticletool.cc:4877
 hparticletool.cc:4878
 hparticletool.cc:4879
 hparticletool.cc:4880
 hparticletool.cc:4881
 hparticletool.cc:4882
 hparticletool.cc:4883
 hparticletool.cc:4884
 hparticletool.cc:4885
 hparticletool.cc:4886
 hparticletool.cc:4887
 hparticletool.cc:4888
 hparticletool.cc:4889
 hparticletool.cc:4890
 hparticletool.cc:4891
 hparticletool.cc:4892
 hparticletool.cc:4893
 hparticletool.cc:4894
 hparticletool.cc:4895
 hparticletool.cc:4896
 hparticletool.cc:4897
 hparticletool.cc:4898
 hparticletool.cc:4899
 hparticletool.cc:4900
 hparticletool.cc:4901
 hparticletool.cc:4902
 hparticletool.cc:4903
 hparticletool.cc:4904
 hparticletool.cc:4905
 hparticletool.cc:4906
 hparticletool.cc:4907
 hparticletool.cc:4908
 hparticletool.cc:4909
 hparticletool.cc:4910
 hparticletool.cc:4911
 hparticletool.cc:4912
 hparticletool.cc:4913
 hparticletool.cc:4914
 hparticletool.cc:4915
 hparticletool.cc:4916
 hparticletool.cc:4917
 hparticletool.cc:4918
 hparticletool.cc:4919
 hparticletool.cc:4920
 hparticletool.cc:4921
 hparticletool.cc:4922
 hparticletool.cc:4923
 hparticletool.cc:4924
 hparticletool.cc:4925
 hparticletool.cc:4926
 hparticletool.cc:4927
 hparticletool.cc:4928
 hparticletool.cc:4929
 hparticletool.cc:4930
 hparticletool.cc:4931
 hparticletool.cc:4932
 hparticletool.cc:4933
 hparticletool.cc:4934
 hparticletool.cc:4935
 hparticletool.cc:4936
 hparticletool.cc:4937
 hparticletool.cc:4938
 hparticletool.cc:4939
 hparticletool.cc:4940
 hparticletool.cc:4941
 hparticletool.cc:4942
 hparticletool.cc:4943
 hparticletool.cc:4944
 hparticletool.cc:4945
 hparticletool.cc:4946
 hparticletool.cc:4947
 hparticletool.cc:4948
 hparticletool.cc:4949
 hparticletool.cc:4950
 hparticletool.cc:4951
 hparticletool.cc:4952
 hparticletool.cc:4953
 hparticletool.cc:4954
 hparticletool.cc:4955
 hparticletool.cc:4956
 hparticletool.cc:4957
 hparticletool.cc:4958
 hparticletool.cc:4959
 hparticletool.cc:4960
 hparticletool.cc:4961
 hparticletool.cc:4962
 hparticletool.cc:4963
 hparticletool.cc:4964
 hparticletool.cc:4965
 hparticletool.cc:4966
 hparticletool.cc:4967
 hparticletool.cc:4968
 hparticletool.cc:4969
 hparticletool.cc:4970
 hparticletool.cc:4971
 hparticletool.cc:4972
 hparticletool.cc:4973
 hparticletool.cc:4974
 hparticletool.cc:4975
 hparticletool.cc:4976
 hparticletool.cc:4977
 hparticletool.cc:4978
 hparticletool.cc:4979
 hparticletool.cc:4980
 hparticletool.cc:4981
 hparticletool.cc:4982
 hparticletool.cc:4983
 hparticletool.cc:4984
 hparticletool.cc:4985
 hparticletool.cc:4986
 hparticletool.cc:4987
 hparticletool.cc:4988
 hparticletool.cc:4989
 hparticletool.cc:4990
 hparticletool.cc:4991
 hparticletool.cc:4992
 hparticletool.cc:4993
 hparticletool.cc:4994
 hparticletool.cc:4995
 hparticletool.cc:4996
 hparticletool.cc:4997
 hparticletool.cc:4998
 hparticletool.cc:4999
 hparticletool.cc:5000
 hparticletool.cc:5001
 hparticletool.cc:5002
 hparticletool.cc:5003
 hparticletool.cc:5004
 hparticletool.cc:5005
 hparticletool.cc:5006
 hparticletool.cc:5007
 hparticletool.cc:5008
 hparticletool.cc:5009
 hparticletool.cc:5010
 hparticletool.cc:5011
 hparticletool.cc:5012
 hparticletool.cc:5013
 hparticletool.cc:5014
 hparticletool.cc:5015
 hparticletool.cc:5016
 hparticletool.cc:5017
 hparticletool.cc:5018
 hparticletool.cc:5019
 hparticletool.cc:5020
 hparticletool.cc:5021
 hparticletool.cc:5022
 hparticletool.cc:5023
 hparticletool.cc:5024
 hparticletool.cc:5025
 hparticletool.cc:5026
 hparticletool.cc:5027
 hparticletool.cc:5028
 hparticletool.cc:5029
 hparticletool.cc:5030
 hparticletool.cc:5031
 hparticletool.cc:5032
 hparticletool.cc:5033
 hparticletool.cc:5034
 hparticletool.cc:5035
 hparticletool.cc:5036
 hparticletool.cc:5037
 hparticletool.cc:5038
 hparticletool.cc:5039
 hparticletool.cc:5040
 hparticletool.cc:5041
 hparticletool.cc:5042
 hparticletool.cc:5043
 hparticletool.cc:5044
 hparticletool.cc:5045
 hparticletool.cc:5046
 hparticletool.cc:5047
 hparticletool.cc:5048
 hparticletool.cc:5049
 hparticletool.cc:5050
 hparticletool.cc:5051
 hparticletool.cc:5052
 hparticletool.cc:5053
 hparticletool.cc:5054
 hparticletool.cc:5055
 hparticletool.cc:5056
 hparticletool.cc:5057
 hparticletool.cc:5058
 hparticletool.cc:5059
 hparticletool.cc:5060
 hparticletool.cc:5061
 hparticletool.cc:5062
 hparticletool.cc:5063
 hparticletool.cc:5064
 hparticletool.cc:5065
 hparticletool.cc:5066
 hparticletool.cc:5067
 hparticletool.cc:5068
 hparticletool.cc:5069
 hparticletool.cc:5070
 hparticletool.cc:5071
 hparticletool.cc:5072
 hparticletool.cc:5073
 hparticletool.cc:5074
 hparticletool.cc:5075
 hparticletool.cc:5076
 hparticletool.cc:5077
 hparticletool.cc:5078
 hparticletool.cc:5079
 hparticletool.cc:5080
 hparticletool.cc:5081
 hparticletool.cc:5082
 hparticletool.cc:5083
 hparticletool.cc:5084
 hparticletool.cc:5085
 hparticletool.cc:5086
 hparticletool.cc:5087
 hparticletool.cc:5088
 hparticletool.cc:5089
 hparticletool.cc:5090
 hparticletool.cc:5091
 hparticletool.cc:5092
 hparticletool.cc:5093
 hparticletool.cc:5094
 hparticletool.cc:5095
 hparticletool.cc:5096
 hparticletool.cc:5097
 hparticletool.cc:5098
 hparticletool.cc:5099
 hparticletool.cc:5100
 hparticletool.cc:5101
 hparticletool.cc:5102
 hparticletool.cc:5103
 hparticletool.cc:5104
 hparticletool.cc:5105
 hparticletool.cc:5106
 hparticletool.cc:5107
 hparticletool.cc:5108
 hparticletool.cc:5109
 hparticletool.cc:5110
 hparticletool.cc:5111
 hparticletool.cc:5112
 hparticletool.cc:5113
 hparticletool.cc:5114
 hparticletool.cc:5115
 hparticletool.cc:5116
 hparticletool.cc:5117
 hparticletool.cc:5118
 hparticletool.cc:5119
 hparticletool.cc:5120
 hparticletool.cc:5121
 hparticletool.cc:5122
 hparticletool.cc:5123
 hparticletool.cc:5124
 hparticletool.cc:5125
 hparticletool.cc:5126
 hparticletool.cc:5127
 hparticletool.cc:5128
 hparticletool.cc:5129
 hparticletool.cc:5130
 hparticletool.cc:5131
 hparticletool.cc:5132
 hparticletool.cc:5133
 hparticletool.cc:5134
 hparticletool.cc:5135
 hparticletool.cc:5136
 hparticletool.cc:5137
 hparticletool.cc:5138
 hparticletool.cc:5139
 hparticletool.cc:5140
 hparticletool.cc:5141
 hparticletool.cc:5142
 hparticletool.cc:5143
 hparticletool.cc:5144
 hparticletool.cc:5145
 hparticletool.cc:5146
 hparticletool.cc:5147
 hparticletool.cc:5148
 hparticletool.cc:5149
 hparticletool.cc:5150
 hparticletool.cc:5151
 hparticletool.cc:5152
 hparticletool.cc:5153
 hparticletool.cc:5154
 hparticletool.cc:5155
 hparticletool.cc:5156
 hparticletool.cc:5157
 hparticletool.cc:5158
 hparticletool.cc:5159
 hparticletool.cc:5160
 hparticletool.cc:5161
 hparticletool.cc:5162
 hparticletool.cc:5163
 hparticletool.cc:5164
 hparticletool.cc:5165
 hparticletool.cc:5166
 hparticletool.cc:5167
 hparticletool.cc:5168
 hparticletool.cc:5169
 hparticletool.cc:5170
 hparticletool.cc:5171
 hparticletool.cc:5172
 hparticletool.cc:5173
 hparticletool.cc:5174
 hparticletool.cc:5175
 hparticletool.cc:5176
 hparticletool.cc:5177
 hparticletool.cc:5178
 hparticletool.cc:5179
 hparticletool.cc:5180
 hparticletool.cc:5181
 hparticletool.cc:5182
 hparticletool.cc:5183
 hparticletool.cc:5184
 hparticletool.cc:5185
 hparticletool.cc:5186
 hparticletool.cc:5187
 hparticletool.cc:5188
 hparticletool.cc:5189
 hparticletool.cc:5190
 hparticletool.cc:5191
 hparticletool.cc:5192
 hparticletool.cc:5193
 hparticletool.cc:5194
 hparticletool.cc:5195
 hparticletool.cc:5196
 hparticletool.cc:5197
 hparticletool.cc:5198
 hparticletool.cc:5199
 hparticletool.cc:5200
 hparticletool.cc:5201
 hparticletool.cc:5202
 hparticletool.cc:5203
 hparticletool.cc:5204
 hparticletool.cc:5205
 hparticletool.cc:5206
 hparticletool.cc:5207
 hparticletool.cc:5208
 hparticletool.cc:5209
 hparticletool.cc:5210
 hparticletool.cc:5211
 hparticletool.cc:5212
 hparticletool.cc:5213
 hparticletool.cc:5214
 hparticletool.cc:5215
 hparticletool.cc:5216
 hparticletool.cc:5217
 hparticletool.cc:5218
 hparticletool.cc:5219
 hparticletool.cc:5220
 hparticletool.cc:5221
 hparticletool.cc:5222
 hparticletool.cc:5223
 hparticletool.cc:5224
 hparticletool.cc:5225
 hparticletool.cc:5226
 hparticletool.cc:5227
 hparticletool.cc:5228
 hparticletool.cc:5229
 hparticletool.cc:5230
 hparticletool.cc:5231
 hparticletool.cc:5232
 hparticletool.cc:5233
 hparticletool.cc:5234
 hparticletool.cc:5235
 hparticletool.cc:5236
 hparticletool.cc:5237
 hparticletool.cc:5238
 hparticletool.cc:5239
 hparticletool.cc:5240
 hparticletool.cc:5241
 hparticletool.cc:5242
 hparticletool.cc:5243
 hparticletool.cc:5244
 hparticletool.cc:5245
 hparticletool.cc:5246
 hparticletool.cc:5247
 hparticletool.cc:5248
 hparticletool.cc:5249
 hparticletool.cc:5250
 hparticletool.cc:5251
 hparticletool.cc:5252
 hparticletool.cc:5253
 hparticletool.cc:5254
 hparticletool.cc:5255
 hparticletool.cc:5256
 hparticletool.cc:5257
 hparticletool.cc:5258
 hparticletool.cc:5259
 hparticletool.cc:5260
 hparticletool.cc:5261
 hparticletool.cc:5262
 hparticletool.cc:5263
 hparticletool.cc:5264
 hparticletool.cc:5265
 hparticletool.cc:5266
 hparticletool.cc:5267
 hparticletool.cc:5268
 hparticletool.cc:5269
 hparticletool.cc:5270
 hparticletool.cc:5271
 hparticletool.cc:5272
 hparticletool.cc:5273
 hparticletool.cc:5274
 hparticletool.cc:5275
 hparticletool.cc:5276
 hparticletool.cc:5277
 hparticletool.cc:5278
 hparticletool.cc:5279
 hparticletool.cc:5280
 hparticletool.cc:5281
 hparticletool.cc:5282
 hparticletool.cc:5283
 hparticletool.cc:5284
 hparticletool.cc:5285
 hparticletool.cc:5286
 hparticletool.cc:5287
 hparticletool.cc:5288
 hparticletool.cc:5289
 hparticletool.cc:5290
 hparticletool.cc:5291
 hparticletool.cc:5292
 hparticletool.cc:5293
 hparticletool.cc:5294
 hparticletool.cc:5295
 hparticletool.cc:5296
 hparticletool.cc:5297
 hparticletool.cc:5298
 hparticletool.cc:5299
 hparticletool.cc:5300
 hparticletool.cc:5301
 hparticletool.cc:5302
 hparticletool.cc:5303
 hparticletool.cc:5304
 hparticletool.cc:5305
 hparticletool.cc:5306
 hparticletool.cc:5307
 hparticletool.cc:5308
 hparticletool.cc:5309
 hparticletool.cc:5310
 hparticletool.cc:5311
 hparticletool.cc:5312
 hparticletool.cc:5313
 hparticletool.cc:5314
 hparticletool.cc:5315
 hparticletool.cc:5316
 hparticletool.cc:5317
 hparticletool.cc:5318
 hparticletool.cc:5319
 hparticletool.cc:5320
 hparticletool.cc:5321
 hparticletool.cc:5322
 hparticletool.cc:5323
 hparticletool.cc:5324
 hparticletool.cc:5325
 hparticletool.cc:5326
 hparticletool.cc:5327
 hparticletool.cc:5328
 hparticletool.cc:5329
 hparticletool.cc:5330
 hparticletool.cc:5331
 hparticletool.cc:5332
 hparticletool.cc:5333
 hparticletool.cc:5334
 hparticletool.cc:5335
 hparticletool.cc:5336
 hparticletool.cc:5337
 hparticletool.cc:5338
 hparticletool.cc:5339
 hparticletool.cc:5340
 hparticletool.cc:5341
 hparticletool.cc:5342
 hparticletool.cc:5343
 hparticletool.cc:5344
 hparticletool.cc:5345
 hparticletool.cc:5346
 hparticletool.cc:5347
 hparticletool.cc:5348
 hparticletool.cc:5349
 hparticletool.cc:5350
 hparticletool.cc:5351
 hparticletool.cc:5352
 hparticletool.cc:5353
 hparticletool.cc:5354
 hparticletool.cc:5355
 hparticletool.cc:5356
 hparticletool.cc:5357
 hparticletool.cc:5358
 hparticletool.cc:5359
 hparticletool.cc:5360
 hparticletool.cc:5361
 hparticletool.cc:5362
 hparticletool.cc:5363
 hparticletool.cc:5364
 hparticletool.cc:5365
 hparticletool.cc:5366
 hparticletool.cc:5367
 hparticletool.cc:5368
 hparticletool.cc:5369
 hparticletool.cc:5370
 hparticletool.cc:5371
 hparticletool.cc:5372
 hparticletool.cc:5373
 hparticletool.cc:5374
 hparticletool.cc:5375
 hparticletool.cc:5376
 hparticletool.cc:5377
 hparticletool.cc:5378
 hparticletool.cc:5379
 hparticletool.cc:5380
 hparticletool.cc:5381
 hparticletool.cc:5382
 hparticletool.cc:5383
 hparticletool.cc:5384
 hparticletool.cc:5385
 hparticletool.cc:5386
 hparticletool.cc:5387
 hparticletool.cc:5388
 hparticletool.cc:5389
 hparticletool.cc:5390
 hparticletool.cc:5391
 hparticletool.cc:5392
 hparticletool.cc:5393
 hparticletool.cc:5394
 hparticletool.cc:5395
 hparticletool.cc:5396
 hparticletool.cc:5397
 hparticletool.cc:5398
 hparticletool.cc:5399
 hparticletool.cc:5400
 hparticletool.cc:5401
 hparticletool.cc:5402
 hparticletool.cc:5403
 hparticletool.cc:5404
 hparticletool.cc:5405
 hparticletool.cc:5406
 hparticletool.cc:5407
 hparticletool.cc:5408
 hparticletool.cc:5409
 hparticletool.cc:5410
 hparticletool.cc:5411
 hparticletool.cc:5412
 hparticletool.cc:5413
 hparticletool.cc:5414
 hparticletool.cc:5415
 hparticletool.cc:5416
 hparticletool.cc:5417
 hparticletool.cc:5418
 hparticletool.cc:5419
 hparticletool.cc:5420
 hparticletool.cc:5421
 hparticletool.cc:5422
 hparticletool.cc:5423
 hparticletool.cc:5424
 hparticletool.cc:5425
 hparticletool.cc:5426
 hparticletool.cc:5427
 hparticletool.cc:5428
 hparticletool.cc:5429
 hparticletool.cc:5430
 hparticletool.cc:5431
 hparticletool.cc:5432
 hparticletool.cc:5433
 hparticletool.cc:5434
 hparticletool.cc:5435
 hparticletool.cc:5436
 hparticletool.cc:5437
 hparticletool.cc:5438
 hparticletool.cc:5439
 hparticletool.cc:5440
 hparticletool.cc:5441
 hparticletool.cc:5442
 hparticletool.cc:5443
 hparticletool.cc:5444
 hparticletool.cc:5445
 hparticletool.cc:5446
 hparticletool.cc:5447
 hparticletool.cc:5448
 hparticletool.cc:5449
 hparticletool.cc:5450
 hparticletool.cc:5451
 hparticletool.cc:5452
 hparticletool.cc:5453
 hparticletool.cc:5454
 hparticletool.cc:5455
 hparticletool.cc:5456
 hparticletool.cc:5457
 hparticletool.cc:5458
 hparticletool.cc:5459
 hparticletool.cc:5460
 hparticletool.cc:5461
 hparticletool.cc:5462
 hparticletool.cc:5463
 hparticletool.cc:5464
 hparticletool.cc:5465
 hparticletool.cc:5466
 hparticletool.cc:5467
 hparticletool.cc:5468
 hparticletool.cc:5469
 hparticletool.cc:5470
 hparticletool.cc:5471
 hparticletool.cc:5472
 hparticletool.cc:5473
 hparticletool.cc:5474
 hparticletool.cc:5475
 hparticletool.cc:5476
 hparticletool.cc:5477
 hparticletool.cc:5478
 hparticletool.cc:5479
 hparticletool.cc:5480
 hparticletool.cc:5481
 hparticletool.cc:5482
 hparticletool.cc:5483
 hparticletool.cc:5484
 hparticletool.cc:5485
 hparticletool.cc:5486
 hparticletool.cc:5487
 hparticletool.cc:5488
 hparticletool.cc:5489
 hparticletool.cc:5490
 hparticletool.cc:5491
 hparticletool.cc:5492
 hparticletool.cc:5493
 hparticletool.cc:5494
 hparticletool.cc:5495
 hparticletool.cc:5496